Re: s390x: kdump kernel can not boot if I load kernel and initrd images via the kexec_file_load syscall.

From: Christian Borntraeger
Date: Wed May 13 2020 - 04:28:04 EST




On 12.05.20 19:39, Philipp Rudo wrote:
> Hi Lianbo,
>
> stupid me obviously never tested the kdump+initrd combination...
>
> The patch below fixed the problem for me. Could please give it a try, too.
>
> Thanks
> Philipp
>
> ---
>
> From 3f77088c9139582261d2e3ee6476324fc1ded401 Mon Sep 17 00:00:00 2001
> From: Philipp Rudo <prudo@xxxxxxxxxxxxx>
> Date: Tue, 12 May 2020 19:25:14 +0200
> Subject: [PATCH] s390/kexec_file: fix initrd location for kdump kernel
>
> initrd_start must not point at the location the initrd is loaded into
> the crashkernel memory but at the location it will be after the
> crashkernel memory is swapped with the memory at 0.
>
> Fixes: ee337f5469fd ("s390/kexec_file: Add crash support to image loader")
> Reported-by: Lianbo Jiang <lijiang@xxxxxxxxxx>
> Signed-off-by: Philipp Rudo <prudo@xxxxxxxxxxxxx>
> ---
> arch/s390/kernel/machine_kexec_file.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/s390/kernel/machine_kexec_file.c b/arch/s390/kernel/machine_kexec_file.c
> index 8415ae7d2a23..f9e4baa64b67 100644
> --- a/arch/s390/kernel/machine_kexec_file.c
> +++ b/arch/s390/kernel/machine_kexec_file.c
> @@ -151,7 +151,7 @@ static int kexec_file_add_initrd(struct kimage *image,
> buf.mem += crashk_res.start;
> buf.memsz = buf.bufsz;
>
> - data->parm->initrd_start = buf.mem;
> + data->parm->initrd_start = data->memsz;
> data->parm->initrd_size = buf.memsz;
> data->memsz += buf.memsz;


Thanks, applied.