Preperation for moving cpl into critical region access.
Several new fine-grained locks. Control of new FAST_INTR() methods.
This commit is contained in:
parent
77625cfe0b
commit
5996461961
@ -6,7 +6,7 @@
|
||||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* $Id: smp.h,v 1.25 1997/08/15 02:34:32 fsmp Exp $
|
||||
* $Id: smp.h,v 1.26 1997/08/18 03:35:59 fsmp Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -59,6 +59,7 @@ void bootMP __P((void));
|
||||
|
||||
/* global data in mplock.s */
|
||||
extern u_int mp_lock;
|
||||
extern u_int isr_lock;
|
||||
|
||||
/* functions in mplock.s */
|
||||
void get_mplock __P((void));
|
||||
@ -74,7 +75,10 @@ extern volatile u_int started_cpus;
|
||||
extern u_int vec[];
|
||||
extern u_int Xintr8254;
|
||||
extern u_int mask8254;
|
||||
extern volatile struct simplelock imen_lock;
|
||||
extern struct simplelock imen_lock;
|
||||
extern struct simplelock cpl_lock;
|
||||
extern struct simplelock fast_intr_lock;
|
||||
extern struct simplelock intr_lock;
|
||||
|
||||
/* functions in apic_ipl.s */
|
||||
void vec8254 __P((void));
|
||||
@ -109,6 +113,8 @@ extern u_int all_cpus;
|
||||
extern u_int SMP_prvpt[];
|
||||
extern u_char SMP_ioapic[];
|
||||
|
||||
extern struct simplelock com_lock;
|
||||
|
||||
/* functions in mp_machdep.c */
|
||||
u_int mp_bootaddress __P((u_int));
|
||||
int mp_probe __P((void));
|
||||
|
@ -6,7 +6,7 @@
|
||||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* $Id: smp.h,v 1.25 1997/08/15 02:34:32 fsmp Exp $
|
||||
* $Id: smp.h,v 1.26 1997/08/18 03:35:59 fsmp Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -59,6 +59,7 @@ void bootMP __P((void));
|
||||
|
||||
/* global data in mplock.s */
|
||||
extern u_int mp_lock;
|
||||
extern u_int isr_lock;
|
||||
|
||||
/* functions in mplock.s */
|
||||
void get_mplock __P((void));
|
||||
@ -74,7 +75,10 @@ extern volatile u_int started_cpus;
|
||||
extern u_int vec[];
|
||||
extern u_int Xintr8254;
|
||||
extern u_int mask8254;
|
||||
extern volatile struct simplelock imen_lock;
|
||||
extern struct simplelock imen_lock;
|
||||
extern struct simplelock cpl_lock;
|
||||
extern struct simplelock fast_intr_lock;
|
||||
extern struct simplelock intr_lock;
|
||||
|
||||
/* functions in apic_ipl.s */
|
||||
void vec8254 __P((void));
|
||||
@ -109,6 +113,8 @@ extern u_int all_cpus;
|
||||
extern u_int SMP_prvpt[];
|
||||
extern u_char SMP_ioapic[];
|
||||
|
||||
extern struct simplelock com_lock;
|
||||
|
||||
/* functions in mp_machdep.c */
|
||||
u_int mp_bootaddress __P((u_int));
|
||||
int mp_probe __P((void));
|
||||
|
@ -22,7 +22,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: smptests.h,v 1.20 1997/08/04 17:20:39 smp Exp smp $
|
||||
* $Id: smptests.h,v 1.19 1997/08/04 17:31:28 fsmp Exp $
|
||||
*/
|
||||
|
||||
#ifndef _MACHINE_SMPTESTS_H_
|
||||
@ -34,6 +34,18 @@
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Ignore the ipending bits when exiting FAST_INTR() routines.
|
||||
*/
|
||||
#define FAST_WITHOUTCPL
|
||||
|
||||
|
||||
/*
|
||||
* Use a simplelock to serialize FAST_INTR()s.
|
||||
*/
|
||||
#define FAST_SIMPLELOCK
|
||||
|
||||
|
||||
/*
|
||||
* Use the new INT passoff algorithm:
|
||||
*
|
||||
@ -45,22 +57,6 @@
|
||||
* do_eoi();
|
||||
* cleanup_and_iret();
|
||||
* }
|
||||
*
|
||||
* This algorithm seems to speed up kernel compiles a little,
|
||||
* my previous times were about 100s - 101s.
|
||||
* Also of note is the "point of diminishing returns" for the '-j'
|
||||
* arg to make seems to have increased from 8 to 12, AND the numbers
|
||||
* don't fall off as rapidly as before.
|
||||
*
|
||||
* 98.17s real 129.24s user 50.82s system # time make -j8
|
||||
* 98.67s real 128.44s user 52.55s system # time make -j10
|
||||
* 97.70s real 128.54s user 51.86s system # time make -j12
|
||||
* 98.57s real 130.14s user 50.46s system # time make -j14
|
||||
* 99.12s real 130.04s user 51.82s system # time make -j16
|
||||
* 97.75s real 129.91s user 51.62s system # time make -j18
|
||||
* 100.51s real 132.67s user 50.91s system # time make -j20
|
||||
*
|
||||
* Note: currently broken for INTerrupting ISA cards, including onboard IDE.
|
||||
*/
|
||||
#define PEND_INTS
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||||
* ----------------------------------------------------------------------------
|
||||
*
|
||||
* $Id: smp.h,v 1.25 1997/08/15 02:34:32 fsmp Exp $
|
||||
* $Id: smp.h,v 1.26 1997/08/18 03:35:59 fsmp Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
@ -59,6 +59,7 @@ void bootMP __P((void));
|
||||
|
||||
/* global data in mplock.s */
|
||||
extern u_int mp_lock;
|
||||
extern u_int isr_lock;
|
||||
|
||||
/* functions in mplock.s */
|
||||
void get_mplock __P((void));
|
||||
@ -74,7 +75,10 @@ extern volatile u_int started_cpus;
|
||||
extern u_int vec[];
|
||||
extern u_int Xintr8254;
|
||||
extern u_int mask8254;
|
||||
extern volatile struct simplelock imen_lock;
|
||||
extern struct simplelock imen_lock;
|
||||
extern struct simplelock cpl_lock;
|
||||
extern struct simplelock fast_intr_lock;
|
||||
extern struct simplelock intr_lock;
|
||||
|
||||
/* functions in apic_ipl.s */
|
||||
void vec8254 __P((void));
|
||||
@ -109,6 +113,8 @@ extern u_int all_cpus;
|
||||
extern u_int SMP_prvpt[];
|
||||
extern u_char SMP_ioapic[];
|
||||
|
||||
extern struct simplelock com_lock;
|
||||
|
||||
/* functions in mp_machdep.c */
|
||||
u_int mp_bootaddress __P((u_int));
|
||||
int mp_probe __P((void));
|
||||
|
Loading…
x
Reference in New Issue
Block a user