Re: [PATCH] of: Fix reserved-memory overlap detection

From: Vincent Whitchurch
Date: Wed Oct 21 2020 - 05:58:25 EST


On Tue, Oct 20, 2020 at 04:17:27PM +0200, Rob Herring wrote:
> On Tue, Oct 20, 2020 at 8:46 AM Vincent Whitchurch
> <vincent.whitchurch@xxxxxxxx> wrote:
> > On Tue, Oct 20, 2020 at 03:00:14PM +0200, Rob Herring wrote:
> > > On Tue, Oct 20, 2020 at 2:36 AM Vincent Whitchurch
> > > <vincent.whitchurch@xxxxxxxx> wrote:
> > > >
> > > > The reserved-memory overlap detection code fails to detect overlaps if
> > > > either of the regions starts at address 0x0. For some reason the code
> > > > explicitly checks for and ignores such regions, but this check looks
> > > > invalid. Remove the check and fix this detection.
> > >
> > > Wouldn't 'base' be 0 for nodes that have a 'size' and no address? The
> > > base in those cases isn't set until later when
> > > __reserved_mem_alloc_size() is called.
> >
> > Ah, yes, I guess that's why the check was there. I see that those
> > entries have both a zero address and a zero size, so this seems to work:
>
> Yes, I think it should work.

Thanks, I've tested it a bit more and sent it out as a v2 now.

> > diff --git a/arch/arm/boot/dts/vexpress-v2p-ca9.dts b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
> > index 623246f37448..6627e71c7283 100644
> > --- a/arch/arm/boot/dts/vexpress-v2p-ca9.dts
> > +++ b/arch/arm/boot/dts/vexpress-v2p-ca9.dts
> > @@ -81,6 +81,18 @@ vram: vram@4c000000 {
> > reg = <0x4c000000 0x00800000>;
> > no-map;
> > };
> > +
> > + foo@0 {
> > + reg = <0x0 0x2000>;
> > + };
> > +
> > + bar@1000 {
> > + reg = <0x0 0x1000>;
>
> 0x1000 base?

I've corrected this in the example in the commit message for v2.