In commit
f8924e770e04 ("x86: unify mp_bus_info"), the 32-bit and 64-bit
versions of MP_bus_info were rearranged to match each other better.
Unfortunately it introduced a regression: prior to that change we used to
always set the mp_bus_not_pci bit, then clear it if we found a PCI bus.
After it, we set mp_bus_not_pci for ISA buses, clear it for PCI buses, and
leave it alone otherwise.
In the cases of ISA and PCI, there's not much difference. But ISA is not
the only non-PCI bus, so it's better to always set mp_bus_not_pci and
clear it only for PCI.
Without this change, Dan's Dell PowerEdge 4200 panics on boot with a log
indicating interrupt routing trouble unless the "noapic" option is
supplied. With this change, the machine boots reliably without "noapic".
Fixes http://bugs.debian.org/586494
[jrnieder@gmail.com: clarified commit message]
Reported-bisected-and-tested-by: Dan McGrath <troubledaemon@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: <stable@vger.kernel.org> # 2.6.26+
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
}
#endif
+ set_bit(m->busid, mp_bus_not_pci);
if (strncmp(str, BUSTYPE_ISA, sizeof(BUSTYPE_ISA) - 1) == 0) {
- set_bit(m->busid, mp_bus_not_pci);
#if defined(CONFIG_EISA) || defined(CONFIG_MCA)
mp_bus_id_to_type[m->busid] = MP_BUS_ISA;
#endif