On Tue, 25 Nov 2014 15:05:13 +0000 , Ian Campbell <ian.campbell@xxxxxxxxxx> wrote: > memblock_is_region_reserved() returns true in the case of a partial > overlap, meaning that the current code fails to reserve the > non-overlapping portion. > > This call was introduced as part of d1552ce449eb "of/fdt: move > memreserve and dtb memory reservations into core" which went into > v3.16. > > I observed this causing a Midway system with a buggy fdt (the header > declares itself to be larger than it really is) failing to boot > because the over-inflated size of the fdt was causing it to seem to > run into the swapper_pg_dir region, meaning the DT wasn't reserved. > The symptoms were failing to find an disks or network and failing to > boot. > > However given the ambiguity of whether things like the initrd are > covered by /memreserve/ and similar I think it is best to also > register the region rather than just ignoring it. > > Since memblock_reserve() handles overlaps just fine lets just warn and > carry on. > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > Cc: Grant Likely <grant.likely@xxxxxxxxxx> > Cc: Rob Herring <robh+dt@xxxxxxxxxx> > Cc: devicetree@xxxxxxxxxxxxxxx > Cc: stable@xxxxxxxxxxxxxxx # v3.16+ Applied, thanks. g. > --- > v2: Tag for stable v3.16+ > Just drop the test, no need to log. > --- > drivers/of/fdt.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c > index 30e97bc..d134710 100644 > --- a/drivers/of/fdt.c > +++ b/drivers/of/fdt.c > @@ -964,8 +964,6 @@ void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size) > int __init __weak early_init_dt_reserve_memory_arch(phys_addr_t base, > phys_addr_t size, bool nomap) > { > - if (memblock_is_region_reserved(base, size)) > - return -EBUSY; > if (nomap) > return memblock_remove(base, size); > return memblock_reserve(base, size); > -- > 1.7.10.4 > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html