summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Huang <kai.huang@intel.com>2024-10-30 22:00:15 +0300
committerPaolo Bonzini <pbonzini@redhat.com>2025-03-14 21:20:50 +0300
commit45154fb010f7fdd99a67ce110f2abd646eaa209b (patch)
treee86408695247fed360d6e886d82b750714533858
parentfcdbdf63431c9faf639bffc957ea2ce9b545432e (diff)
downloadlinux-45154fb010f7fdd99a67ce110f2abd646eaa209b.tar.xz
KVM: TDX: Get TDX global information
KVM will need to consult some essential TDX global information to create and run TDX guests. Get the global information after initializing TDX. Signed-off-by: Kai Huang <kai.huang@intel.com> Signed-off-by: Rick Edgecombe <rick.p.edgecombe@intel.com> Message-ID: <20241030190039.77971-3-rick.p.edgecombe@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--arch/x86/kvm/vmx/tdx.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c
index 3c089ed3b843..b74a50e8d086 100644
--- a/arch/x86/kvm/vmx/tdx.c
+++ b/arch/x86/kvm/vmx/tdx.c
@@ -13,6 +13,8 @@ module_param_named(tdx, enable_tdx, bool, 0444);
static enum cpuhp_state tdx_cpuhp_state;
+static const struct tdx_sys_info *tdx_sysinfo;
+
static int tdx_online_cpu(unsigned int cpu)
{
unsigned long flags;
@@ -92,11 +94,20 @@ static int __init __tdx_bringup(void)
if (r)
goto tdx_bringup_err;
+ /* Get TDX global information for later use */
+ tdx_sysinfo = tdx_get_sysinfo();
+ if (WARN_ON_ONCE(!tdx_sysinfo)) {
+ r = -EINVAL;
+ goto get_sysinfo_err;
+ }
+
/*
* Leave hardware virtualization enabled after TDX is enabled
* successfully. TDX CPU hotplug depends on this.
*/
return 0;
+get_sysinfo_err:
+ __tdx_cleanup();
tdx_bringup_err:
kvm_disable_virtualization();
return r;