diff options
Diffstat (limited to 'drivers/pci/setup-bus.c')
-rw-r--r-- | drivers/pci/setup-bus.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 1ba84be0b4c0..9fe48f712be9 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c | |||
@@ -72,7 +72,11 @@ pbus_assign_resources_sorted(struct pci_bus *bus) | |||
72 | for (list = head.next; list;) { | 72 | for (list = head.next; list;) { |
73 | res = list->res; | 73 | res = list->res; |
74 | idx = res - &list->dev->resource[0]; | 74 | idx = res - &list->dev->resource[0]; |
75 | pci_assign_resource(list->dev, idx); | 75 | if (pci_assign_resource(list->dev, idx)) { |
76 | res->start = 0; | ||
77 | res->end = 0; | ||
78 | res->flags = 0; | ||
79 | } | ||
76 | tmp = list; | 80 | tmp = list; |
77 | list = list->next; | 81 | list = list->next; |
78 | kfree(tmp); | 82 | kfree(tmp); |
@@ -270,6 +274,8 @@ find_free_bus_resource(struct pci_bus *bus, unsigned long type) | |||
270 | 274 | ||
271 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { | 275 | for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) { |
272 | r = bus->resource[i]; | 276 | r = bus->resource[i]; |
277 | if (r == &ioport_resource || r == &iomem_resource) | ||
278 | continue; | ||
273 | if (r && (r->flags & type_mask) == type && !r->parent) | 279 | if (r && (r->flags & type_mask) == type && !r->parent) |
274 | return r; | 280 | return r; |
275 | } | 281 | } |