[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20201203123649.44046-1-alexander.sverdlin@nokia.com>
Date: Thu, 3 Dec 2020 13:36:48 +0100
From: Alexander A Sverdlin <alexander.sverdlin@...ia.com>
To: linux-mips@...r.kernel.org
Cc: Alexander Sverdlin <alexander.sverdlin@...ia.com>,
Thomas Bogendoerfer <tsbogend@...ha.franken.de>,
Paul Burton <paulburton@...nel.org>,
Leonid Rosenboim <lrosenboim@...iumnetworks.com>,
Corey Minyard <cminyard@...sta.com>,
linux-kernel@...r.kernel.org,
Serge Semin <fancer.lancer@...il.com>,
"Maciej W . Rozycki" <macro@...ux-mips.org>,
Jinyang He <hejinyang@...ngson.cn>,
Jiaxun Yang <jiaxun.yang@...goat.com>
Subject: [PATCH 1/2] MIPS: Don't round up kernel sections size for memblock_add()
From: Alexander Sverdlin <alexander.sverdlin@...ia.com>
Linux doesn't own the memory immediately after the kernel image. On Octeon
bootloader places a shared structure right close after the kernel _end,
refer to "struct cvmx_bootinfo *octeon_bootinfo" in cavium-octeon/setup.c.
If check_kernel_sections_mem() rounds the PFNs up, first memblock_alloc()
inside early_init_dt_alloc_memory_arch() <= device_tree_init() returns
memory block overlapping with the above octeon_bootinfo structure, which
is being overwritten afterwards.
Fixes: a94e4f24ec83 ("MIPS: init: Drop boot_mem_map")
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@...ia.com>
---
arch/mips/kernel/setup.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
index ca579de..9d11f68 100644
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -498,8 +498,8 @@ static void __init request_crashkernel(struct resource *res)
static void __init check_kernel_sections_mem(void)
{
- phys_addr_t start = PFN_PHYS(PFN_DOWN(__pa_symbol(&_text)));
- phys_addr_t size = PFN_PHYS(PFN_UP(__pa_symbol(&_end))) - start;
+ phys_addr_t start = __pa_symbol(&_text);
+ phys_addr_t size = __pa_symbol(&_end) - start;
if (!memblock_is_region_memory(start, size)) {
pr_info("Kernel sections are not in the memory maps\n");
--
2.10.2
Powered by blists - more mailing lists