]> err.no Git - linux-2.6/blobdiff - drivers/pci/setup-bus.c
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6] / drivers / pci / setup-bus.c
index 47c1071ad84ea06b057faac42e6ea60aeb87c5fe..8f7bcf56f1498d17064916d9986433e4e557631b 100644 (file)
@@ -57,10 +57,17 @@ pbus_assign_resources_sorted(struct pci_bus *bus)
 
                /* Don't touch classless devices or host bridges or ioapics.  */
                if (class == PCI_CLASS_NOT_DEFINED ||
-                   class == PCI_CLASS_BRIDGE_HOST ||
-                   class == PCI_CLASS_SYSTEM_PIC)
+                   class == PCI_CLASS_BRIDGE_HOST)
                        continue;
 
+               /* Don't touch ioapic devices already enabled by firmware */
+               if (class == PCI_CLASS_SYSTEM_PIC) {
+                       u16 command;
+                       pci_read_config_word(dev, PCI_COMMAND, &command);
+                       if (command & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY))
+                               continue;
+               }
+
                pdev_sort_resources(dev, &head);
        }