|
@@ -1,106 +0,0 @@
|
|
-/*
|
|
|
|
- * Intel SMP support routines.
|
|
|
|
- *
|
|
|
|
- * (c) 1995 Alan Cox, Building #3 <alan@redhat.com>
|
|
|
|
- * (c) 1998-99, 2000 Ingo Molnar <mingo@redhat.com>
|
|
|
|
- *
|
|
|
|
- * This code is released under the GNU General Public License version 2 or
|
|
|
|
- * later.
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
-#include <linux/init.h>
|
|
|
|
-
|
|
|
|
-#include <linux/mm.h>
|
|
|
|
-#include <linux/delay.h>
|
|
|
|
-#include <linux/spinlock.h>
|
|
|
|
-#include <linux/kernel_stat.h>
|
|
|
|
-#include <linux/mc146818rtc.h>
|
|
|
|
-#include <linux/cache.h>
|
|
|
|
-#include <linux/interrupt.h>
|
|
|
|
-#include <linux/cpu.h>
|
|
|
|
-#include <linux/module.h>
|
|
|
|
-
|
|
|
|
-#include <asm/mtrr.h>
|
|
|
|
-#include <asm/tlbflush.h>
|
|
|
|
-#include <asm/mmu_context.h>
|
|
|
|
-#include <mach_apic.h>
|
|
|
|
-#include <asm/proto.h>
|
|
|
|
-
|
|
|
|
-/*
|
|
|
|
- * Some notes on x86 processor bugs affecting SMP operation:
|
|
|
|
- *
|
|
|
|
- * Pentium, Pentium Pro, II, III (and all CPUs) have bugs.
|
|
|
|
- * The Linux implications for SMP are handled as follows:
|
|
|
|
- *
|
|
|
|
- * Pentium III / [Xeon]
|
|
|
|
- * None of the E1AP-E3AP errata are visible to the user.
|
|
|
|
- *
|
|
|
|
- * E1AP. see PII A1AP
|
|
|
|
- * E2AP. see PII A2AP
|
|
|
|
- * E3AP. see PII A3AP
|
|
|
|
- *
|
|
|
|
- * Pentium II / [Xeon]
|
|
|
|
- * None of the A1AP-A3AP errata are visible to the user.
|
|
|
|
- *
|
|
|
|
- * A1AP. see PPro 1AP
|
|
|
|
- * A2AP. see PPro 2AP
|
|
|
|
- * A3AP. see PPro 7AP
|
|
|
|
- *
|
|
|
|
- * Pentium Pro
|
|
|
|
- * None of 1AP-9AP errata are visible to the normal user,
|
|
|
|
- * except occasional delivery of 'spurious interrupt' as trap #15.
|
|
|
|
- * This is very rare and a non-problem.
|
|
|
|
- *
|
|
|
|
- * 1AP. Linux maps APIC as non-cacheable
|
|
|
|
- * 2AP. worked around in hardware
|
|
|
|
- * 3AP. fixed in C0 and above steppings microcode update.
|
|
|
|
- * Linux does not use excessive STARTUP_IPIs.
|
|
|
|
- * 4AP. worked around in hardware
|
|
|
|
- * 5AP. symmetric IO mode (normal Linux operation) not affected.
|
|
|
|
- * 'noapic' mode has vector 0xf filled out properly.
|
|
|
|
- * 6AP. 'noapic' mode might be affected - fixed in later steppings
|
|
|
|
- * 7AP. We do not assume writes to the LVT deassering IRQs
|
|
|
|
- * 8AP. We do not enable low power mode (deep sleep) during MP bootup
|
|
|
|
- * 9AP. We do not use mixed mode
|
|
|
|
- *
|
|
|
|
- * Pentium
|
|
|
|
- * There is a marginal case where REP MOVS on 100MHz SMP
|
|
|
|
- * machines with B stepping processors can fail. XXX should provide
|
|
|
|
- * an L1cache=Writethrough or L1cache=off option.
|
|
|
|
- *
|
|
|
|
- * B stepping CPUs may hang. There are hardware work arounds
|
|
|
|
- * for this. We warn about it in case your board doesn't have the work
|
|
|
|
- * arounds. Basically that's so I can tell anyone with a B stepping
|
|
|
|
- * CPU and SMP problems "tough".
|
|
|
|
- *
|
|
|
|
- * Specific items [From Pentium Processor Specification Update]
|
|
|
|
- *
|
|
|
|
- * 1AP. Linux doesn't use remote read
|
|
|
|
- * 2AP. Linux doesn't trust APIC errors
|
|
|
|
- * 3AP. We work around this
|
|
|
|
- * 4AP. Linux never generated 3 interrupts of the same priority
|
|
|
|
- * to cause a lost local interrupt.
|
|
|
|
- * 5AP. Remote read is never used
|
|
|
|
- * 6AP. not affected - worked around in hardware
|
|
|
|
- * 7AP. not affected - worked around in hardware
|
|
|
|
- * 8AP. worked around in hardware - we get explicit CS errors if not
|
|
|
|
- * 9AP. only 'noapic' mode affected. Might generate spurious
|
|
|
|
- * interrupts, we log only the first one and count the
|
|
|
|
- * rest silently.
|
|
|
|
- * 10AP. not affected - worked around in hardware
|
|
|
|
- * 11AP. Linux reads the APIC between writes to avoid this, as per
|
|
|
|
- * the documentation. Make sure you preserve this as it affects
|
|
|
|
- * the C stepping chips too.
|
|
|
|
- * 12AP. not affected - worked around in hardware
|
|
|
|
- * 13AP. not affected - worked around in hardware
|
|
|
|
- * 14AP. we always deassert INIT during bootup
|
|
|
|
- * 15AP. not affected - worked around in hardware
|
|
|
|
- * 16AP. not affected - worked around in hardware
|
|
|
|
- * 17AP. not affected - worked around in hardware
|
|
|
|
- * 18AP. not affected - worked around in hardware
|
|
|
|
- * 19AP. not affected - worked around in BIOS
|
|
|
|
- *
|
|
|
|
- * If this sounds worrying believe me these bugs are either ___RARE___,
|
|
|
|
- * or are signal timing bugs worked around in hardware and there's
|
|
|
|
- * about nothing of note with C stepping upwards.
|
|
|
|
- */
|
|
|