[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230906095817.364390-1-songshuaishuai@tinylab.org>
Date: Wed, 6 Sep 2023 17:58:17 +0800
From: Song Shuai <songshuaishuai@...ylab.org>
To: paul.walmsley@...ive.com, palmer@...belt.com,
aou@...s.berkeley.edu, lihuafei1@...wei.com,
conor.dooley@...rochip.com, liaochang1@...wei.com,
songshuaishuai@...ylab.org, lizhengyu3@...wei.com
Cc: linux-riscv@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: [PATCH -fixes] riscv: kexec: Align the kexeced kernel entry
The current riscv boot protocol requires 2MB alignment for RV64
and 4MB alignment for RV32.
In KEXEC_FILE path, the elf_find_pbase() function should align
the kexeced kernel entry according to the requirement, otherwise
the kexeced kernel would silently BUG at the setup_vm().
Fixes: 8acea455fafa ("RISC-V: Support for kexec_file on panic")
Signed-off-by: Song Shuai <songshuaishuai@...ylab.org>
---
You can use my kexec-tools[1] to test the kexec-file-syscall and this patch.
[1]: https://github.com/sugarfillet/kexec-tools/tree/fix-riscv
---
arch/riscv/kernel/elf_kexec.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/arch/riscv/kernel/elf_kexec.c b/arch/riscv/kernel/elf_kexec.c
index 5372b708fae2..9a81d6926ac6 100644
--- a/arch/riscv/kernel/elf_kexec.c
+++ b/arch/riscv/kernel/elf_kexec.c
@@ -98,7 +98,13 @@ static int elf_find_pbase(struct kimage *image, unsigned long kernel_len,
kbuf.image = image;
kbuf.buf_min = lowest_paddr;
kbuf.buf_max = ULONG_MAX;
- kbuf.buf_align = PAGE_SIZE;
+
+ /*
+ * Current riscv boot protocol requires 2MB alignment for
+ * RV64 and 4MB alignment for RV32
+ *
+ */
+ kbuf.buf_align = PMD_SIZE;
kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
kbuf.memsz = ALIGN(kernel_len, PAGE_SIZE);
kbuf.top_down = false;
--
2.20.1
Powered by blists - more mailing lists