Re: [PATCH v6 1/7] x86/kexec: Consolidate relocate_kernel() function parameters

From: Huang, Kai
Date: Sun Aug 17 2025 - 21:15:32 EST


On Fri, 2025-08-15 at 12:46 +0200, Borislav Petkov wrote:
> On Thu, Aug 14, 2025 at 11:59:01AM +1200, Kai Huang wrote:
> > During kexec, the kernel jumps to the new kernel in relocate_kernel(),
> > which is implemented in assembly and both 32-bit and 64-bit have their
> > own version.
> >
> > Currently, for both 32-bit and 64-bit, the last two parameters of the
> > relocate_kernel() are both 'unsigned int' but actually they only convey
> > a boolean, i.e., one bit information. The 'unsigned int' has enough
> > space to carry two bits information therefore there's no need to pass
> > the two booleans in two separate 'unsigned int'.
> >
> > Consolidate the last two function parameters of relocate_kernel() into a
> > single 'unsigned int' and pass flags instead.
> >
> > Only consolidate the 64-bit version albeit the similar optimization can
> > be done for the 32-bit version too. Don't bother changing the 32-bit
> > version while it is working (since assembly code change is required).
> >
> > Signed-off-by: Kai Huang <kai.huang@xxxxxxxxx>
> > Reviewed-by: Tom Lendacky <thomas.lendacky@xxxxxxx>
> > ---
> >
> > v5 -> v6:
> > - Add Tom's RB.
> >
> > v4 -> v5:
> > - RELOC_KERNEL_HOST_MEM_ACTIVE -> RELOC_KERNEL_HOST_MEM_ENC_ACTIVE
> > (Tom)
> > - Add a comment to explain only RELOC_KERNEL_PRESERVE_CONTEXT is
> > restored after jumping back from peer kernel for preserved_context
> > kexec (pointed out by Tom).
> > - Use testb instead of testq when comparing the flag with R11 to save
> > 3 bytes (Hpa).
> >
> > v4:
> > - new patch
> >
> >
> > ---
> > arch/x86/include/asm/kexec.h | 12 ++++++++++--
> > arch/x86/kernel/machine_kexec_64.c | 22 +++++++++++++---------
> > arch/x86/kernel/relocate_kernel_64.S | 25 +++++++++++++++----------
> > 3 files changed, 38 insertions(+), 21 deletions(-)
>
> Reviewed-by: Borislav Petkov (AMD) <bp@xxxxxxxxx>

Thanks Boris!