From 8b698c4c58f28c9fe1d5e80c969cad96a28e8ee4 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Thu, 27 Nov 2014 10:15:57 +0000 Subject: [PATCH] [device-tree] Reserve memreserve regions whcih overlap with existing reservations. Fixes boot on Midway. svn path=/dists/sid/linux/; revision=22087 --- debian/changelog | 2 + ...reserve-memreserve-regions-in-the-ca.patch | 53 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 56 insertions(+) create mode 100644 debian/patches/bugfix/all/of-fdt-memblock_reserve-memreserve-regions-in-the-ca.patch diff --git a/debian/changelog b/debian/changelog index 58127c569..b44bbc02b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -18,6 +18,8 @@ linux (3.16.7-3) UNRELEASED; urgency=medium * Honour stdout-path from Device Tree. (Closes: #770212) * [armhf] Add udeb modules to support video and keyboard for imx6. Patch from Vagrant Cascadian (Closes: #770635) + * [device-tree] Reserve memreserve regions even if they partially overlap + with an existing reservation. Fixes boot on Midway. -- Ben Hutchings Sun, 09 Nov 2014 10:13:09 +0000 diff --git a/debian/patches/bugfix/all/of-fdt-memblock_reserve-memreserve-regions-in-the-ca.patch b/debian/patches/bugfix/all/of-fdt-memblock_reserve-memreserve-regions-in-the-ca.patch new file mode 100644 index 000000000..067ab855f --- /dev/null +++ b/debian/patches/bugfix/all/of-fdt-memblock_reserve-memreserve-regions-in-the-ca.patch @@ -0,0 +1,53 @@ +From a636289fb6037392c3551aeed1033576c3aef426 Mon Sep 17 00:00:00 2001 +From: Ian Campbell +Date: Tue, 25 Nov 2014 15:05:13 +0000 +Subject: [PATCH] of/fdt: memblock_reserve /memreserve/ regions in the case of + partial overlap +Origin: https://git.kernel.org/cgit/linux/kernel/git/glikely/linux.git/commit/?h=devicetree/merge&id=094cb98179f19b75acf9ff471daabf3948ce98e6 + +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 +Signed-off-by: Grant Likely +Cc: Rob Herring +Cc: stable@vger.kernel.org # v3.16+ +--- + drivers/of/fdt.c | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c +index 379ad4f..94a8511 100644 +--- a/drivers/of/fdt.c ++++ b/drivers/of/fdt.c +@@ -960,8 +960,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); +-- +2.1.3 + diff --git a/debian/patches/series b/debian/patches/series index 5979011df..6f8f3ad8d 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -173,6 +173,7 @@ bugfix/all/xen-netback-move-netif_napi_add-before-binding-inter.patch bugfix/all/xen-netback-make-feature-rx-notify-mandatory.patch bugfix/all/xen-netback-fix-unlimited-guest-Rx-internal-queue-an.patch bugfix/all/xen-netback-reintroduce-guest-Rx-stall-detection.patch +bugfix/all/of-fdt-memblock_reserve-memreserve-regions-in-the-ca.patch # memfd_create() & kdbus backport features/all/kdbus/mm-allow-drivers-to-prevent-new-writable-mappings.patch