Patch "riscv: kexec: Align the kexeced kernel entry" has been added to the 6.1-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    riscv: kexec: Align the kexeced kernel entry

to the 6.1-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     riscv-kexec-align-the-kexeced-kernel-entry.patch
and it can be found in the queue-6.1 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 740645dffb8d9d7ac85af7d011837b9d3cfb37a2
Author: Song Shuai <songshuaishuai@xxxxxxxxxxx>
Date:   Wed Sep 6 17:58:17 2023 +0800

    riscv: kexec: Align the kexeced kernel entry
    
    [ Upstream commit 1bfb2b618d52e59a4ef1896b46c4698ad2be66b7 ]
    
    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@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230906095817.364390-1-songshuaishuai@xxxxxxxxxxx
    Signed-off-by: Palmer Dabbelt <palmer@xxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/arch/riscv/kernel/elf_kexec.c b/arch/riscv/kernel/elf_kexec.c
index c08bb5c3b3857..b3b96ff46d193 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;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux