summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKimball Murray <kimball.murray@gmail.com>2006-05-31 14:20:04 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-06-21 12:00:00 -0700
commitc0da3ba0a29d70c95ed39366a1c9b849f3439fbe (patch)
treee8d31f5137a8f5bc5337e139c0778f8ba6b4b4f4
parentb209a6ee49099b7500abf024f7b6b9648b5a3eac (diff)
downloadlinux-c0da3ba0a29d70c95ed39366a1c9b849f3439fbe.tar.gz
linux-c0da3ba0a29d70c95ed39366a1c9b849f3439fbe.tar.bz2
linux-c0da3ba0a29d70c95ed39366a1c9b849f3439fbe.zip
[PATCH] PCI: don't move ioapics below PCI bridge
A recent Stratus x86_64 platform uses a system ioapic that is a PCI device located below a PCI bridge. Other platforms like this may exist. This patch fixes a problem wherein the kernel's PCI setup code moves the ioapic to an address other than that assigned by the BIOS. It simply adds another exclusion (which already includes classless devices and host bridges) to the function pbus_assign_resources_sorted so that it will not move the ioapic. If the ioapic is moved, the fixmap mapping to it is broken, so the OS should leave it alone. From: Kimball Murray <kimball.murray@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/pci/setup-bus.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 28ce3a7ee434..35086e80faa9 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -55,9 +55,10 @@ pbus_assign_resources_sorted(struct pci_bus *bus)
list_for_each_entry(dev, &bus->devices, bus_list) {
u16 class = dev->class >> 8;
- /* Don't touch classless devices and host bridges. */
+ /* Don't touch classless devices or host bridges or ioapics. */
if (class == PCI_CLASS_NOT_DEFINED ||
- class == PCI_CLASS_BRIDGE_HOST)
+ class == PCI_CLASS_BRIDGE_HOST ||
+ class == PCI_CLASS_SYSTEM_PIC)
continue;
pdev_sort_resources(dev, &head);