[PATCH 3/3] lmb: Treat a region which is a subset as equal
Sjoerd Simons
sjoerd at collabora.com
Thu Jan 19 09:38:19 CET 2023
In various cases logical memory blocks are coalesced; As a result doing
a strict check whether memory blocks are the same doesn't necessarily
work as a previous addition of a given block might have been merged into
a bigger block.
Fix this by considering a block is already registered if it's a pure
subset of one of the existing blocks.
Signed-off-by: Sjoerd Simons <sjoerd at collabora.com>
---
lib/lmb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/lmb.c b/lib/lmb.c
index f447c639a60..b09a043f4c2 100644
--- a/lib/lmb.c
+++ b/lib/lmb.c
@@ -248,7 +248,7 @@ static long lmb_add_region_flags(struct lmb_region *rgn, phys_addr_t base,
phys_size_t rgnsize = rgn->region[i].size;
phys_size_t rgnflags = rgn->region[i].flags;
- if (rgnbase == base && rgnsize == size) {
+ if (rgnbase <= base && rgnbase + rgnsize >= base + size) {
if (flags == rgnflags)
/* Already have this region, so we're done */
return 0;
--
2.39.0
More information about the U-Boot
mailing list