[issue352] SMP weirdness in 1.6.2-RELEASE

Matthew Dillon dillon at apollo.backplane.com
Mon Oct 23 11:19:10 PDT 2006


:Mike Jakubik <mikej at xxxxxxxxxx> added the comment:
:
:Disabling APIC_IO seems to make the system sane. Are there any negative effects
:from disabling it?
:
:P.S. Although this is an old beast, I do not think this is a hardware problem,
:as it works just fine with Windows 2003 and FreeBSD 6 (with APIC).

    Mostly things that go unnoticed.  The PIC has fewer IRQs then the APICs,
    so more devices will wind up sharing an IRQ, and all PIC interrupts
    are routed to cpu #0 (but at the moment we do that anyway even for
    APIC_IO so no loss there).  Some PC hardware routes a catch-all IRQ
    to the PIC as well, usually to IRQ 7 or IRQ 15, and on such hardware
    you pretty much have to disable the PIC entirely to get rid of the
    spurious interrupts.  Eventually PC hardware will stop supporting the
    old PIC entirely.  Some already don't.

    For DragonFly this means we will have to play catch-up with FreeBSD
    with regards to moving away from using the 8254 timer (using the LAPIC
    timer instead), which allows us to disable the PIC entirely, and then
    use APIC_IO.  Eventually.

    At the moment there are many, MANY BIOSes whos MP tables are totally
    broken when it comes to IO APIC pin assignments.  Yours is one of
    those BIOSes.  Such systems often have a working PIC, though, so
    commenting out APIC_IO usually does the trick.  ACPI is supposed to
    replace the MP table but ACPI has its own problems.  There are *FOUR*
    BIOS interrupt routing interfaces and all of them are broken to some
    degree or other.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>





More information about the Bugs mailing list