[PATCH -next] riscv: kdump: fix crashkernel reserving problem on RISC-V
Baoquan He
bhe at redhat.com
Fri Sep 22 00:16:56 PDT 2023
Hi Jiahao,
On 09/22/23 at 11:07am, Chen Jiahao wrote:
> When testing on risc-v QEMU environment with "crashkernel="
> parameter enabled, a problem occurred with the following
> message:
>
> [ 0.000000] crashkernel low memory reserved: 0xf8000000 - 0x100000000 (128 MB)
> [ 0.000000] crashkernel reserved: 0x0000000177e00000 - 0x0000000277e00000 (4096 MB)
> [ 0.000000] ------------[ cut here ]------------
> [ 0.000000] WARNING: CPU: 0 PID: 0 at kernel/resource.c:779 __insert_resource+0x8e/0xd0
> [ 0.000000] Modules linked in:
> [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 6.6.0-rc2-next-20230920 #1
> [ 0.000000] Hardware name: riscv-virtio,qemu (DT)
> [ 0.000000] epc : __insert_resource+0x8e/0xd0
> [ 0.000000] ra : insert_resource+0x28/0x4e
> [ 0.000000] epc : ffffffff80017344 ra : ffffffff8001742e sp : ffffffff81203db0
> [ 0.000000] gp : ffffffff812ece98 tp : ffffffff8120dac0 t0 : ff600001f7ff2b00
> [ 0.000000] t1 : 0000000000000000 t2 : 3428203030303030 s0 : ffffffff81203dc0
> [ 0.000000] s1 : ffffffff81211e18 a0 : ffffffff81211e18 a1 : ffffffff81289380
> [ 0.000000] a2 : 0000000277dfffff a3 : 0000000177e00000 a4 : 0000000177e00000
> [ 0.000000] a5 : ffffffff81289380 a6 : 0000000277dfffff a7 : 0000000000000078
> [ 0.000000] s2 : ffffffff81289380 s3 : ffffffff80a0bac8 s4 : ff600001f7ff2880
> [ 0.000000] s5 : 0000000000000280 s6 : 8000000a00006800 s7 : 000000000000007f
> [ 0.000000] s8 : 0000000080017038 s9 : 0000000080038ea0 s10: 0000000000000000
> [ 0.000000] s11: 0000000000000000 t3 : ffffffff80a0bc00 t4 : ffffffff80a0bc00
> [ 0.000000] t5 : ffffffff80a0bbd0 t6 : ffffffff80a0bc00
> [ 0.000000] status: 0000000200000100 badaddr: 0000000000000000 cause: 0000000000000003
> [ 0.000000] [<ffffffff80017344>] __insert_resource+0x8e/0xd0
> [ 0.000000] ---[ end trace 0000000000000000 ]---
> [ 0.000000] Failed to add a Crash kernel resource at 177e00000
>
> The crashkernel memory has been allocated successfully, whereas
> it failed to insert into iomem_resource. This is due to the
This is a warning, not a failure, right? Inserting crashk_*res into
iomem_resource has been successful, just the repeated inserting cause
the warning. Maybe, we should tell this in log clearly? Other than minor
concern, this looks good to me, thanks for the testing and this fix:
Acked-by: Baoquan He <bhe at redhat.com>
Thanks
Baoquan
> unique reserving logic in risc-v arch specific code, i.e.
> crashk_res/crashk_low_res will be added into iomem_resource
> later in init_resources(), which is not aligned with current
> unified reserving logic in reserve_crashkernel_generic()/
> reserve_crashkernel_low().
>
> Removing the arch specific code within #ifdef CONFIG_KEXEC_CORE
> in init_resources() to fix above problem.
>
> Fixes: 31549153088e ("riscv: kdump: use generic interface to simplify crashkernel reservation")
> Signed-off-by: Chen Jiahao <chenjiahao16 at huawei.com>
> ---
> arch/riscv/kernel/setup.c | 13 -------------
> 1 file changed, 13 deletions(-)
>
> diff --git a/arch/riscv/kernel/setup.c b/arch/riscv/kernel/setup.c
> index e600aab116a4..aac853ae4eb7 100644
> --- a/arch/riscv/kernel/setup.c
> +++ b/arch/riscv/kernel/setup.c
> @@ -173,19 +173,6 @@ static void __init init_resources(void)
> if (ret < 0)
> goto error;
>
> -#ifdef CONFIG_KEXEC_CORE
> - if (crashk_res.start != crashk_res.end) {
> - ret = add_resource(&iomem_resource, &crashk_res);
> - if (ret < 0)
> - goto error;
> - }
> - if (crashk_low_res.start != crashk_low_res.end) {
> - ret = add_resource(&iomem_resource, &crashk_low_res);
> - if (ret < 0)
> - goto error;
> - }
> -#endif
> -
> #ifdef CONFIG_CRASH_DUMP
> if (elfcorehdr_size > 0) {
> elfcorehdr_res.start = elfcorehdr_addr;
> --
> 2.34.1
>
More information about the linux-riscv
mailing list