diff options
| -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); |
