Re: [PATCH v7 0/8] x86/kexec: Add exception handling for relocate_kernel

From: Ingo Molnar
Date: Thu Mar 13 2025 - 06:46:26 EST



* David Woodhouse <dwmw2@xxxxxxxxxxxxx> wrote:

> Debugging kexec failures is painful, as anything going wrong in execution
> of the critical relocate_kernel() function tends to just lead to a triple
> fault. Thus leading to *weeks* of my life that I won't get back. Having
> hacked something up for my own use, I figured I should share it...
>
> Add a trivial exception handler in the relocate_kernel environment which
> outputs to the early_printk serial console if configured. Currently only
> 8250-compatible serial ports are supported, but that could be extended.
>
> I had to hack up QEMU support for a PCI serial port which matches what
> the existing early_printk code can drive, and the *real* 8250_pci driver
> doesn't seem to cope with that setup at all, but whatever... the kexec
> code now drives the same 32-bit stride which is all that earlyprintk
> supports. We can always add more later, if anyone cares.
>
> Someone who cares might want to bring the i386 version into line with
> this, although the lack of rip-based addressing makes all the PIC code a
> bit harder.
>
> David Woodhouse (8):
> x86/kexec: Debugging support: load a GDT
> x86/kexec: Debugging support: Load an IDT and basic exception entry points
> x86/kexec: Debugging support: Dump registers on exception
> x86/kexec: Add 8250 serial port output
> x86/kexec: Add 8250 MMIO serial port output
> x86/kexec: Invalidate GDT/IDT from relocate_kernel() instead of earlier
> [DO NOT MERGE] x86/kexec: Add int3 in kexec path for testing
> [DO NOT MERGE] x86/kexec: Add CFI type information to relocate_kernel()
>
> arch/x86/include/asm/kexec.h | 7 ++
> arch/x86/kernel/early_printk.c | 9 ++
> arch/x86/kernel/machine_kexec_64.c | 50 ++++++--
> arch/x86/kernel/relocate_kernel_64.S | 254 +++++++++++++++++++++++++++++++++++++++-
> 4 files changed, 308 insertions(+), 12 deletions(-)

I applied the first 3 patches to tip:x86/boot for phased-risk-reduction
reasons, and because I had some questions and suggestions starting at
patch #4.

Thanks,

Ingo