mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Xin Li <xin@zytor.com>
To: seanjc@google.com, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	Chao Gao <chao.gao@intel.com>
Cc: pbonzini@redhat.com, corbet@lwn.net, tglx@linutronix.de,
	mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com,
	x86@kernel.org, hpa@zytor.com, luto@kernel.org,
	peterz@infradead.org, andrew.cooper3@citrix.com
Subject: Re: [PATCH v3 00/27] Enable FRED with KVM VMX
Date: Tue, 18 Feb 2025 16:26:21 -0800	[thread overview]
Message-ID: <22d4574b-7e2d-4cd8-91bd-f5208e82369e@zytor.com> (raw)
In-Reply-To: <20241001050110.3643764-1-xin@zytor.com>

On 9/30/2024 10:00 PM, Xin Li (Intel) wrote:
> This patch set enables the Intel flexible return and event delivery
> (FRED) architecture with KVM VMX to allow guests to utilize FRED.
> 
> The FRED architecture defines simple new transitions that change
> privilege level (ring transitions). The FRED architecture was
> designed with the following goals:
> 
> 1) Improve overall performance and response time by replacing event
>     delivery through the interrupt descriptor table (IDT event
>     delivery) and event return by the IRET instruction with lower
>     latency transitions.
> 
> 2) Improve software robustness by ensuring that event delivery
>     establishes the full supervisor context and that event return
>     establishes the full user context.
> 
> The new transitions defined by the FRED architecture are FRED event
> delivery and, for returning from events, two FRED return instructions.
> FRED event delivery can effect a transition from ring 3 to ring 0, but
> it is used also to deliver events incident to ring 0. One FRED
> instruction (ERETU) effects a return from ring 0 to ring 3, while the
> other (ERETS) returns while remaining in ring 0. Collectively, FRED
> event delivery and the FRED return instructions are FRED transitions.
> 
> Intel VMX architecture is extended to run FRED guests, and the major
> changes are:
> 
> 1) New VMCS fields for FRED context management, which includes two new
> event data VMCS fields, eight new guest FRED context VMCS fields and
> eight new host FRED context VMCS fields.
> 
> 2) VMX nested-exception support for proper virtualization of stack
> levels introduced with FRED architecture.
> 
> Search for the latest FRED spec in most search engines with this search
> pattern:
> 
>    site:intel.com FRED (flexible return and event delivery) specification
> 
> The first 20 patches add FRED support to VMX, and the rest 7 patches
> add FRED support to nested VMX.
> 
> 
> Following is the link to the v2 of this patch set:
> https://lore.kernel.org/kvm/20240207172646.3981-1-xin3.li@intel.com/
> 
> Sean Christopherson (3):
>    KVM: x86: Use a dedicated flow for queueing re-injected exceptions
>    KVM: VMX: Don't modify guest XFD_ERR if CR0.TS=1
>    KVM: VMX: Pass XFD_ERR as pseudo-payload when injecting #NM
> 
> Xin Li (21):
>    KVM: VMX: Add support for the secondary VM exit controls
>    KVM: VMX: Initialize FRED VM entry/exit controls in vmcs_config
>    KVM: VMX: Disable FRED if FRED consistency checks fail
>    KVM: VMX: Initialize VMCS FRED fields
>    KVM: x86: Use KVM-governed feature framework to track "FRED enabled"
>    KVM: VMX: Set FRED MSR interception
>    KVM: VMX: Save/restore guest FRED RSP0
>    KVM: VMX: Add support for FRED context save/restore
>    KVM: x86: Add a helper to detect if FRED is enabled for a vCPU
>    KVM: VMX: Virtualize FRED event_data
>    KVM: VMX: Virtualize FRED nested exception tracking
>    KVM: x86: Mark CR4.FRED as not reserved when guest can use FRED
>    KVM: VMX: Dump FRED context in dump_vmcs()
>    KVM: x86: Allow FRED/LKGS to be advertised to guests
>    KVM: x86: Allow WRMSRNS to be advertised to guests
>    KVM: VMX: Invoke vmx_set_cpu_caps() before nested setup
>    KVM: nVMX: Add support for the secondary VM exit controls
>    KVM: nVMX: Add a prerequisite to SHADOW_FIELD_R[OW] macros
>    KVM: nVMX: Add FRED VMCS fields
>    KVM: nVMX: Add VMCS FRED states checking
>    KVM: nVMX: Allow VMX FRED controls
> 
> Xin Li (Intel) (3):
>    x86/cea: Export per CPU variable cea_exception_stacks
>    KVM: VMX: Do not use MAX_POSSIBLE_PASSTHROUGH_MSRS in array definition
>    KVM: nVMX: Add a prerequisite to existence of VMCS fields

Hi Sean,

While I'm waiting for the CET patches for native Linux and KVM to be
upstreamed, do you think if it's worth it for you to take the cleanup
and some of the preparation patches first?

Top of my mind are:
     KVM: x86: Use a dedicated flow for queueing re-injected exceptions
     KVM: VMX: Don't modify guest XFD_ERR if CR0.TS=1
     KVM: VMX: Pass XFD_ERR as pseudo-payload when injecting #NM
     KVM: nVMX: Add a prerequisite to existence of VMCS fields
     KVM: nVMX: Add a prerequisite to SHADOW_FIELD_R[OW] macros

Then specially, the nested exception tracking patch seems a good one as
Chao Gao suggested to decouple the nested tracking from FRED:
     KVM: VMX: Virtualize nested exception tracking

Lastly the patches to add support for the secondary VM exit controls 
might go in early as well:
     KVM: VMX: Add support for the secondary VM exit controls
     KVM: nVMX: Add support for the secondary VM exit controls

But if you don't like the idea please just let me know.

Thanks!
     Xin

  parent reply	other threads:[~2025-02-19  0:27 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-01  5:00 Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 01/27] KVM: x86: Use a dedicated flow for queueing re-injected exceptions Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 02/27] KVM: VMX: Don't modify guest XFD_ERR if CR0.TS=1 Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 03/27] KVM: VMX: Add support for the secondary VM exit controls Xin Li (Intel)
2024-10-21  8:28   ` Chao Gao
2024-10-21 17:03     ` Xin Li
2024-10-22  2:47       ` Chao Gao
2024-10-22 16:30         ` Xin Li
2025-02-25 17:28           ` Sean Christopherson
2024-10-01  5:00 ` [PATCH v3 04/27] KVM: VMX: Initialize FRED VM entry/exit controls in vmcs_config Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 05/27] KVM: VMX: Disable FRED if FRED consistency checks fail Xin Li (Intel)
2024-10-22  8:48   ` Chao Gao
2024-10-22 16:21     ` Xin Li
2024-11-26 15:32   ` Borislav Petkov
2024-11-26 18:53     ` Xin Li
2024-11-26 19:04       ` Borislav Petkov
2024-10-01  5:00 ` [PATCH v3 06/27] x86/cea: Export per CPU variable cea_exception_stacks Xin Li (Intel)
2024-10-01 16:12   ` Dave Hansen
2024-10-01 17:51     ` Xin Li
2024-10-01 18:18       ` Dave Hansen
2024-10-01  5:00 ` [PATCH v3 07/27] KVM: VMX: Initialize VMCS FRED fields Xin Li (Intel)
2024-10-22  9:06   ` Chao Gao
2024-10-22 16:18     ` Xin Li
2024-10-01  5:00 ` [PATCH v3 08/27] KVM: x86: Use KVM-governed feature framework to track "FRED enabled" Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 09/27] KVM: VMX: Do not use MAX_POSSIBLE_PASSTHROUGH_MSRS in array definition Xin Li (Intel)
2024-11-26 18:02   ` Borislav Petkov
2024-11-26 19:22     ` Xin Li
2024-11-26 20:06       ` Borislav Petkov
2024-11-27  6:46         ` Xin Li
2024-11-27  6:55           ` Borislav Petkov
2024-11-27  7:02             ` Xin Li
2024-11-27  7:10               ` Borislav Petkov
2024-11-27  7:32                 ` Xin Li
2024-11-27  7:58                   ` Borislav Petkov
2024-10-01  5:00 ` [PATCH v3 10/27] KVM: VMX: Set FRED MSR interception Xin Li (Intel)
2024-11-13 11:31   ` Chao Gao
2024-10-01  5:00 ` [PATCH v3 11/27] KVM: VMX: Save/restore guest FRED RSP0 Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 12/27] KVM: VMX: Add support for FRED context save/restore Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 13/27] KVM: x86: Add a helper to detect if FRED is enabled for a vCPU Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 14/27] KVM: VMX: Pass XFD_ERR as pseudo-payload when injecting #NM Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 15/27] KVM: VMX: Virtualize FRED event_data Xin Li (Intel)
2024-10-01  5:00 ` [PATCH v3 16/27] KVM: VMX: Virtualize FRED nested exception tracking Xin Li (Intel)
2024-10-24  6:24   ` Chao Gao
2024-10-25  8:04     ` Xin Li
2024-10-28  6:33       ` Chao Gao
2024-12-05  7:16         ` Xin Li
2024-10-01  5:01 ` [PATCH v3 17/27] KVM: x86: Mark CR4.FRED as not reserved when guest can use FRED Xin Li (Intel)
2024-10-24  7:18   ` Chao Gao
2024-12-12 18:48     ` Xin Li
2024-12-12 19:05       ` Sean Christopherson
2024-12-13 18:43         ` Xin Li
2024-10-01  5:01 ` [PATCH v3 18/27] KVM: VMX: Dump FRED context in dump_vmcs() Xin Li (Intel)
2024-10-24  7:23   ` Chao Gao
2024-10-24 16:50     ` Xin Li
2024-10-01  5:01 ` [PATCH v3 19/27] KVM: x86: Allow FRED/LKGS to be advertised to guests Xin Li (Intel)
2024-10-01  5:01 ` [PATCH v3 20/27] KVM: x86: Allow WRMSRNS " Xin Li (Intel)
2025-02-25 15:41   ` Sean Christopherson
2024-10-01  5:01 ` [PATCH v3 21/27] KVM: VMX: Invoke vmx_set_cpu_caps() before nested setup Xin Li (Intel)
2024-10-24  7:49   ` Chao Gao
2024-10-25  7:34     ` Xin Li
2025-02-25 16:01       ` Sean Christopherson
2024-10-01  5:01 ` [PATCH v3 22/27] KVM: nVMX: Add support for the secondary VM exit controls Xin Li (Intel)
2024-10-01  5:01 ` [PATCH v3 23/27] KVM: nVMX: Add a prerequisite to SHADOW_FIELD_R[OW] macros Xin Li (Intel)
2024-10-01  5:01 ` [PATCH v3 24/27] KVM: nVMX: Add a prerequisite to existence of VMCS fields Xin Li (Intel)
2025-02-25 16:22   ` Sean Christopherson
2025-02-25 16:37     ` Xin Li
2025-02-25 19:32       ` Sean Christopherson
2024-10-01  5:01 ` [PATCH v3 25/27] KVM: nVMX: Add FRED " Xin Li (Intel)
2024-10-24  7:42   ` Chao Gao
2024-10-25  7:25     ` Xin Li
2024-10-28  9:07       ` Chao Gao
2024-10-28 18:27         ` Sean Christopherson
2024-10-29 17:40           ` Xin Li
2024-10-01  5:01 ` [PATCH v3 26/27] KVM: nVMX: Add VMCS FRED states checking Xin Li (Intel)
2024-10-01  5:01 ` [PATCH v3 27/27] KVM: nVMX: Allow VMX FRED controls Xin Li (Intel)
2025-02-19  0:26 ` Xin Li [this message]
2025-02-25 15:24   ` [PATCH v3 00/27] Enable FRED with KVM VMX Sean Christopherson
2025-02-25 17:04     ` Xin Li
2025-02-25 17:35       ` Sean Christopherson
2025-02-25 18:48         ` Xin Li
2025-02-28 17:06 ` Sean Christopherson

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=22d4574b-7e2d-4cd8-91bd-f5208e82369e@zytor.com \
    --to=xin@zytor.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=bp@alien8.de \
    --cc=chao.gao@intel.com \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /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

all inboxes | Powered by JetHome®