Re: [PATCH v3 10/16] x86/virt/tdx: Drop the outdated requirement that TDX be enabled in IRQ context
From: Huang, Kai
Date: Tue Feb 17 2026 - 06:29:57 EST
On Fri, 2026-02-13 at 17:26 -0800, Sean Christopherson wrote:
> Remove TDX's outdated requirement that per-CPU enabling be done via IPI
> function call, which was a stale artifact leftover from early versions of
> the TDX enablement series. The requirement that IRQs be disabled should
> have been dropped as part of the revamped series that relied on a the KVM
> rework to enable VMX at module load.
>
> In other words, the kernel's "requirement" was never a requirement at all,
> but instead a reflection of how KVM enabled VMX (via IPI callback) when
> the TDX subsystem code was merged.
>
> Note, accessing per-CPU information is safe even without disabling IRQs,
> as tdx_online_cpu() is invoked via a cpuhp callback, i.e. from a per-CPU
> thread.
>
> Link: https://lore.kernel.org/all/ZyJOiPQnBz31qLZ7@xxxxxxxxxx
> Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
>
Hi Sean,
The first call of tdx_cpu_enable() will also call into
try_init_module_global() (in order to do TDH_SYS_INIT), which also has a
lockdep_assert_irqs_disabled() + a raw spinlock to make sure TDH_SYS_INIT is
only called once when tdx_cpu_enable() are called from IRQ disabled context.
This patch only changes tdx_cpu_enable() but doesn't change
try_init_module_global(), thus the first call of tdx_cpu_enable() will still
trigger the lockdep_assert_irqs_disabled() failure warning.
I've tried this series on my local and I did see such WARNING during
boot[*]. We need to fix that too.
But hmm, Chao's "Runtime TDX module update" series actually needs to call
tdx_cpu_enable() when IRQ disabled, IIUC, since it is called via
stop_machine_cpuslocked():
https://lore.kernel.org/kvm/20260212143606.534586-18-chao.gao@xxxxxxxxx/
Maybe we can just keep tdx_cpu_enabled() as-is?
[*] lockdep WARNING():
[ 7.755642] ------------[ cut here ]------------
[ 7.756639] __lockdep_enabled && this_cpu_read(hardirqs_enabled)
[ 7.756642] WARNING: arch/x86/virt/vmx/tdx/tdx.c:119 at
try_init_module_global+0x189/0x1c0, CPU#0: cpuhp/0/21