aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorIvan Kokshaysky <ink@jurassic.park.msu.ru>2005-06-15 10:59:27 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2005-07-01 16:35:50 -0400
commit299de0343c7d18448a69c635378342e9214b14af (patch)
tree0a456358b5f919328e234868139c983813f4cb80 /drivers/pci
parent90b54929b626c80056262d9d99b3f48522e404d0 (diff)
[PATCH] PCI: pci_assign_unassigned_resources() on x86
- Add sanity check for io[port,mem]_resource in setup-bus.c. These resources look like "free" as they have no parents, but obviously we must not touch them. - In i386.c:pci_allocate_bus_resources(), if a bridge resource cannot be allocated for some reason, then clear its flags. This prevents any child allocations in this range, so the setup-bus code will work with a clean resource sub-tree. - i386.c:pcibios_enable_resources() doesn't enable bridges, as it checks only resources 0-5, which looks like a clear bug to me. I suspect it might break hotplug as well in some cases. From: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/setup-bus.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 6b628de948af..c1bdfb424658 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -273,6 +273,8 @@ find_free_bus_resource(struct pci_bus *bus, unsigned long type)
273 273
274 for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { 274 for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) {
275 r = bus->resource[i]; 275 r = bus->resource[i];
276 if (r == &ioport_resource || r == &iomem_resource)
277 continue;
276 if (r && (r->flags & type_mask) == type && !r->parent) 278 if (r && (r->flags & type_mask) == type && !r->parent)
277 return r; 279 return r;
278 } 280 }