On Wed, 21 Oct 2020 11:53:59 +0200, Vincent Whitchurch wrote: > The reserved-memory overlap detection code fails to detect overlaps if > either of the regions starts at address 0x0. The code explicitly checks > for and ignores such regions, apparently in order to ignore dynamically > allocated regions which have an address of 0x0 at this point. These > dynamically allocated regions also have a size of 0x0 at this point, so > fix this by removing the check and sorting the dynamically allocated > regions ahead of any static regions at address 0x0. > > For example, there are two overlaps in this case but they are not > currently reported: > > foo@0 { > reg = <0x0 0x2000>; > }; > > bar@0 { > reg = <0x0 0x1000>; > }; > > baz@1000 { > reg = <0x1000 0x1000>; > }; > > quux { > size = <0x1000>; > }; > > but they are after this patch: > > OF: reserved mem: OVERLAP DETECTED! > bar@0 (0x00000000--0x00001000) overlaps with foo@0 (0x00000000--0x00002000) > OF: reserved mem: OVERLAP DETECTED! > foo@0 (0x00000000--0x00002000) overlaps with baz@1000 (0x00001000--0x00002000) > > Signed-off-by: Vincent Whitchurch <vincent.whitchurch@xxxxxxxx> > --- > v2: Fix handling of dynamically allocated regions. > > drivers/of/of_reserved_mem.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) > Applied, thanks!