diff options
author | fsmp <fsmp@FreeBSD.org> | 1997-08-21 05:08:25 +0000 |
---|---|---|
committer | fsmp <fsmp@FreeBSD.org> | 1997-08-21 05:08:25 +0000 |
commit | 50236db5333cdc58157e0ad9c48b24efe702d9d3 (patch) | |
tree | c85a743ad15448292b7f250fbc5f3e4352835dd7 /sys/i386/include/smptests.h | |
parent | 5d3c68aeda6b25c847b3ad8a14bb11a9d77328aa (diff) | |
download | FreeBSD-src-50236db5333cdc58157e0ad9c48b24efe702d9d3.zip FreeBSD-src-50236db5333cdc58157e0ad9c48b24efe702d9d3.tar.gz |
Made PEND_INTS default.
Made NEW_STRATEGY default.
Removed misc. old cruft.
Centralized simple locks into mp_machdep.c
Centralized simple lock macros into param.h
More cleanup in the direction of making splxx()/cpl MP-safe.
Diffstat (limited to 'sys/i386/include/smptests.h')
-rw-r--r-- | sys/i386/include/smptests.h | 71 |
1 files changed, 31 insertions, 40 deletions
diff --git a/sys/i386/include/smptests.h b/sys/i386/include/smptests.h index 9a99169..e3f7e90 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.19 1997/08/04 17:31:28 fsmp Exp $ + * $Id: smptests.h,v 1.22 1997/08/21 04:48:45 smp Exp smp $ */ #ifndef _MACHINE_SMPTESTS_H_ @@ -36,55 +36,48 @@ /* * Ignore the ipending bits when exiting FAST_INTR() routines. + * + *** + * according to Bruce: + * + * setsoft*() may set ipending. setsofttty() is actually used in the + * FAST_INTR handler in some serial drivers. This is necessary to get + * output completions and other urgent events handled as soon as possible. + * The flag(s) could be set in a variable other than ipending, but they + * needs to be checked against cpl to decide whether the software interrupt + * handler can/should run. + * + * (FAST_INTR used to just return + * in all cases until rev.1.7 of vector.s. This worked OK provided there + * were no user-mode CPU hogs. CPU hogs caused an average latency of 1/2 + * clock tick for output completions...) + *** + * + * So I need to restore cpl handling someday, but AFTER + * I finish making spl/cpl MP-safe. */ #define FAST_WITHOUTCPL /* * Use a simplelock to serialize FAST_INTR()s. + * sio.c, and probably other FAST_INTR() drivers, never expected several CPUs + * to be inside them at once. Things such as global vars prevent more + * than 1 thread of execution from existing at once, so we serialize + * the access of FAST_INTR()s via a simple lock. + * One optimization on this would be a simple lock per DRIVER, but I'm + * not sure how to organize that yet... */ #define FAST_SIMPLELOCK /* - * Use the new INT passoff algorithm: - * - * int_is_already_active = iactive & (1 << INT_NUMBER); - * iactive |= (1 << INT_NUMBER); - * if ( int_is_already_active || (try_mplock() == FAIL ) { - * mask_apic_int( INT_NUMBER ); - * ipending |= (1 << INT_NUMBER); - * do_eoi(); - * cleanup_and_iret(); - * } - */ -#define PEND_INTS - - -/* * Portions of the old TEST_LOPRIO code, back from the grave! */ #define GRAB_LOPRIO /* - * 1st attempt to use the 'ExtInt' connected 8259 to attach 8254 timer. - * failing that, attempt to attach 8254 timer via direct APIC pin. - * failing that, panic! - * - */ -#define NEW_STRATEGY - - -/* - * For emergency fallback, define ONLY if 'NEW_STRATEGY' fails to work. - * Formerly needed by Tyan Tomcat II and SuperMicro P6DNxxx motherboards. - * -#define SMP_TIMER_NC - */ - - -/* * Send CPUSTOP IPI for stop/restart of other CPUs on DDB break. * */ @@ -101,22 +94,20 @@ /* - * deal with broken smp_idleloop() + * Deal with broken smp_idleloop(). */ #define IGNORE_IDLEPROCS /* - * misc. counters + * Misc. counters. * #define COUNT_XINVLTLB_HITS -#define COUNT_SPURIOUS_INTS -#define COUNT_CSHITS */ /** - * hack to "fake-out" kernel into thinking it is running on a 'default config' + * Hack to "fake-out" kernel into thinking it is running on a 'default config'. * * value == default type #define TEST_DEFAULT_CONFIG 6 @@ -124,7 +115,7 @@ /* - * simple test code for IPI interaction, save for future... + * Simple test code for IPI interaction, save for future... * #define TEST_TEST1 #define IPI_TARGET_TEST1 1 @@ -194,7 +185,7 @@ /* - * these are all temps for debugging... + * These are all temps for debugging... * #define GUARD_INTS */ |