Re: Broken MP table detected ...

From: Wilkinson, Alex <alex.wilkinson_at_dsto.defence.gov.au>
Date: Wed, 5 Oct 2005 12:52:12 +0930
    0n Mon, Sep 26, 2005 at 04:11:35PM -0400, John Baldwin wrote: 

    >On Thursday 22 September 2005 10:46 pm, Wilkinson, Alex wrote:
    >>     0n Wed, Sep 21, 2005 at 04:40:36PM -0400, John Baldwin wrote:
    >>     >On Monday 19 September 2005 08:55 pm, Scott Long wrote:
    >>     >> Wilkinson, Alex wrote:
    >>     >> > Can anyone tell me what the following means, and how to fix it:
    >>     >> >
    >>     >> >     APIC_IO: Testing 8254 interrupt delivery
    >>     >> >     APIC_IO: Broken MP table detected: 8254 is not connected to
    >>     >> > IOAPIC #0 intpin 2 APIC_IO: routing 8254 via 8259 and IOAPIC #0
    >>     >> > intpin 0
    >>     >> >
    >>     >> >  - aW
    >>     >>
    >>     >> It means that you need to use 6.0 instead of 5.x =-)  It represents
    >>     >> the old way that we connected the timecounters, which apparently
    >>     >> isn't well supported with newer amd64 boards.  6.0 solves this
    >>     >> problem by using a better supported mechanism.
    >>     >
    >>     >Actually, this is a 4.x method and it basically means that it has
    >>     > fallen back to mixed mode for IRQ0.  6.0 certainly does this better. 
    >>     > 5.x just uses mixed mode by default.
    >>
    >> John, what is mixed mode ?
    >
    >Normally when you use the APICs, you don't use the older 8259A AT-PICs at all.  
    >However, the 8259A's are hooked up to pin 0 on the first I/O APIC, so if you 
    >enable pin 0 and enable interruput pins on the 8259As, then if they get an 
    >interrupt, they will forward it to the first I/O APIC which will then forward 
    >it to the CPUs as directed.  Using both the old PICs and the APICs at the 
    >same time using pin 0 in the first I/O APIC is known as mixed mode.  The 
    >reason FreeBSD uses it is that some motherboard manufacturers chose to not 
    >connect an IRQ0 input from the ISA timer to pin 2 on the first I/O APIC, even 
    >though the MP Table said that they did.  The reason they could get away with 
    >that is that Windows didn't use IRQ0 when it used the APICs, so the 
    >motherboards still passed WHQL certification ok (or so I've been told).  
    >Linux also doesn't use IRQ0, but uses the built-in countdown periodic timer 
    >that each CPU has in its local APIC.  In 4.x, the kernel would try to get 
    >IRQ0 interrupts via pin 2 on the first I/O APIC and if it didn't work, it 
    >printed out the message you saw and enabled mixed mode and enabled IRQ0 in 
    >the 8259A AT-PIC.  In 5.x, we just always use mixed mode without the runtime 
    >test and have a hint for forcing it to not use mixed mode.  In 6.x we use the 
    >countdown timer in the local APIC like Linux and Windows when using the APICs 
    >and don't use IRQ0 at all.

As usual an awesome explanation. Thanks for taking the time to explain this to me !

 - aW
Received on Wed Oct 05 2005 - 01:27:43 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:44 UTC