• Randy Dunlap's avatar
    [PATCH] unexpected IO-APIC update · 344fd4e1
    Randy Dunlap authored
    Recently there has been a rash of Unexpected IO APIC reports on the
    linux-smp mailing list.  Most of the most recent ones are due to some
    newer Intel chipsets (865, 875).
    
    The IO APIC Version register doesn't indicate the differences in these
    IO APICs.
    
    I have an patch that addresses these chipsets.  It has been tested by a
    few people with good results and has been blessed by Maciej Rozycki.
    
    Other than conditionally decoding IO APIC registers 2 and 3, we could
    alternately ignore them since Linux doesn't use the values for anything
    other than printing them.
    
    This patch ignores IO APIC register 2 if it's the same value as IO APIC
    register 1.  It also reads IO APIC register 3 if the IO APIC version is
    >= 0x20, but some chipsets don't support this register, so it is also
    ignored if its value if the same as IO APIC register 1 or 2.
    
    Another possible(?) alternative is to read the PID/VID of the device to
    determine which registers it supports.  However, PCI devices have not
    been scanned at this point in init, so it would require scanning PCI
    config space directly and I don't yet see the point of doing that.
    
    Oh, and the UNEXPECTED_IO_APIC() function doesn't print anything in
    2.5.current and I didn't change that.
    344fd4e1
io_apic.c 60.1 KB