aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/setup-bus.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 54404917be9a..8f7bcf56f149 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -55,16 +55,16 @@ pbus_assign_resources_sorted(struct pci_bus *bus)
55 list_for_each_entry(dev, &bus->devices, bus_list) { 55 list_for_each_entry(dev, &bus->devices, bus_list) {
56 u16 class = dev->class >> 8; 56 u16 class = dev->class >> 8;
57 57
58 /* Don't touch classless devices or host bridges. */ 58 /* Don't touch classless devices or host bridges or ioapics. */
59 if (class == PCI_CLASS_NOT_DEFINED || 59 if (class == PCI_CLASS_NOT_DEFINED ||
60 class == PCI_CLASS_BRIDGE_HOST) 60 class == PCI_CLASS_BRIDGE_HOST)
61 continue; 61 continue;
62 62
63 /* Don't touch ioapics if it has the assigned resources. */ 63 /* Don't touch ioapic devices already enabled by firmware */
64 if (class == PCI_CLASS_SYSTEM_PIC) { 64 if (class == PCI_CLASS_SYSTEM_PIC) {
65 res = &dev->resource[0]; 65 u16 command;
66 if (res[0].start || res[1].start || res[2].start || 66 pci_read_config_word(dev, PCI_COMMAND, &command);
67 res[3].start || res[4].start || res[5].start) 67 if (command & (PCI_COMMAND_IO | PCI_COMMAND_MEMORY))
68 continue; 68 continue;
69 } 69 }
70 70