[PATCH 3/3] lmb: Treat a region which is a subset as equal

Tom Rini trini at konsulko.com
Mon Feb 6 19:04:39 CET 2023


On Thu, Jan 19, 2023 at 09:38:19AM +0100, Sjoerd Simons wrote:

> 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;

This breaks lib_test_lmb_simple, lib_test_lmb_simple_x2 and
lib_test_lmb_alloc_addr.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20230206/349671fe/attachment.sig>


More information about the U-Boot mailing list