All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sohil Mehta" <sohil.mehta@intel.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v10 21/28] KVM: nVMX: Handle FRED VMCS fields in nested VMX context
Date: Fri, 11 Sep 2026 22:34:38 +0000	[thread overview]
Message-ID: <20260911223438.EF2401F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260911213659.2025974-22-sohil.mehta@intel.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] L2 guest state corruption: FRED MSRs leak across VMRESUME when L1 configures LOAD_IA32_FRED=1 and SAVE_IA32_FRED=0.
- [Medium] Missing VM-entry consistency checks allow L1 to bypass guest FRED MSR validation and trigger hardware VM-entry failures.
--

commit 057f971773a8afea0241cab2d4cb47bca7dc2643
Author: Xin Li (Intel) <xin@zytor.com>
Subject: KVM: nVMX: Handle FRED VMCS fields in nested VMX context

Extend nested VMX context management to include FRED-related VMCS fields,
enabling proper handling of FRED state during nested virtualization.

> diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c
> index 6576935b9d43f..83e846fb3fc8c 100644
> --- a/arch/x86/kvm/vmx/nested.c
> +++ b/arch/x86/kvm/vmx/nested.c

[ ... ]

> @@ -2755,6 +2792,10 @@ static void prepare_vmcs02_rare(struct vcpu_vmx *vmx, struct vmcs12 *vmcs12)
>  				     vmcs12->guest_ssp, vmcs12->guest_ssp_tbl);
>  
>  	set_cr4_guest_host_mask(vmx);
> +
> +	if (guest_cpu_cap_has(&vmx->vcpu, X86_FEATURE_FRED) &&
> +	    nested_cpu_load_guest_fred_state(vmcs12))
> +		vmcs_write_fred_msrs(&vmcs12->guest_fred_msrs);
>  }

[Severity: High]
Can this lead to L2 guest state corruption?

When L1 sets VM_ENTRY_LOAD_IA32_FRED=1 but VM_EXIT_SAVE_IA32_FRED=0, it
expects L2's FRED MSRs to be reset to the values in vmcs12 on every VM-entry.

Because the vmcs02 update is placed here inside prepare_vmcs02_rare(), it is
skipped on a clean VMRESUME operation. Since FRED MSRs are passed through to
L2 (via the MSR bitmap), L2 can modify them directly without triggering a
VM-exit.

Hardware saves these modified values to vmcs02 on VM-exit, but KVM does not
sync them back to vmcs12 (because SAVE_IA32_FRED=0). On the next VMRESUME,
prepare_vmcs02_rare() is bypassed, leaving the stale, modified L2 values in
vmcs02. L2 will therefore inherit its previous modified state instead of the
clean baseline values configured by L1 in vmcs12.

[ ... ]

[Severity: Medium]
Could KVM miss a VM-entry consistency check during FRED MSR validation?

Looking at nested_vmx_check_guest_state() in arch/x86/kvm/vmx/nested.c,
the FRED MSR validation is nested under the ia32e condition:

	if (ia32e) {
		if (nested_cpu_load_guest_fred_state(vmcs12)) {
			if (CC(vmcs12->guest_ia32_fred_config & FRED_CONFIG_RESERVED) ||

If an L1 hypervisor sets VM_ENTRY_LOAD_IA32_FRED=1 but clears
VM_ENTRY_IA32E_MODE=0, these checks bypass the validation of
guest_ia32_fred_config and other FRED MSRs.

Additionally, KVM appears to lack the cross-control verification required
by the SDM where LOAD_IA32_FRED=1 requires IA32E_MODE=1. As a result, KVM
might attempt to VMLAUNCH vmcs02 with invalid state, which hardware rejects
with a VM-instruction error and triggers the warn_on_missed_cc path.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260911213659.2025974-1-sohil.mehta@intel.com?part=21

  reply	other threads:[~2026-09-11 22:34 UTC|newest]

Thread overview: 43+ 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-09-11 21:36 ` [PATCH v10 02/28] KVM: VMX: Initialize VM entry/exit FRED controls in vmcs_config Sohil Mehta
2026-09-11 22:00   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 03/28] KVM: VMX: Disable FRED if FRED consistency checks fail Sohil Mehta
2026-09-11 22:08   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 04/28] x86/cea: Prefix event stack names with ESTACK_ Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 05/28] x86/cea: Use array indexing to simplify exception stack access Sohil Mehta
2026-09-11 21:57   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 06/28] x86/fred: Export this_cpu_fred_rsp() for KVM usage Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 07/28] KVM: VMX: Initialize VMCS FRED fields Sohil Mehta
2026-09-11 22:10   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 08/28] KVM: VMX: Set FRED MSR intercepts Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 09/28] KVM: VMX: Save/restore guest FRED RSP0 Sohil Mehta
2026-09-11 21:36 ` [PATCH v10 10/28] KVM: VMX: Add support for saving and restoring FRED MSRs Sohil Mehta
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-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 22:09   ` sashiko-bot
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 22:14   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 16/28] KVM: x86: Mark CR4.FRED as not reserved Sohil Mehta
2026-09-11 22:14   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 17/28] KVM: x86: Handle CR4.FRED when emulating RSM Sohil Mehta
2026-09-11 22:15   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 18/28] KVM: VMX: Dump FRED context in dump_vmcs() Sohil Mehta
2026-09-11 22:11   ` sashiko-bot
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 22:34   ` sashiko-bot [this message]
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 22:20   ` sashiko-bot
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 22:29   ` sashiko-bot
2026-09-11 21:36 ` [PATCH v10 25/28] KVM: nVMX: Enable VMX FRED controls Sohil Mehta
2026-09-11 22:37   ` sashiko-bot
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-11 22:32   ` sashiko-bot

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=20260911223438.EF2401F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=sohil.mehta@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.