Re: PCI: remove bogus resource collision error

From: Greg KH
Date: Wed Nov 16 2005 - 20:20:39 EST


On Wed, Nov 16, 2005 at 05:06:22PM -0800, Rajesh Shah wrote:
> 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. Please consider applying.
>
> Signed-off-by: Rajesh Shah <rajesh.shah@xxxxxxxxx>
>
> arch/i386/pci/i386.c | 8 ++++++--
> 1 files changed, 6 insertions(+), 2 deletions(-)
>
> Index: linux-2.6.15-rc1/arch/i386/pci/i386.c
> ===================================================================
> --- linux-2.6.15-rc1.orig/arch/i386/pci/i386.c
> +++ linux-2.6.15-rc1/arch/i386/pci/i386.c
> @@ -212,6 +212,7 @@ int pcibios_enable_resources(struct pci_
> u16 cmd, old_cmd;
> int idx;
> struct resource *r;
> + unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM;
>
> pci_read_config_word(dev, PCI_COMMAND, &cmd);
> old_cmd = cmd;
> @@ -221,6 +222,11 @@ int pcibios_enable_resources(struct pci_
> continue;
>
> r = &dev->resource[idx];
> + if (!(r->flags & type_mask))
> + continue;

Is the type_mask variable really needed here? Can't we just test:
if (!(r->flags & (IORESOURCE_IO | IORESOURCE_MEM)))
instead?

Other than that, looks good, thanks.

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/