mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [tip: x86/tdx] x86/virt/tdx: Move TDX global initialization states to file scope
       [not found] <20260520222847.BED50ACD@davehans-spike.ostc.intel.com>
@ 2026-05-22 17:26 ` tip-bot2 for Chao Gao
  0 siblings, 0 replies; 2+ messages in thread
From: tip-bot2 for Chao Gao @ 2026-05-22 17:26 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Chao Gao, Dave Hansen, x86, linux-kernel

The following commit has been merged into the x86/tdx branch of tip:

Commit-ID:     2f410fa074fb12167b9788263b4862a5ffc5a6d7
Gitweb:        https://git.kernel.org/tip/2f410fa074fb12167b9788263b4862a5ffc5a6d7
Author:        Chao Gao <chao.gao@intel.com>
AuthorDate:    Wed, 20 May 2026 15:28:47 -07:00
Committer:     Dave Hansen <dave.hansen@linux.intel.com>
CommitterDate: Wed, 20 May 2026 15:37:08 -07:00

x86/virt/tdx: Move TDX global initialization states to file scope

TDX module global initialization is executed only once. The first call
caches both the result and the "done" state, and later callers reuse the
saved result. A lock protects that cached states.

Those states and the lock are currently kept as function-local statics
because they are used only by try_init_module_global().

TDX module updates need to reset the cached states so TDX global
initialization can be run again after an update. That will add another
access site in the same file.

Move the cached states to file scope so it is accessible outside
try_init_module_global(), and move the lock along with the states it
protects.

No functional change intended.

Signed-off-by: Chao Gao <chao.gao@intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://patch.msgid.link/20260520133909.409394-3-chao.gao@intel.com
Link: https://patch.msgid.link/20260520222847.BED50ACD@davehans-spike.ostc.intel.com
---
 arch/x86/virt/vmx/tdx/tdx.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c
index ad56f14..40444a3 100644
--- a/arch/x86/virt/vmx/tdx/tdx.c
+++ b/arch/x86/virt/vmx/tdx/tdx.c
@@ -105,6 +105,10 @@ static __always_inline int sc_retry_prerr(sc_func_t func,
 #define seamcall_prerr_ret(__fn, __args)					\
 	sc_retry_prerr(__seamcall_ret, seamcall_err_ret, (__fn), (__args))
 
+static DEFINE_RAW_SPINLOCK(sysinit_lock);
+static bool sysinit_done;
+static int sysinit_ret;
+
 /*
  * Do the module global initialization once and return its result.
  * It can be done on any cpu, and from task or IRQ context.
@@ -112,9 +116,6 @@ static __always_inline int sc_retry_prerr(sc_func_t func,
 static int try_init_module_global(void)
 {
 	struct tdx_module_args args = {};
-	static DEFINE_RAW_SPINLOCK(sysinit_lock);
-	static bool sysinit_done;
-	static int sysinit_ret;
 	int ret;
 
 	raw_spin_lock(&sysinit_lock);

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [tip: x86/tdx] x86/virt/tdx: Move TDX global initialization states to file scope
  2026-05-20 13:38 [PATCH v10 02/25] " Chao Gao
@ 2026-06-05 21:25 ` tip-bot2 for Chao Gao
  0 siblings, 0 replies; 2+ messages in thread
From: tip-bot2 for Chao Gao @ 2026-06-05 21:25 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Chao Gao, Dave Hansen, x86, linux-kernel

The following commit has been merged into the x86/tdx branch of tip:

Commit-ID:     9c0c68708dc48e8ae4f9043c96b387a0173361f1
Gitweb:        https://git.kernel.org/tip/9c0c68708dc48e8ae4f9043c96b387a0173361f1
Author:        Chao Gao <chao.gao@intel.com>
AuthorDate:    Wed, 20 May 2026 15:28:47 -07:00
Committer:     Dave Hansen <dave.hansen@linux.intel.com>
CommitterDate: Wed, 03 Jun 2026 08:14:50 -07:00

x86/virt/tdx: Move TDX global initialization states to file scope

TDX module global initialization is executed only once. The first call
caches both the result and the "done" state, and later callers reuse the
saved result. A lock protects that cached states.

Those states and the lock are currently kept as function-local statics
because they are used only by try_init_module_global().

TDX module updates need to reset the cached states so TDX global
initialization can be run again after an update. That will add another
access site in the same file.

Move the cached states to file scope so it is accessible outside
try_init_module_global(), and move the lock along with the states it
protects.

No functional change intended.

Signed-off-by: Chao Gao <chao.gao@intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Link: https://patch.msgid.link/20260520133909.409394-3-chao.gao@intel.com
---
 arch/x86/virt/vmx/tdx/tdx.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c
index ad56f14..40444a3 100644
--- a/arch/x86/virt/vmx/tdx/tdx.c
+++ b/arch/x86/virt/vmx/tdx/tdx.c
@@ -105,6 +105,10 @@ static __always_inline int sc_retry_prerr(sc_func_t func,
 #define seamcall_prerr_ret(__fn, __args)					\
 	sc_retry_prerr(__seamcall_ret, seamcall_err_ret, (__fn), (__args))
 
+static DEFINE_RAW_SPINLOCK(sysinit_lock);
+static bool sysinit_done;
+static int sysinit_ret;
+
 /*
  * Do the module global initialization once and return its result.
  * It can be done on any cpu, and from task or IRQ context.
@@ -112,9 +116,6 @@ static __always_inline int sc_retry_prerr(sc_func_t func,
 static int try_init_module_global(void)
 {
 	struct tdx_module_args args = {};
-	static DEFINE_RAW_SPINLOCK(sysinit_lock);
-	static bool sysinit_done;
-	static int sysinit_ret;
 	int ret;
 
 	raw_spin_lock(&sysinit_lock);

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-06-05 21:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20260520222847.BED50ACD@davehans-spike.ostc.intel.com>
2026-05-22 17:26 ` [tip: x86/tdx] x86/virt/tdx: Move TDX global initialization states to file scope tip-bot2 for Chao Gao
2026-05-20 13:38 [PATCH v10 02/25] " Chao Gao
2026-06-05 21:25 ` [tip: x86/tdx] " tip-bot2 for Chao Gao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®