mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 22:14:03 +02:00
x86/virt/tdx: Reset software states during TDX module shutdown
The TDX module requires a one-time global initialization (TDH.SYS.INIT) and per-CPU initialization (TDH.SYS.LP.INIT) before use. These initializations are guarded by software flags to prevent repetition. Reset all software flags guarding the initialization flows to allow the global and per-CPU initializations to be triggered again after updates. [ dhansen: trim down changelog ] Signed-off-by: Chao Gao <chao.gao@intel.com> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by: Tony Lindgren <tony.lindgren@linux.intel.com> Reviewed-by: Kai Huang <kai.huang@intel.com> Reviewed-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Link: https://patch.msgid.link/20260520133909.409394-18-chao.gao@intel.com
This commit is contained in:
parent
9ea06080a6
commit
65a6542a81
|
|
@ -1279,6 +1279,7 @@ int tdx_module_shutdown(void)
|
|||
struct tdx_sys_info_handoff handoff = {};
|
||||
struct tdx_module_args args = {};
|
||||
int ret;
|
||||
int cpu;
|
||||
|
||||
ret = get_tdx_sys_info_handoff(&handoff);
|
||||
/*
|
||||
|
|
@ -1294,7 +1295,21 @@ int tdx_module_shutdown(void)
|
|||
*/
|
||||
args.rcx = handoff.module_hv;
|
||||
|
||||
return seamcall_prerr(TDH_SYS_SHUTDOWN, &args);
|
||||
ret = seamcall_prerr(TDH_SYS_SHUTDOWN, &args);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* Clear global and per-CPU initialization flags so the new module
|
||||
* can be fully re-initialized after a successful update.
|
||||
*
|
||||
* No locks needed as no concurrent accesses can occur here.
|
||||
*/
|
||||
memset(&tdx_module_state, 0, sizeof(tdx_module_state));
|
||||
for_each_possible_cpu(cpu)
|
||||
per_cpu(tdx_lp_initialized, cpu) = false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool is_pamt_page(unsigned long phys)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user