diff options
author | John Baldwin <jhb@FreeBSD.org> | 2014-02-05 20:47:49 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2014-02-05 20:47:49 +0000 |
commit | b986a7ec1812cb59eca23733e0f4cecd6df1695a (patch) | |
tree | f9786c62c3bb814708dd125a7b884fb9b8c0dfef /sys/dev/pci | |
parent | a4993b252e8afa453509501b74a517d48edf1a3a (diff) | |
download | src-b986a7ec1812cb59eca23733e0f4cecd6df1695a.tar.gz src-b986a7ec1812cb59eca23733e0f4cecd6df1695a.zip |
Simplify pci_reserve_map() by calling resource_list_reserve() to allocate
the resource after creating a resource list entry rather than reimplementing
it by hand.
MFC after: 1 week
Notes
Notes:
svn path=/head/; revision=261526
Diffstat (limited to 'sys/dev/pci')
-rw-r--r-- | sys/dev/pci/pci.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index ed55ffb14a9f..3dcd74541675 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -4177,7 +4177,6 @@ pci_reserve_map(device_t dev, device_t child, int type, int *rid, { struct pci_devinfo *dinfo = device_get_ivars(child); struct resource_list *rl = &dinfo->resources; - struct resource_list_entry *rle; struct resource *res; struct pci_map *pm; pci_addr_t map, testval; @@ -4250,23 +4249,16 @@ pci_reserve_map(device_t dev, device_t child, int type, int *rid, * Allocate enough resource, and then write back the * appropriate BAR for that resource. */ - res = BUS_ALLOC_RESOURCE(device_get_parent(dev), child, type, rid, - start, end, count, flags & ~RF_ACTIVE); + resource_list_add(rl, type, *rid, start, end, count); + res = resource_list_reserve(rl, dev, child, type, rid, start, end, + count, flags & ~RF_ACTIVE); if (res == NULL) { + resource_list_delete(rl, type, *rid); device_printf(child, "%#lx bytes of rid %#x res %d failed (%#lx, %#lx).\n", count, *rid, type, start, end); goto out; } - resource_list_add(rl, type, *rid, start, end, count); - rle = resource_list_find(rl, type, *rid); - if (rle == NULL) - panic("pci_reserve_map: unexpectedly can't find resource."); - rle->res = res; - rle->start = rman_get_start(res); - rle->end = rman_get_end(res); - rle->count = count; - rle->flags = RLE_RESERVED; if (bootverbose) device_printf(child, "Lazy allocation of %#lx bytes rid %#x type %d at %#lx\n", |