[git Patch 1/1] 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.

--------------- SNIP ---------------------
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 28ce3a7..35086e8 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -55,9 +55,10 @@ pbus_assign_resources_sorted(struct pci_
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);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • kernel:<3>Bug: soft lockup - CPU#3 stuck for 10s! [bond1:]
    ... 00:00.0 Host bridge: Intel Corporation 5000X Chipset Memory Controller Hub ... 00:02.0 PCI bridge: Intel Corporation 5000 Series Chipset PCI Express ... batch 1 used:0 ...
    (Linux-Kernel)
  • [PATCH] kernel-doc: PCI fixes
    ... PCI: add descriptions for missing function parameters. ... pci_cfg_space_size - get the configuration space size of the PCI device. ... @dev: pointer to the pci_dev data structure of MSI-X device function ... * @driver: target device driver ...
    (Linux-Kernel)
  • [PATCH 14/22] ppc64: RPA PHP to EEH code movement
    ... This patch moves some pci device add & remove code from the PCI ... recovery code (living in the arch/ppc64/kernel directory). ... +static void ...
    (Linux-Kernel)
  • [PATCH 23/42]: ppc64: migrate common PCI hotplug code
    ... This patch moves some pci device add & remove code from the PCI ... recovery code (living in the arch/ppc64/kernel directory). ... +static void ...
    (Linux-Kernel)
  • [RFC] PCI: clean up the dynamic pci id logic
    ... I started to look into how to move some of this to the driver core, ... -static int ... * pci_match_device - Tell if a PCI device structure has a matching ...
    (Linux-Kernel)