diff options
author | fsmp <fsmp@FreeBSD.org> | 1997-08-20 05:22:33 +0000 |
---|---|---|
committer | fsmp <fsmp@FreeBSD.org> | 1997-08-20 05:22:33 +0000 |
commit | ea72b8e976791b005527662091bc146ad0bfd3b6 (patch) | |
tree | 7a5682434fc65c7ccab9c604fd2c3e70bf9fe0d1 /sys | |
parent | d78ea4408baf27baff1145300626448f81e22e5d (diff) | |
download | FreeBSD-src-ea72b8e976791b005527662091bc146ad0bfd3b6.zip FreeBSD-src-ea72b8e976791b005527662091bc146ad0bfd3b6.tar.gz |
Preperation for moving cpl into critical region access.
Several new fine-grained locks.
Control of new FAST_INTR() methods.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/amd64/include/smp.h | 10 | ||||
-rw-r--r-- | sys/i386/include/smp.h | 10 | ||||
-rw-r--r-- | sys/i386/include/smptests.h | 30 | ||||
-rw-r--r-- | sys/sys/smp.h | 10 |
4 files changed, 37 insertions, 23 deletions
diff --git a/sys/amd64/include/smp.h b/sys/amd64/include/smp.h index fc55218..e80d91a 100644 --- a/sys/amd64/include/smp.h +++ b/sys/amd64/include/smp.h @@ -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)); diff --git a/sys/i386/include/smp.h b/sys/i386/include/smp.h index fc55218..e80d91a 100644 --- a/sys/i386/include/smp.h +++ b/sys/i386/include/smp.h @@ -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)); diff --git a/sys/i386/include/smptests.h b/sys/i386/include/smptests.h index 09607e2..9a99169 100644 --- a/sys/i386/include/smptests.h +++ b/sys/i386/include/smptests.h @@ -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_ @@ -35,6 +35,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: * * int_is_already_active = iactive & (1 << INT_NUMBER); @@ -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 diff --git a/sys/sys/smp.h b/sys/sys/smp.h index fc55218..e80d91a 100644 --- a/sys/sys/smp.h +++ b/sys/sys/smp.h @@ -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)); |