[PATCH 3/3] lmb: Treat a region which is a subset as equal
Tom Rini
trini at konsulko.com
Wed Feb 8 15:55:16 CET 2023
On Wed, Feb 08, 2023 at 08:37:15AM +0100, Sjoerd Simons wrote:
> On Mon, 2023-02-06 at 13:04 -0500, Tom Rini wrote:
> > 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.
>
> Oh sorry for missing that; I'll get those fixed. Does the direction at
> least seem sensible to you ?
I think so, yes.
--
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/20230208/f01af6be/attachment.sig>
More information about the U-Boot
mailing list