diff options
author | Furquan Shaikh <furquan@google.com> | 2020-05-18 16:00:53 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2020-05-26 15:15:05 +0000 |
commit | afaae8aa00d59a1a74e7f7891d8def8cc21d9eb2 (patch) | |
tree | fa4cc04c19d7eed82e43f7509060ac94f0bbf046 /src/device/device_util.c | |
parent | f531244d20998091bd8c311a4183de0bcc9f6ff2 (diff) |
device_util,agesa/family14: Do not consider unassigned resources in find_pci_tolm()
This change updates find_pci_tolm() to not consider any unassigned
resources. This is achieved by adding the following checks:
1. Call search_bus_resources() with mask set to IORESOURCE_MEM |
IORESOURCE_ASSIGNED.
2. In the callback tolm_test, check that the new resource selected has
a non-zero size.
This change is being made so that the resource allocator does not have
to set the IORESOURCE_ASSIGNED flag for marking a resource as
invalid.
Change-Id: I796784dd93aa165e20a672c985b4875991901c87
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41524
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'src/device/device_util.c')
-rw-r--r-- | src/device/device_util.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/device/device_util.c b/src/device/device_util.c index 88608597f2..22c3db1c44 100644 --- a/src/device/device_util.c +++ b/src/device/device_util.c @@ -883,6 +883,13 @@ void tolm_test(void *gp, struct device *dev, struct resource *new) best = *best_p; + /* + * If resource is not allocated any space i.e. size is zero, + * then do not consider this resource in tolm calculations. + */ + if (new->size == 0) + return; + if (!best || (best->base > new->base)) best = new; @@ -893,9 +900,9 @@ u32 find_pci_tolm(struct bus *bus) { struct resource *min = NULL; u32 tolm; + unsigned long mask_match = IORESOURCE_MEM | IORESOURCE_ASSIGNED; - search_bus_resources(bus, IORESOURCE_MEM, IORESOURCE_MEM, - tolm_test, &min); + search_bus_resources(bus, mask_match, mask_match, tolm_test, &min); tolm = 0xffffffffUL; |