Fwd: [External] Re: [PATCH 1/4] kexec: reuse crash kernel reserved memory for normal kexec

From: 黄杰
Date: Mon Jul 25 2022 - 08:56:18 EST


---------- Forwarded message ---------
发件人: Jason A. Donenfeld <Jason@xxxxxxxxx>
Date: 2022年7月25日周一 20:02
Subject: [External] Re: [PATCH 1/4] kexec: reuse crash kernel reserved
memory for normal kexec
To: Albert Huang <huangjie.albert@xxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Ingo Molnar
<mingo@xxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>, Dave Hansen
<dave.hansen@xxxxxxxxxxxxxxx>, <x86@xxxxxxxxxx>, H. Peter Anvin
<hpa@xxxxxxxxx>, Eric Biederman <ebiederm@xxxxxxxxxxxx>, Masahiro
Yamada <masahiroy@xxxxxxxxxx>, Michal Marek <michal.lkml@xxxxxxxxxxx>,
Nick Desaulniers <ndesaulniers@xxxxxxxxxx>, Kirill A. Shutemov
<kirill.shutemov@xxxxxxxxxxxxxxx>, Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx>, Michael Roth
<michael.roth@xxxxxxx>, Nathan Chancellor <nathan@xxxxxxxxxx>, Ard
Biesheuvel <ardb@xxxxxxxxxx>, Joerg Roedel <jroedel@xxxxxxx>, Mark
Rutland <mark.rutland@xxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Sean Christopherson <seanjc@xxxxxxxxxx>, Kees Cook
<keescook@xxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>,
<kexec@xxxxxxxxxxxxxxxxxxx>, <linux-kbuild@xxxxxxxxxxxxxxx>


Hi Albert,

On Mon, Jul 25, 2022 at 04:38:53PM +0800, Albert Huang wrote:
> The kexec userspace tool also needs to add parameter options(-r) that
> support the use of reserved memory (see another patch for kexec)
>
> [...]
>
> - if (kexec_on_panic) {
> + if (kexec_on_panic && kexec_on_reserved) {

Two small questions related to this:

- Why does kexec-tools need an option, or more specifically, why does
userspace need to communicate about this at all? Can't the kernel just
automatically use the available reserved memory in the case that's not
already being used by the panic handler kernel? I'm curious about
whether there are caveats that would make this occasionally
undesirable, hence suggesting an option.

- I don't totally understand how this works, so I might be a bit off
here, but is there any chance that this could be made to co-exist with
kexec_on_panic? Can a larger region just be reserved, specifically for
this, rather than piggy backing on the panic handler region?

> +static struct page *kimage_alloc_reserverd_control_pages(struct kimage *image,
> + case KEXEC_TYPE_RESERVED_MEM:
> + pages = kimage_alloc_reserverd_control_pages(image, order);

Nit:
reserverd -> reserved

Jason