]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/virt/tdx: Use ida_is_empty() to detect if any TDs may be running
authorSean Christopherson <seanjc@google.com>
Sat, 14 Feb 2026 01:27:00 +0000 (17:27 -0800)
committerSean Christopherson <seanjc@google.com>
Wed, 4 Mar 2026 16:53:08 +0000 (08:53 -0800)
Drop nr_configured_hkid and instead use ida_is_empty() to detect if any
HKIDs have been allocated/configured.

Suggested-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Chao Gao <chao.gao@intel.com>
Tested-by: Chao Gao <chao.gao@intel.com>
Tested-by: Sagi Shahar <sagis@google.com>
Link: https://patch.msgid.link/20260214012702.2368778-15-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/virt/vmx/tdx/tdx.c

index 3a1dddec6843dc2fd4e2dd49ff29220ec0e4b1d2..cb9b3210ab710ff60c107e34a551b9551b25469f 100644 (file)
@@ -59,8 +59,6 @@ static LIST_HEAD(tdx_memlist);
 static struct tdx_sys_info tdx_sysinfo __ro_after_init;
 static bool tdx_module_initialized __ro_after_init;
 
-static atomic_t nr_configured_hkid;
-
 typedef void (*sc_err_func_t)(u64 fn, u64 err, struct tdx_module_args *args);
 
 static inline void seamcall_err(u64 fn, u64 err, struct tdx_module_args *args)
@@ -191,7 +189,7 @@ static int tdx_offline_cpu(unsigned int cpu)
        int i;
 
        /* No TD is running.  Allow any cpu to be offline. */
-       if (!atomic_read(&nr_configured_hkid))
+       if (ida_is_empty(&tdx_guest_keyid_pool))
                goto done;
 
        /*
@@ -1542,22 +1540,15 @@ EXPORT_SYMBOL_FOR_KVM(tdx_get_nr_guest_keyids);
 
 int tdx_guest_keyid_alloc(void)
 {
-       int ret;
-
-       ret = ida_alloc_range(&tdx_guest_keyid_pool, tdx_guest_keyid_start,
-                             tdx_guest_keyid_start + tdx_nr_guest_keyids - 1,
-                             GFP_KERNEL);
-       if (ret >= 0)
-               atomic_inc(&nr_configured_hkid);
-
-       return ret;
+       return ida_alloc_range(&tdx_guest_keyid_pool, tdx_guest_keyid_start,
+                              tdx_guest_keyid_start + tdx_nr_guest_keyids - 1,
+                              GFP_KERNEL);
 }
 EXPORT_SYMBOL_FOR_KVM(tdx_guest_keyid_alloc);
 
 void tdx_guest_keyid_free(unsigned int keyid)
 {
        ida_free(&tdx_guest_keyid_pool, keyid);
-       atomic_dec(&nr_configured_hkid);
 }
 EXPORT_SYMBOL_FOR_KVM(tdx_guest_keyid_free);