Currently kexec() support and TDX host are muturally exclusive in the Kconfig. This series adds the TDX host kexec support so that they can be both enabled in Kconfig. With this series, the user can kexec (including crash kdump) to the new kernel at any time regardless of whether TDX has been enabled in the first kernel. One limitation is if the first kernel has ever enabled TDX, for now the second kernel cannot use TDX. This is the future work in my TODO list. This series should go in through the tip tree. Thanks, Paolo v7->v8: stub out the new code when kexec is not enabled in the kernel. Of course even the smallest code change is subject to bikeshedding, and I chose my preferred color for the bikeshed. But it's pastel green and I'm sure you'll agree that it's beautiful. Kai Huang (7): x86/kexec: Consolidate relocate_kernel() function parameters x86/sme: Use percpu boolean to control WBINVD during kexec x86/virt/tdx: Mark memory cache state incoherent when making SEAMCALL x86/kexec: Disable kexec/kdump on platforms with TDX partial write erratum x86/virt/tdx: Remove the !KEXEC_CORE dependency x86/virt/tdx: Update the kexec section in the TDX documentation KVM: TDX: Explicitly do WBINVD when no more TDX SEAMCALLs Documentation/arch/x86/tdx.rst | 14 ++++----- arch/x86/Kconfig | 1 - arch/x86/include/asm/kexec.h | 12 ++++++-- arch/x86/include/asm/processor.h | 2 ++ arch/x86/include/asm/tdx.h | 31 +++++++++++++++++++- arch/x86/kernel/cpu/amd.c | 17 +++++++++++ arch/x86/kernel/machine_kexec_64.c | 44 ++++++++++++++++++++++------ arch/x86/kernel/process.c | 24 +++++++-------- arch/x86/kernel/relocate_kernel_64.S | 36 +++++++++++++++-------- arch/x86/kvm/vmx/tdx.c | 10 +++++++ arch/x86/virt/vmx/tdx/tdx.c | 23 +++++++++++++-- 11 files changed, 167 insertions(+), 47 deletions(-) -- 2.51.0