From 3ba6a18ccb346edb42952fe3c5fc795aa2aec066 Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Sun, 13 Sep 2009 15:57:10 -0700 Subject: [PATCH] --- yaml --- r: 167385 b: refs/heads/master c: 308cf8e13f42f476dfd6552aeff58fdc0788e566 h: refs/heads/master i: 167383: d4fc864a4797cb65e02641de93ac38de6e89ed2b v: v3 --- [refs] | 2 +- trunk/drivers/pci/setup-bus.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9258f0ed8c79..0354153a8752 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 19eea630f7c56038dd80fe2f6910c78655bf29c8 +refs/heads/master: 308cf8e13f42f476dfd6552aeff58fdc0788e566 diff --git a/trunk/drivers/pci/setup-bus.c b/trunk/drivers/pci/setup-bus.c index cb1a027eb552..0959430534b2 100644 --- a/trunk/drivers/pci/setup-bus.c +++ b/trunk/drivers/pci/setup-bus.c @@ -299,8 +299,17 @@ static struct resource *find_free_bus_resource(struct pci_bus *bus, unsigned lon r = bus->resource[i]; if (r == &ioport_resource || r == &iomem_resource) continue; - if (r && (r->flags & type_mask) == type && !r->parent) - return r; + if (r && (r->flags & type_mask) == type) { + if (!r->parent) + return r; + /* + * if there is no child under that, we should release + * and use it. don't need to reset it, pbus_size_* will + * set it again + */ + if (!r->child && !release_resource(r)) + return r; + } } return NULL; }