From: Sean Christopherson <seanjc@google.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Xin Li <xin@zytor.com>, Sohil Mehta <sohil.mehta@intel.com>,
kvm@vger.kernel.org, x86@kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Thomas Gleixner <tglx@kernel.org>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Tom Lendacky <thomas.lendacky@amd.com>,
Nikunj A Dadhania <nikunj@amd.com>,
Shivansh Dhiman <shivansh.dhiman@amd.com>,
David Woodhouse <dwmw@amazon.co.uk>,
Chao Gao <chao.gao@intel.com>,
Binbin Wu <binbin.wu@linux.intel.com>,
Zhao Liu <zhao1.liu@intel.com>, Yosry Ahmed <yosry@kernel.org>,
David Matlack <dmatlack@google.com>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org
Subject: Re: [PATCH v10 00/28] KVM: Enable FRED support with KVM VMX
Date: Mon, 26 Oct 2026 09:04:17 -0700 [thread overview]
Message-ID: <at96Aex_dl8-yUk6@google.com> (raw)
In-Reply-To: <9467c7b6-d797-4462-bee1-1406bb8469cd@zytor.com>
On Sat, Oct 24, 2026, H. Peter Anvin wrote:
> On 2026-09-14 23:03, Xin Li wrote:
> >
> >> On Sep 11, 2026, at 2:36 PM, Sohil Mehta <sohil.mehta@intel.com> wrote:
> >>
> >> I mainly rebased the patches to the latest kvm-x86/next branch and fixed
> >> a handful of issues reported during internal testing and basic AI
> >> reviews. I've avoided making any major code changes or commit message
> >> updates as this is the first iteration that I am posting.
> >
> > Thanks a lot for taking care of the patch series.
> >
> >>
> >> Going forward, based on the feedback, I'll rework the patches as needed.
> >> I've listed a few opens below that need additional discussion or
> >> clarification. I'm relatively new to the KVM subsystem, so please feel
> >> free to provide suggestions on the series structure, code organization
> >> as well as commit log clarity to smoothen the review process.
> >
> > I’ve been thinking about an optimization: because FRED drops most of the old
> > syscall MSRs (IA32_LSTAR/IA32_CSTAR/IA32_SFMASK), we should be able to omit
> > them from KVM's uret MSR tracking entirely as if host enables FRED (no matter
> > whether a guest uses FRED).
> >
> Yes, although they will need to be handled properly between VCPU switches, of
> course.
And we'd want to keep the optimizations to elide writes when vCPUs are using the
same value(s). So, compile tested only...
From: Sean Christopherson <seanjc@google.com>
Date: Mon, 26 Oct 2026 07:37:03 -0700
Subject: [PATCH] KVM: x86: Don't bother loading host values for SYSCALL MSRs
when FRED is in use
Elide the WRMSRs for the SYSCALL MSRs when returning to userspace if FRED
is in use, in which case said MSRs are never actually used in Linux.
Note, KVM never saves/restores MSR_CSTAR via the user-return MSR mechanism,
as the MSR is unused by Intel/VMX hardware, and SVM unconditionally context
switches the MSR via a dedicated VMCB field (along with all other SYSCALL
MSRs). Include MSR_CSTAR to provide a contiguous range of values in the
case statements, e.g. so that the compiler can optimize the case statements
into a simple bounds checks.
Suggested-by: Xin Li (Intel) <xin@zytor.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
arch/x86/kvm/msrs.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kvm/msrs.c b/arch/x86/kvm/msrs.c
index e91650af44c2..ef3596d8c780 100644
--- a/arch/x86/kvm/msrs.c
+++ b/arch/x86/kvm/msrs.c
@@ -65,6 +65,23 @@ void kvm_destroy_user_return_msrs(void)
kvm_nr_uret_msrs = 0;
}
+static bool kvm_is_msr_used_in_host(u32 msr)
+{
+ if (!cpu_feature_enabled(X86_FEATURE_FRED))
+ return true;
+
+ switch (msr) {
+ case MSR_STAR:
+ case MSR_LSTAR:
+ case MSR_CSTAR:
+ case MSR_SYSCALL_MASK:
+ return false;
+ default:
+ break;
+ }
+ return true;
+}
+
static void kvm_on_user_return(struct user_return_notifier *urn)
{
unsigned slot;
@@ -77,7 +94,8 @@ static void kvm_on_user_return(struct user_return_notifier *urn)
for (slot = 0; slot < kvm_nr_uret_msrs; ++slot) {
values = &msrs->values[slot];
- if (values->host != values->curr) {
+ if (kvm_is_msr_used_in_host(kvm_uret_msrs_list[slot]) &&
+ values->host != values->curr) {
wrmsrq(kvm_uret_msrs_list[slot], values->host);
values->curr = values->host;
}
base-commit: 7e60162b16f9da0d2fa83da5c1723b6853a0ac1d
--
next prev parent reply other threads:[~2026-10-26 16:04 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 21:36 [PATCH v10 00/28] KVM: Enable FRED support with KVM VMX Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 01/28] KVM: VMX: Enable support for secondary VM exit controls Sohil Mehta
2026-10-22 9:27 ` Binbin Wu
2026-10-23 2:09 ` Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 02/28] KVM: VMX: Initialize VM entry/exit FRED controls in vmcs_config Sohil Mehta
2026-10-22 9:48 ` Binbin Wu
2026-10-23 3:10 ` Sohil Mehta
2026-10-26 5:00 ` Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 03/28] KVM: VMX: Disable FRED if FRED consistency checks fail Sohil Mehta
2026-10-22 10:19 ` Binbin Wu
2026-10-23 3:13 ` Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 04/28] x86/cea: Prefix event stack names with ESTACK_ Sohil Mehta
2026-10-23 5:58 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 05/28] x86/cea: Use array indexing to simplify exception stack access Sohil Mehta
2026-10-23 6:07 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 06/28] x86/fred: Export this_cpu_fred_rsp() for KVM usage Sohil Mehta
2026-10-23 6:49 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 07/28] KVM: VMX: Initialize VMCS FRED fields Sohil Mehta
2026-10-23 7:19 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 08/28] KVM: VMX: Set FRED MSR intercepts Sohil Mehta
2026-10-23 8:07 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 09/28] KVM: VMX: Save/restore guest FRED RSP0 Sohil Mehta
2026-09-14 7:04 ` Binbin Wu
2026-09-14 16:14 ` Edgecombe, Rick P
2026-09-15 8:43 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 10/28] KVM: VMX: Add support for saving and restoring FRED MSRs Sohil Mehta
2026-10-23 8:59 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 11/28] KVM: x86: Add a helper to detect if FRED is enabled for a vCPU Sohil Mehta
2026-10-23 9:21 ` Binbin Wu
2026-09-11 21:36 ` [PATCH v10 12/28] KVM: x86: Add a new save/restore flag for FRED metadata Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 13/28] KVM: VMX: Virtualize FRED nested exception tracking Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 14/28] KVM: VMX: Virtualize FRED event_data Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 15/28] KVM: x86: Include CR4.FRED in the emulator CR4 write mask Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 16/28] KVM: x86: Mark CR4.FRED as not reserved Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 17/28] KVM: x86: Handle CR4.FRED when emulating RSM Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 18/28] KVM: VMX: Dump FRED context in dump_vmcs() Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 19/28] KVM: x86: Advertise support for FRED Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 20/28] KVM: nVMX: Enable support for secondary VM exit controls Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 21/28] KVM: nVMX: Handle FRED VMCS fields in nested VMX context Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 22/28] KVM: nVMX: Restrict event data VMCS fields to FRED-supported hosts Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 23/28] KVM: nVMX: Shadow ORIGINAL_EVENT_DATA and INJECTED_EVENT_DATA fields Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 24/28] KVM: nVMX: Validate FRED-related VMCS fields Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 25/28] KVM: nVMX: Enable VMX FRED controls Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 26/28] KVM: selftests: Add FRED MSRs to msrs_test Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 27/28] KVM: selftests: Add a new VM guest mode to run user level code Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 28/28] KVM: selftests: Add fred exception tests Sohil Mehta
2026-09-15 6:03 ` [PATCH v10 00/28] KVM: Enable FRED support with KVM VMX Xin Li
2026-10-24 22:59 ` H. Peter Anvin
2026-10-26 16:04 ` Sean Christopherson [this message]
2026-10-26 17:22 ` Sohil Mehta
2026-09-15 10:00 ` [EXTERNAL] " David Woodhouse
2026-09-24 11:14 ` Shivansh Dhiman
2026-09-24 14:13 ` David Woodhouse
2026-09-25 12:06 ` Shivansh Dhiman
2026-10-19 20:46 ` Dave Hansen
2026-10-19 22:19 ` Sohil Mehta
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=at96Aex_dl8-yUk6@google.com \
--to=seanjc@google.com \
--cc=andrew.cooper3@citrix.com \
--cc=binbin.wu@linux.intel.com \
--cc=bp@alien8.de \
--cc=chao.gao@intel.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=dmatlack@google.com \
--cc=dwmw@amazon.co.uk \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=nikunj@amd.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=shivansh.dhiman@amd.com \
--cc=skhan@linuxfoundation.org \
--cc=sohil.mehta@intel.com \
--cc=tglx@kernel.org \
--cc=thomas.lendacky@amd.com \
--cc=x86@kernel.org \
--cc=xin@zytor.com \
--cc=yosry@kernel.org \
--cc=zhao1.liu@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox