From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by mx.groups.io with SMTP id smtpd.web12.1342.1621279259928444675 for ; Mon, 17 May 2021 12:21:00 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@google.com header.s=20161025 header.b=FZwShOVc; spf=pass (domain: google.com, ip: 209.85.215.176, mailfrom: erdemaktas@google.com) Received: by mail-pg1-f176.google.com with SMTP id k15so5307319pgb.10 for ; Mon, 17 May 2021 12:20:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=d3t1WnJCEMv8Sp6xnByGTM+Dw09h8SEJ9sF9sSe8kf8=; b=FZwShOVcgBwBl4x2D5EoBQzX9QWeWmh6wAgDt9QQxhZf23IZ1BzGh3L9FlsmZAyN4/ m+hlCMekTzKgp6FlUzhSIHV9ItfQk4QJUp6E7B62idsmk9r3KGqTsgqqFeYyMbVBlosp /0ERXuDC/VZI/N0kIJ9nzS3cMFX7MDp589a6rfmY+v04JkyExjA1L5HhhDRCO8JxRMMh Wd7gDp11L7JNG2Q6E1xyBvoTwo6GN1if1BpKE3/tqKK0/3nGlDapA/ch61SorCXUXIyS GBDmJ8uJ8Gw2JjN3LA+FiffeFMVHt7DkgdTwt0YSTe+y1KpOC0WPZ9XNHJL5E/O+LfQn ECig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=d3t1WnJCEMv8Sp6xnByGTM+Dw09h8SEJ9sF9sSe8kf8=; b=ccIJPJxHDgWMautsNADkUOi7tBh/5awLAgYNhcNbedlMPdd1m4KWQK+ZtB4byof8pZ xyWdK0JtbSQoqX10tEvNRpcyJUGt6J9lPNHxvMCvByW98CzaSI+HK2PR2bH9Vj7M34z9 8Q/xV2tNT+CVzwj5do2JT5DzmYZzPBBsT0eLTvbaYIy+WRj13RL18E97w/3UNRYKzxvC CHBP79ZIFbsX5EllRn/AnICNw7e2Dpsg5cZ7QuMascs15iQjkoW/0atshQAhMb4D/U4h 7mcd7jd6xgF2eKxxFGUa+FUpkWOKY18t2RdfcdJcBf3SMQsLkvdq00CAHtS2olC+61Cr 14VA== X-Gm-Message-State: AOAM532gn5un3Q36oUadzn0VgMKgjqFkBaQFM4k9UJbETqmUrH4RdQVa 6NWN2RLphGvg1MgT7w9dnTeKLh2uyyOxaBhWDWd1hQ== X-Google-Smtp-Source: ABdhPJx/mPVoY7tvAl8/R8UDegKG/AXb20L6dWPVj5M07Opg1aVfxtFyXhVyUk8CKiTDiugA0nbHN9Vz0/wSFgHt03Q= X-Received: by 2002:a63:ec03:: with SMTP id j3mr1031322pgh.272.1621279259080; Mon, 17 May 2021 12:20:59 -0700 (PDT) MIME-Version: 1.0 References: <20210512234615.1726-1-brijesh.singh@amd.com> <20210512234615.1726-6-brijesh.singh@amd.com> In-Reply-To: <20210512234615.1726-6-brijesh.singh@amd.com> From: "Erdem Aktas" Date: Mon, 17 May 2021 12:20:48 -0700 Message-ID: Subject: Re: [PATCH v2 05/13] MdePkg/Register/Amd: define GHCB macro for the Page State Change To: Brijesh Singh Cc: devel@edk2.groups.io, James Bottomley , Min Xu , Jiewen Yao , Tom Lendacky , Jordan Justen , Ard Biesheuvel , Laszlo Ersek , Michael D Kinney , Liming Gao , Zhiguang Liu Content-Type: text/plain; charset="UTF-8" I verified that the values align with the GHCB spec publication: #56421 Revision: 2.00 Reviewed-by: Erdem Aktas On Wed, May 12, 2021 at 4:46 PM Brijesh Singh 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 > Cc: Min Xu > Cc: Jiewen Yao > Cc: Tom Lendacky > Cc: Jordan Justen > Cc: Ard Biesheuvel > Cc: Laszlo Ersek > Cc: Erdem Aktas > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Zhiguang Liu > Reviewed-by: Laszlo Ersek > Reviewed-by: Liming Gao > Signed-off-by: Brijesh Singh > --- > 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 >