From: "Huang, Kai" <kai.huang@intel.com>
To: "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Cc: "amit.shah@amd.com" <amit.shah@amd.com>,
"Kohler, Jon" <jon@nutanix.com>,
"seanjc@google.com" <seanjc@google.com>,
"mtosatti@redhat.com" <mtosatti@redhat.com>,
"nikunj@amd.com" <nikunj@amd.com>
Subject: Re: [PATCH 03/22] KVM: x86/mmu: adjust MMIO generation bit allocation and allowed mask
Date: Tue, 24 Mar 2026 03:48:36 +0000 [thread overview]
Message-ID: <0bd8c0720a618b15ccf7e76a4b34e89eb4315c00.camel@intel.com> (raw)
In-Reply-To: <20260321000931.1947084-4-pbonzini@redhat.com>
> /*
> - * Due to limited space in PTEs, the MMIO generation is a 19 bit subset of
> + * Due to limited space in PTEs, the MMIO generation is an 18 bit subset of
> * the memslots generation and is derived as follows:
Is "a -> an" unintentional change?
> *
> - * Bits 0-7 of the MMIO generation are propagated to spte bits 3-10
> - * Bits 8-18 of the MMIO generation are propagated to spte bits 52-62
> + * Bits 0-6 of the MMIO generation are propagated to spte bits 3-9
> + * Bits 7-17 of the MMIO generation are propagated to spte bits 52-62
> *
> * The KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS flag is intentionally not included in
> * the MMIO generation number, as doing so would require stealing a bit from
> @@ -111,7 +111,7 @@ static_assert(!(EPT_SPTE_MMU_WRITABLE & SHADOW_ACC_TRACK_SAVED_MASK));
> */
>
> #define MMIO_SPTE_GEN_LOW_START 3
> -#define MMIO_SPTE_GEN_LOW_END 10
> +#define MMIO_SPTE_GEN_LOW_END 9
>
> #define MMIO_SPTE_GEN_HIGH_START 52
> #define MMIO_SPTE_GEN_HIGH_END 62
> @@ -133,7 +133,8 @@ static_assert(!(SPTE_MMU_PRESENT_MASK &
> * and so they're off-limits for generation; additional checks ensure the mask
> * doesn't overlap legal PA bits), and bit 63 (carved out for future usage).
> */
> -#define SPTE_MMIO_ALLOWED_MASK (BIT_ULL(63) | GENMASK_ULL(51, 12) | GENMASK_ULL(2, 0))
> +#define SPTE_MMIO_ALLOWED_MASK (BIT_ULL(63) | GENMASK_ULL(51, 12) | \
> + BIT_ULL(10) | GENMASK_ULL(2, 0))
> static_assert(!(SPTE_MMIO_ALLOWED_MASK &
> (SPTE_MMU_PRESENT_MASK | MMIO_SPTE_GEN_LOW_MASK | MMIO_SPTE_GEN_HIGH_MASK)));
>
> @@ -141,7 +142,7 @@ static_assert(!(SPTE_MMIO_ALLOWED_MASK &
> #define MMIO_SPTE_GEN_HIGH_BITS (MMIO_SPTE_GEN_HIGH_END - MMIO_SPTE_GEN_HIGH_START + 1)
>
> /* remember to adjust the comment above as well if you change these */
> -static_assert(MMIO_SPTE_GEN_LOW_BITS == 8 && MMIO_SPTE_GEN_HIGH_BITS == 11);
> +static_assert(MMIO_SPTE_GEN_LOW_BITS == 7 && MMIO_SPTE_GEN_HIGH_BITS == 11);
>
> #define MMIO_SPTE_GEN_LOW_SHIFT (MMIO_SPTE_GEN_LOW_START - 0)
> #define MMIO_SPTE_GEN_HIGH_SHIFT (MMIO_SPTE_GEN_HIGH_START - MMIO_SPTE_GEN_LOW_BITS)
Besides the changes to MMIO_GEN, the FROZEN_SPTE seems to have bit 10 set:
#define FROZEN_SPTE (SHADOW_NONPRESENT_VALUE | 0x5a0ULL)
When MBEC is enabled, IIUC such SPTE will be treated as present by hardware
if CPU supports execution-only SPTE.
Also, when MBEC is enabled, per SDM if CPU doesn't support execution-only,
an SPTE with bit 0 clear but with bit 10 set will trigger EPT
miscofiguration, rather than EPT violation.
So seems we should exclude bit 10 from FROZEN_SPTE.
next prev parent reply other threads:[~2026-03-24 3:48 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-21 0:09 [RFC PATCH 00/22] KVM: combined patchset for MBEC/GMET support Paolo Bonzini
2026-03-21 0:09 ` [PATCH 01/22] KVM: TDX/VMX: rework EPT_VIOLATION_EXEC_FOR_RING3_LIN into PROT_MASK Paolo Bonzini
2026-03-23 14:49 ` Jon Kohler
2026-03-25 4:29 ` Huang, Kai
2026-03-21 0:09 ` [PATCH 02/22] KVM: x86/mmu: remove SPTE_PERM_MASK Paolo Bonzini
2026-03-25 4:29 ` Huang, Kai
2026-03-21 0:09 ` [PATCH 03/22] KVM: x86/mmu: adjust MMIO generation bit allocation and allowed mask Paolo Bonzini
2026-03-24 3:48 ` Huang, Kai [this message]
2026-03-24 9:11 ` Paolo Bonzini
2026-03-21 0:09 ` [PATCH 04/22] KVM: x86/mmu: shuffle high bits of SPTEs in preparation for MBEC Paolo Bonzini
2026-03-25 4:35 ` Huang, Kai
2026-03-21 0:09 ` [PATCH 05/22] KVM: x86/mmu: remove SPTE_EPT_* Paolo Bonzini
2026-03-25 4:36 ` Huang, Kai
2026-03-21 0:09 ` [PATCH 06/22] KVM: x86/mmu: merge make_spte_{non,}executable Paolo Bonzini
2026-03-23 14:49 ` Jon Kohler
2026-03-21 0:09 ` [PATCH 07/22] KVM: x86/mmu: rename and clarify BYTE_MASK Paolo Bonzini
2026-03-21 0:09 ` [PATCH 08/22] KVM: x86/mmu: introduce ACC_READ_MASK Paolo Bonzini
2026-03-23 14:49 ` Jon Kohler
2026-03-23 14:49 ` Jon Kohler
2026-03-21 0:09 ` [PATCH 09/22] KVM: x86/mmu: separate more EPT/non-EPT permission_fault() Paolo Bonzini
2026-03-21 0:09 ` [PATCH 10/22] KVM: x86/mmu: split XS/XU bits for MBEC Paolo Bonzini
2026-03-24 10:45 ` Huang, Kai
2026-03-24 11:24 ` Paolo Bonzini
2026-03-25 4:28 ` Huang, Kai
2026-03-21 0:09 ` [PATCH 11/22] KVM: x86/mmu: move cr4_smep to base role Paolo Bonzini
2026-03-21 0:09 ` [PATCH 12/22] KVM: VMX: enable use of MBEC Paolo Bonzini
2026-03-23 14:49 ` Jon Kohler
2026-03-21 0:09 ` [PATCH 13/22] KVM: x86/mmu: add support for nested MBEC Paolo Bonzini
2026-03-23 14:49 ` Jon Kohler
2026-03-21 0:09 ` [PATCH 14/22] KVM: nVMX: advertise MBEC to nested guests Paolo Bonzini
2026-03-23 14:49 ` Jon Kohler
2026-03-21 0:09 ` [PATCH 15/22] KVM: nVMX: allow MBEC with EVMCS Paolo Bonzini
2026-03-21 0:09 ` [PATCH 16/22] KVM: x86/tdp_mmu: propagate access mask from kvm_mmu_page to PTE Paolo Bonzini
2026-03-21 0:09 ` [PATCH 17/22] KVM: x86/mmu: introduce cpu_role bit for availability of PFEC.I/D Paolo Bonzini
2026-03-21 0:09 ` [PATCH 18/22] KVM: SVM: add GMET bit definitions Paolo Bonzini
2026-03-21 11:58 ` Borislav Petkov
2026-03-21 13:51 ` Paolo Bonzini
2026-03-21 15:42 ` Borislav Petkov
2026-03-23 7:53 ` Paolo Bonzini
2026-03-23 12:17 ` Borislav Petkov
2026-03-23 12:22 ` Paolo Bonzini
2026-03-23 12:26 ` Borislav Petkov
2026-03-23 12:19 ` Borislav Petkov
2026-03-23 12:26 ` Borislav Petkov
2026-03-21 0:09 ` [PATCH 19/22] KVM: x86/mmu: add support for NPT GMET Paolo Bonzini
2026-03-21 0:09 ` [PATCH 20/22] KVM: SVM: enable GMET and set it in MMU role Paolo Bonzini
2026-03-25 9:25 ` Nikunj A. Dadhania
2026-03-25 9:29 ` Paolo Bonzini
2026-03-25 9:39 ` Nikunj A. Dadhania
2026-03-25 10:08 ` Paolo Bonzini
2026-03-21 0:09 ` [PATCH 21/22] KVM: SVM: work around errata 1218 Paolo Bonzini
2026-03-21 0:09 ` [PATCH 22/22] KVM: nSVM: enable GMET for guests Paolo Bonzini
2026-03-24 19:57 ` Jon Kohler
2026-03-25 5:22 ` Nikunj A. Dadhania
2026-03-25 12:55 ` Paolo Bonzini
2026-03-21 13:54 ` [RFC PATCH 00/22] KVM: combined patchset for MBEC/GMET support Paolo Bonzini
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=0bd8c0720a618b15ccf7e76a4b34e89eb4315c00.camel@intel.com \
--to=kai.huang@intel.com \
--cc=amit.shah@amd.com \
--cc=jon@nutanix.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=nikunj@amd.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.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
all inboxes | Powered by JetHome®