mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
[PATCH] PCI: remove bogus resource collision error
When attempting to hotadd a PCI card with a bridge on it, I saw the kernel reporting resource collision errors even when there were really no collisions. The problem is that the code doesn't skip over "invalid" resources with their resource type flag not set. Others have reported similar problems at boot time and for non-bridge PCI card hotplug too, where the code flags a resource collision for disabled ROMs. This patch fixes both problems. Signed-off-by: Rajesh Shah <rajesh.shah@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
5a49f2036a
commit
ed6d14f976
1 changed files with 5 additions and 2 deletions
|
@ -221,6 +221,11 @@ int pcibios_enable_resources(struct pci_dev *dev, int mask)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
r = &dev->resource[idx];
|
r = &dev->resource[idx];
|
||||||
|
if (!(r->flags & (IORESOURCE_IO | IORESOURCE_MEM)))
|
||||||
|
continue;
|
||||||
|
if ((idx == PCI_ROM_RESOURCE) &&
|
||||||
|
(!(r->flags & IORESOURCE_ROM_ENABLE)))
|
||||||
|
continue;
|
||||||
if (!r->start && r->end) {
|
if (!r->start && r->end) {
|
||||||
printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev));
|
printk(KERN_ERR "PCI: Device %s not available because of resource collisions\n", pci_name(dev));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -230,8 +235,6 @@ int pcibios_enable_resources(struct pci_dev *dev, int mask)
|
||||||
if (r->flags & IORESOURCE_MEM)
|
if (r->flags & IORESOURCE_MEM)
|
||||||
cmd |= PCI_COMMAND_MEMORY;
|
cmd |= PCI_COMMAND_MEMORY;
|
||||||
}
|
}
|
||||||
if (dev->resource[PCI_ROM_RESOURCE].start)
|
|
||||||
cmd |= PCI_COMMAND_MEMORY;
|
|
||||||
if (cmd != old_cmd) {
|
if (cmd != old_cmd) {
|
||||||
printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd);
|
printk("PCI: Enabling device %s (%04x -> %04x)\n", pci_name(dev), old_cmd, cmd);
|
||||||
pci_write_config_word(dev, PCI_COMMAND, cmd);
|
pci_write_config_word(dev, PCI_COMMAND, cmd);
|
||||||
|
|
Loading…
Reference in a new issue