summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorfsmp <fsmp@FreeBSD.org>1997-08-20 05:22:33 +0000
committerfsmp <fsmp@FreeBSD.org>1997-08-20 05:22:33 +0000
commitea72b8e976791b005527662091bc146ad0bfd3b6 (patch)
tree7a5682434fc65c7ccab9c604fd2c3e70bf9fe0d1 /sys
parentd78ea4408baf27baff1145300626448f81e22e5d (diff)
downloadFreeBSD-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.h10
-rw-r--r--sys/i386/include/smp.h10
-rw-r--r--sys/i386/include/smptests.h30
-rw-r--r--sys/sys/smp.h10
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));
OpenPOWER on IntegriCloud