mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
lmb: Treat a region which is a subset as equal
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@collabora.com>
This commit is contained in:
parent
78d1c3949a
commit
0d91c88230
1 changed files with 3 additions and 1 deletions
|
@ -247,8 +247,10 @@ static long lmb_add_region_flags(struct lmb_region *rgn, phys_addr_t base,
|
|||
phys_addr_t rgnbase = rgn->region[i].base;
|
||||
phys_size_t rgnsize = rgn->region[i].size;
|
||||
phys_size_t rgnflags = rgn->region[i].flags;
|
||||
phys_addr_t end = base + size - 1;
|
||||
phys_addr_t rgnend = rgnbase + rgnsize - 1;
|
||||
|
||||
if (rgnbase == base && rgnsize == size) {
|
||||
if (rgnbase <= base && end <= rgnend) {
|
||||
if (flags == rgnflags)
|
||||
/* Already have this region, so we're done */
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue