I verified that the values align with the GHCB spec publication: #56421 Revision: 2.00
Reviewed-by: Erdem Aktas <erdemak...@google.com> On Wed, May 12, 2021 at 4:46 PM Brijesh Singh <brijesh.si...@amd.com> wrote: > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275 > > The Page State Change NAE exit will be used by the SEV-SNP guest to > request a page state change using the GHCB protocol. See the GHCB > spec section 4.1.6 and 2.3.1 for more detail on the structure > definitions. > > Cc: James Bottomley <j...@linux.ibm.com> > Cc: Min Xu <min.m...@intel.com> > Cc: Jiewen Yao <jiewen....@intel.com> > Cc: Tom Lendacky <thomas.lenda...@amd.com> > Cc: Jordan Justen <jordan.l.jus...@intel.com> > Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Erdem Aktas <erdemak...@google.com> > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > Reviewed-by: Laszlo Ersek <ler...@redhat.com> > Reviewed-by: Liming Gao <gaolim...@byosoft.com.cn> > Signed-off-by: Brijesh Singh <brijesh.si...@amd.com> > --- > MdePkg/Include/Register/Amd/Fam17Msr.h | 15 ++++++++++++ > MdePkg/Include/Register/Amd/Ghcb.h | 33 ++++++++++++++++++++++++++ > 2 files changed, 48 insertions(+) > > diff --git a/MdePkg/Include/Register/Amd/Fam17Msr.h > b/MdePkg/Include/Register/Amd/Fam17Msr.h > index 542e4cdf4782..62014854d9b7 100644 > --- a/MdePkg/Include/Register/Amd/Fam17Msr.h > +++ b/MdePkg/Include/Register/Amd/Fam17Msr.h > @@ -58,6 +58,19 @@ typedef union { > UINT64 GuestFrameNumber:52; > } GhcbGpaRegister; > > + struct { > + UINT64 Function:12; > + UINT64 GuestFrameNumber:40; > + UINT64 Operation:4; > + UINT64 Reserved:8; > + } SnpPageStateChangeRequest; > + > + struct { > + UINT32 Function:12; > + UINT32 Reserved:20; > + UINT32 ErrorCode; > + } SnpPageStateChangeResponse; > + > VOID *Ghcb; > > UINT64 GhcbPhysicalAddress; > @@ -69,6 +82,8 @@ typedef union { > #define GHCB_INFO_CPUID_RESPONSE 5 > #define GHCB_INFO_GHCB_GPA_REGISTER_REQUEST 18 > #define GHCB_INFO_GHCB_GPA_REGISTER_RESPONSE 19 > +#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_REQUEST 20 > +#define GHCB_INFO_SNP_PAGE_STATE_CHANGE_RESPONSE 21 > #define GHCB_HYPERVISOR_FEATURES_REQUEST 128 > #define GHCB_HYPERVISOR_FEATURES_RESPONSE 129 > #define GHCB_INFO_TERMINATE_REQUEST 256 > diff --git a/MdePkg/Include/Register/Amd/Ghcb.h > b/MdePkg/Include/Register/Amd/Ghcb.h > index ec232ebd3807..029904b1c63a 100644 > --- a/MdePkg/Include/Register/Amd/Ghcb.h > +++ b/MdePkg/Include/Register/Amd/Ghcb.h > @@ -54,6 +54,7 @@ > #define SVM_EXIT_NMI_COMPLETE 0x80000003ULL > #define SVM_EXIT_AP_RESET_HOLD 0x80000004ULL > #define SVM_EXIT_AP_JUMP_TABLE 0x80000005ULL > +#define SVM_EXIT_SNP_PAGE_STATE_CHANGE 0x80000010ULL > #define SVM_EXIT_HYPERVISOR_FEATURES 0x8000FFFDULL > #define SVM_EXIT_UNSUPPORTED 0x8000FFFFULL > > @@ -162,4 +163,36 @@ typedef union { > #define GHCB_HV_FEATURES_SNP_AP_CREATE > (GHCB_HV_FEATURES_SNP | BIT1) > #define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION > (GHCB_HV_FEATURES_SNP_AP_CREATE | BIT2) > #define GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION_TIMER > (GHCB_HV_FEATURES_SNP_RESTRICTED_INJECTION | BIT3) > + > +// > +// SNP Page State Change. > +// > +// Note that the PSMASH and UNSMASH operations are not supported when using > the MSR protocol. > +// > +#define SNP_PAGE_STATE_PRIVATE 1 > +#define SNP_PAGE_STATE_SHARED 2 > +#define SNP_PAGE_STATE_PSMASH 3 > +#define SNP_PAGE_STATE_UNSMASH 4 > + > +typedef struct { > + UINT64 CurrentPage:12; > + UINT64 GuestFrameNumber:40; > + UINT64 Operation:4; > + UINT64 PageSize:1; > + UINT64 Reserved:7; > +} SNP_PAGE_STATE_ENTRY; > + > +typedef struct { > + UINT16 CurrentEntry; > + UINT16 EndEntry; > + UINT32 Reserved; > +} SNP_PAGE_STATE_HEADER; > + > +#define SNP_PAGE_STATE_MAX_ENTRY 253 > + > +typedef struct { > + SNP_PAGE_STATE_HEADER Header; > + SNP_PAGE_STATE_ENTRY Entry[SNP_PAGE_STATE_MAX_ENTRY]; > +} SNP_PAGE_STATE_CHANGE_INFO; > + > #endif > -- > 2.17.1 > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#75227): https://edk2.groups.io/g/devel/message/75227 Mute This Topic: https://groups.io/mt/82787288/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-