From: "Huang, Kai" <kai.huang@intel.com>
To: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Gao, Chao" <chao.gao@intel.com>
Cc: "x86@kernel.org" <x86@kernel.org>,
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
"kas@kernel.org" <kas@kernel.org>,
"seanjc@google.com" <seanjc@google.com>,
"Chatre, Reinette" <reinette.chatre@intel.com>,
"Weiny, Ira" <ira.weiny@intel.com>,
"binbin.wu@linux.intel.com" <binbin.wu@linux.intel.com>,
"Verma, Vishal L" <vishal.l.verma@intel.com>,
"nik.borisov@suse.com" <nik.borisov@suse.com>,
"mingo@redhat.com" <mingo@redhat.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"tony.lindgren@linux.intel.com" <tony.lindgren@linux.intel.com>,
"sagis@google.com" <sagis@google.com>,
"Annapurve, Vishal" <vannapurve@google.com>,
"hpa@zytor.com" <hpa@zytor.com>,
"Edgecombe, Rick P" <rick.p.edgecombe@intel.com>,
"paulmck@kernel.org" <paulmck@kernel.org>,
"tglx@kernel.org" <tglx@kernel.org>,
"yilun.xu@linux.intel.com" <yilun.xu@linux.intel.com>,
"Williams, Dan J" <dan.j.williams@intel.com>,
"bp@alien8.de" <bp@alien8.de>
Subject: Re: [PATCH v5 09/22] x86/virt/seamldr: Introduce skeleton for TDX module updates
Date: Wed, 18 Mar 2026 22:11:58 +0000 [thread overview]
Message-ID: <371af3874cf40ff01e9e5e6960fdb7516ff51240.camel@intel.com> (raw)
In-Reply-To: <20260315135920.354657-10-chao.gao@intel.com>
> +static struct {
> + enum module_update_state state;
> + int thread_ack;
> + /*
> + * Protect update_data. Raw spinlock as it will be acquired from
> + * interrupt-disabled contexts.
> + */
> + raw_spinlock_t lock;
> +} update_data = {
> + .lock = __RAW_SPIN_LOCK_UNLOCKED(update_data.lock)
> +};
> +
> +static void set_target_state(enum module_update_state state)
> +{
> + /* Reset ack counter. */
> + update_data.thread_ack = num_online_cpus();
> + update_data.state = state;
> +}
> +
> +/* Last one to ack a state moves to the next state. */
> +static void ack_state(void)
> +{
> + guard(raw_spinlock)(&update_data.lock);
> + update_data.thread_ack--;
> + if (!update_data.thread_ack)
> + set_target_state(update_data.state + 1);
> +}
> +
> +/*
> + * See multi_cpu_stop() from where this multi-cpu state-machine was
> + * adopted, and the rationale for touch_nmi_watchdog().
> + */
> +static int do_seamldr_install_module(void *seamldr_params)
> +{
> + enum module_update_state newstate, curstate = MODULE_UPDATE_START;
> + int ret = 0;
> +
> + do {
> + /* Chill out and re-read update_data. */
> + cpu_relax();
> + newstate = READ_ONCE(update_data.state);
> +
> + if (newstate != curstate) {
> + curstate = newstate;
> + switch (curstate) {
> + /* TODO: add the update steps. */
> + default:
> + break;
> + }
> +
> + ack_state();
> + } else {
> + touch_nmi_watchdog();
> + rcu_momentary_eqs();
> + }
> + } while (curstate != MODULE_UPDATE_DONE);
> +
> + return ret;
> +}
The read
newstate = READ_ONCE(update_data.state);
.. is done out of the spinlock, but AFAICT it is fine.
The worst case is couple of additional loops on old state. The thread_ack
is protected by the lock thus no ack will get lost.
Reviewed-by: Kai Huang <kai.huang@intel.com>
next prev parent reply other threads:[~2026-03-18 22:12 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-15 13:58 [PATCH v5 00/22] Runtime TDX module update support Chao Gao
2026-03-15 13:58 ` [PATCH v5 01/22] x86/virt/tdx: Move low level SEAMCALL helpers out of <asm/tdx.h> Chao Gao
2026-03-16 12:41 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 02/22] coco/tdx-host: Introduce a "tdx_host" device Chao Gao
2026-03-16 12:48 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 03/22] coco/tdx-host: Expose TDX module version Chao Gao
2026-03-16 12:54 ` Kiryl Shutsemau
2026-03-18 21:37 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 04/22] x86/virt/seamldr: Introduce a wrapper for P-SEAMLDR SEAMCALLs Chao Gao
2026-03-16 13:05 ` Kiryl Shutsemau
2026-03-17 0:43 ` Chao Gao
2026-03-17 9:59 ` Kiryl Shutsemau
2026-03-18 7:13 ` Xiaoyao Li
2026-03-18 9:34 ` Chao Gao
2026-03-19 3:02 ` Xiaoyao Li
2026-03-19 7:14 ` Chao Gao
2026-03-18 21:38 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 05/22] x86/virt/seamldr: Retrieve P-SEAMLDR information Chao Gao
2026-03-16 13:12 ` Kiryl Shutsemau
2026-03-17 1:05 ` Chao Gao
2026-03-17 10:00 ` Kiryl Shutsemau
2026-03-18 7:53 ` Xiaoyao Li
2026-03-18 8:57 ` Chao Gao
2026-03-18 21:40 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 06/22] coco/tdx-host: Expose P-SEAMLDR information via sysfs Chao Gao
2026-03-17 10:06 ` Kiryl Shutsemau
2026-03-17 15:34 ` Dave Hansen
2026-03-18 6:54 ` Chao Gao
2026-03-18 8:20 ` Xiaoyao Li
2026-03-18 9:10 ` Chao Gao
2026-03-18 9:28 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 07/22] coco/tdx-host: Implement firmware upload sysfs ABI for TDX module updates Chao Gao
2026-03-17 10:20 ` Kiryl Shutsemau
2026-03-18 8:28 ` Chao Gao
2026-03-18 21:45 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 08/22] x86/virt/seamldr: Allocate and populate a module update request Chao Gao
2026-03-17 10:59 ` Kiryl Shutsemau
2026-03-18 8:50 ` Chao Gao
2026-03-18 10:58 ` Kiryl Shutsemau
2026-03-19 7:24 ` Chao Gao
2026-03-19 12:58 ` Kiryl Shutsemau
2026-03-18 21:36 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 09/22] x86/virt/seamldr: Introduce skeleton for TDX module updates Chao Gao
2026-03-18 22:11 ` Huang, Kai [this message]
2026-03-19 13:15 ` Kiryl Shutsemau
2026-03-20 8:10 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 10/22] x86/virt/seamldr: Abort updates if errors occurred midway Chao Gao
2026-03-19 13:19 ` Kiryl Shutsemau
2026-03-20 8:12 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 11/22] x86/virt/seamldr: Shut down the current TDX module Chao Gao
2026-03-19 13:24 ` Kiryl Shutsemau
2026-03-20 8:21 ` Chao Gao
2026-03-23 1:33 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 12/22] x86/virt/tdx: Reset software states during TDX module shutdown Chao Gao
2026-03-16 9:06 ` Huang, Kai
2026-03-17 8:27 ` Chao Gao
2026-03-17 11:08 ` Huang, Kai
2026-03-15 13:58 ` [PATCH v5 13/22] x86/virt/seamldr: Install a new TDX module Chao Gao
2026-03-19 13:32 ` Kiryl Shutsemau
2026-03-23 2:14 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 14/22] x86/virt/seamldr: Do TDX per-CPU initialization after updates Chao Gao
2026-03-19 13:33 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 15/22] x86/virt/tdx: Restore TDX module state Chao Gao
2026-03-19 13:37 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 16/22] x86/virt/tdx: Update tdx_sysinfo and check features post-update Chao Gao
2026-03-19 13:43 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 17/22] x86/virt/tdx: Avoid updates during update-sensitive operations Chao Gao
2026-03-19 14:00 ` Kiryl Shutsemau
2026-03-20 8:00 ` Chao Gao
2026-03-15 13:58 ` [PATCH v5 18/22] coco/tdx-host: Don't expose P-SEAMLDR features on CPUs with erratum Chao Gao
2026-03-19 14:02 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 19/22] x86/virt/tdx: Enable TDX module runtime updates Chao Gao
2026-03-19 14:03 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 20/22] coco/tdx-host: Document TDX module update compatibility criteria Chao Gao
2026-03-19 14:04 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 21/22] x86/virt/tdx: Document TDX module update Chao Gao
2026-03-19 14:05 ` Kiryl Shutsemau
2026-03-15 13:58 ` [PATCH v5 22/22] x86/virt/seamldr: Log TDX module update failures Chao Gao
2026-03-19 14:06 ` Kiryl Shutsemau
2026-03-20 8:31 ` Chao Gao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=371af3874cf40ff01e9e5e6960fdb7516ff51240.camel@intel.com \
--to=kai.huang@intel.com \
--cc=binbin.wu@linux.intel.com \
--cc=bp@alien8.de \
--cc=chao.gao@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=ira.weiny@intel.com \
--cc=kas@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=nik.borisov@suse.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@redhat.com \
--cc=reinette.chatre@intel.com \
--cc=rick.p.edgecombe@intel.com \
--cc=sagis@google.com \
--cc=seanjc@google.com \
--cc=tglx@kernel.org \
--cc=tony.lindgren@linux.intel.com \
--cc=vannapurve@google.com \
--cc=vishal.l.verma@intel.com \
--cc=x86@kernel.org \
--cc=yilun.xu@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.