diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/pci/i386.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/i386/pci/i386.c b/arch/i386/pci/i386.c index 6d6338500c3c..ed2c8c899bd3 100644 --- a/arch/i386/pci/i386.c +++ b/arch/i386/pci/i386.c | |||
@@ -221,6 +221,11 @@ int pcibios_enable_resources(struct pci_dev *dev, int mask) | |||
221 | continue; | 221 | continue; |
222 | 222 | ||
223 | r = &dev->resource[idx]; | 223 | r = &dev->resource[idx]; |
224 | if (!(r->flags & (IORESOURCE_IO | IORESOURCE_MEM))) | ||
225 | continue; | ||
226 | if ((idx == PCI_ROM_RESOURCE) && | ||
227 | (!(r->flags & IORESOURCE_ROM_ENABLE))) | ||
228 | continue; | ||
224 | if (!r->start && r->end) { | 229 | if (!r->start && r->end) { |
225 | printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev)); | 230 | printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev)); |
226 | return -EINVAL; | 231 | return -EINVAL; |
@@ -230,8 +235,6 @@ int pcibios_enable_resources(struct pci_dev *dev, int mask) | |||
230 | if (r->flags & IORESOURCE_MEM) | 235 | if (r->flags & IORESOURCE_MEM) |
231 | cmd |= PCI_COMMAND_MEMORY; | 236 | cmd |= PCI_COMMAND_MEMORY; |
232 | } | 237 | } |
233 | if (dev->resource[PCI_ROM_RESOURCE].start) | ||
234 | cmd |= PCI_COMMAND_MEMORY; | ||
235 | if (cmd != old_cmd) { | 238 | if (cmd != old_cmd) { |
236 | printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd); | 239 | printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd); |
237 | pci_write_config_word(dev, PCI_COMMAND, cmd); | 240 | pci_write_config_word(dev, PCI_COMMAND, cmd); |