public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Dong, Eric" <eric.dong@intel.com>
To: Tom Lendacky <thomas.lendacky@amd.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Justen, Jordan L" <jordan.l.justen@intel.com>,
	Laszlo Ersek <lersek@redhat.com>,
	Ard Biesheuvel <ard.biesheuvel@linaro.org>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Ni, Ray" <ray.ni@intel.com>,
	Brijesh Singh <brijesh.singh@amd.com>
Subject: Re: [PATCH v7 08/43] UefiCpuPkg: Implement library support for VMGEXIT
Date: Sat, 9 May 2020 01:06:19 +0000	[thread overview]
Message-ID: <DM6PR11MB3274D9460435FF941F7F47E1FEA30@DM6PR11MB3274.namprd11.prod.outlook.com> (raw)
In-Reply-To: <555901ab0879836aa262f29db634a330208170fa.1587577317.git.thomas.lendacky@amd.com>

Hi Tom,

> -----Original Message-----
> From: Tom Lendacky <thomas.lendacky@amd.com>
> Sent: Thursday, April 23, 2020 1:41 AM
> To: devel@edk2.groups.io
> Cc: Justen, Jordan L <jordan.l.justen@intel.com>; Laszlo Ersek
> <lersek@redhat.com>; Ard Biesheuvel <ard.biesheuvel@linaro.org>; Kinney,
> Michael D <michael.d.kinney@intel.com>; Gao, Liming
> <liming.gao@intel.com>; Dong, Eric <eric.dong@intel.com>; Ni, Ray
> <ray.ni@intel.com>; Brijesh Singh <brijesh.singh@amd.com>
> Subject: [PATCH v7 08/43] UefiCpuPkg: Implement library support for
> VMGEXIT
> 
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2198
> 
> To support issuing a VMGEXIT instruction, create a library that can be used to
> perform GHCB and VMGEXIT related operations and to issue the actual
> VMGEXIT instruction when using the GHCB.
> 
> Additionally, two VMGEXIT / MMIO related functions are created to support
> flash emulation. Flash emulation currently is done by marking the flash area
> as read-only and taking a nested page fault to perform the emulation of the
> instruction. However, emulation cannot be performed because there is no
> instruction decode assist support when SEV-ES is enabled. Provide routines
> to initiate an MMIO request to perform actual writes to flash.
> 
> Cc: Eric Dong <eric.dong@intel.com>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Acked-by: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
> ---
>  UefiCpuPkg/UefiCpuPkg.dec                    |   3 +
>  UefiCpuPkg/UefiCpuPkg.dsc                    |   2 +
>  UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf |  33 +++
>  UefiCpuPkg/Include/Library/VmgExitLib.h      | 117 ++++++++
>  UefiCpuPkg/Library/VmgExitLib/VmgExitLib.c   | 293
> +++++++++++++++++++
>  UefiCpuPkg/Library/VmgExitLib/VmgExitLib.uni |  15 +
>  6 files changed, 463 insertions(+)
>  create mode 100644 UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>  create mode 100644 UefiCpuPkg/Include/Library/VmgExitLib.h
>  create mode 100644 UefiCpuPkg/Library/VmgExitLib/VmgExitLib.c
>  create mode 100644 UefiCpuPkg/Library/VmgExitLib/VmgExitLib.uni
> 
> diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec
> index df5d02bae6b4..cb92f34b6f55 100644
> --- a/UefiCpuPkg/UefiCpuPkg.dec
> +++ b/UefiCpuPkg/UefiCpuPkg.dec
> @@ -53,6 +53,9 @@ [LibraryClasses.IA32, LibraryClasses.X64]
>    ##
>    MpInitLib|Include/Library/MpInitLib.h
> 
> +  ##  @libraryclass  Provides function to support VMGEXIT processing.
> +  VmgExitLib|Include/Library/VmgExitLib.h
> +
>  [Guids]
>    gUefiCpuPkgTokenSpaceGuid      = { 0xac05bf33, 0x995a, 0x4ed4, { 0xaa,
> 0xb8, 0xef, 0x7a, 0xe8, 0xf, 0x5c, 0xb0 }}
>    gMsegSmramGuid                 = { 0x5802bce4, 0xeeee, 0x4e33, { 0xa1, 0x30,
> 0xeb, 0xad, 0x27, 0xf0, 0xe4, 0x39 }}
> diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc index
> d28cb5cccb52..997840452218 100644
> --- a/UefiCpuPkg/UefiCpuPkg.dsc
> +++ b/UefiCpuPkg/UefiCpuPkg.dsc
> @@ -56,6 +56,7 @@ [LibraryClasses]
> 
> PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/Base
> PeCoffGetEntryPointLib.inf
> 
> PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BaseP
> eCoffExtraActionLibNull.inf
> 
> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/Tp
> mMeasurementLibNull.inf
> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
> 
>  [LibraryClasses.common.SEC]
> 
> PlatformSecLib|UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.i
> nf
> @@ -136,6 +137,7 @@ [Components.IA32, Components.X64]
> 
> UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLib
> Null.inf
>    UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
>    UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLibStm.inf
> +  UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
>    UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf
>    UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf
>    UefiCpuPkg/SecCore/SecCore.inf
> diff --git a/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
> b/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
> new file mode 100644
> index 000000000000..6acfa779e75a
> --- /dev/null
> +++ b/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.inf
> @@ -0,0 +1,33 @@
> +## @file
> +#  VMGEXIT Support Library.
> +#
> +#  Copyright (c) 2019, Advanced Micro Devices, Inc. All rights
> +reserved.<BR> #  SPDX-License-Identifier: BSD-2-Clause-Patent # ##
> +
> +[Defines]
> +  INF_VERSION                    = 0x00010005
> +  BASE_NAME                      = VmgExitLib
> +  MODULE_UNI_FILE                = VmgExitLib.uni
> +  FILE_GUID                      = 3cd7368f-ef9b-4a9b-9571-2ed93813677e
> +  MODULE_TYPE                    = BASE
> +  VERSION_STRING                 = 1.0
> +  LIBRARY_CLASS                  = VmgExitLib
> +
> +#
> +# The following information is for reference only and not required by the
> build tools.
> +#
> +#  VALID_ARCHITECTURES           = IA32 X64
> +#
> +
> +[Sources]
> +  VmgExitLib.c
> +
> +[Packages]
> +  MdePkg/MdePkg.dec
> +  UefiCpuPkg/UefiCpuPkg.dec
> +
> +[LibraryClasses]
> +  BaseLib
> +
> diff --git a/UefiCpuPkg/Include/Library/VmgExitLib.h
> b/UefiCpuPkg/Include/Library/VmgExitLib.h
> new file mode 100644
> index 000000000000..3bf05bebd326
> --- /dev/null
> +++ b/UefiCpuPkg/Include/Library/VmgExitLib.h
> @@ -0,0 +1,117 @@
> +/** @file
> +  Public header file for the VMGEXIT Support library class.
> +
> +  This library class defines some routines used when invoking the
> + VMGEXIT  instruction in support of SEV-ES.
> +
> +  Copyright (c) 2019, Advanced Micro Devices, Inc. All rights
> + reserved.<BR>
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#ifndef __VMG_EXIT_LIB_H__
> +#define __VMG_EXIT_LIB_H__
> +
> +#include <Register/Amd/Ghcb.h>
> +
> +
> +/**
> +  Perform VMGEXIT.
> +
> +  Sets the necessary fields of the GHCB, invokes the VMGEXIT
> + instruction and  then handles the return actions.
> +
> +  @param[in, out]  Ghcb       A pointer to the GHCB
> +  @param[in]       ExitCode   VMGEXIT code to be assigned to the SwExitCode
> +                              field of the GHCB.
> +  @param[in]       ExitInfo1  VMGEXIT information to be assigned to the
> +                              SwExitInfo1 field of the GHCB.
> +  @param[in]       ExitInfo2  VMGEXIT information to be assigned to the
> +                              SwExitInfo2 field of the GHCB.
> +
> +  @retval  0                  VMGEXIT succeeded.
> +  @retval  Others             VMGEXIT processing did not succeed. Exception
> +                              number to be propagated.
> +
> +**/
> +UINT64
> +EFIAPI
> +VmgExit (
> +  IN OUT GHCB                *Ghcb,
> +  IN     UINT64              ExitCode,
> +  IN     UINT64              ExitInfo1,
> +  IN     UINT64              ExitInfo2
> +  );
> +
> +/**
> +  Perform pre-VMGEXIT initialization/preparation.
> +
> +  Performs the necessary steps in preparation for invoking VMGEXIT.
> + Must be  called before setting any fields within the GHCB.
> +
> +  @param[in, out]  Ghcb       A pointer to the GHCB
> +
> +**/
> +VOID
> +EFIAPI
> +VmgInit (
> +  IN OUT GHCB                *Ghcb
> +  );
> +
> +/**
> +  Perform post-VMGEXIT cleanup.
> +
> +  Performs the necessary steps to cleanup after invoking VMGEXIT. Must
> + be  called after obtaining needed fields within the GHCB.
> +
> +  @param[in, out]  Ghcb       A pointer to the GHCB
> +
> +**/
> +VOID
> +EFIAPI
> +VmgDone (
> +  IN OUT GHCB                *Ghcb
> +  );
> +
> +#define VMGMMIO_READ   False
> +#define VMGMMIO_WRITE  True
> +
> +/**
> +  Perform MMIO write of a buffer to a non-MMIO marked range.
> +
> +  Performs an MMIO write without taking a #VC. This is useful  for
> + Flash devices, which are marked read-only.
> +
> +  @param[in, out]  Dest       A pointer to the destination buffer
> +  @param[in]       Src        A pointer to the source data to be written
> +  @param[in]       Bytes      Number of bytes to write
> +
> +**/
> +VOID
> +EFIAPI
> +VmgMmioWrite (
> +  IN OUT UINT8               *Dest,
> +  IN     UINT8               *Src,
> +  IN     UINTN                Bytes
> +  );
> +
> +/**
> +  Issue the GHCB set AP Jump Table VMGEXIT.
> +
> +  Performs a VMGEXIT using the GHCB AP Jump Table exit code to save the
> + AP Jump Table address with the hypervisor for retrieval at a later time.
> +
> +  @param[in]  Address  Physical address of the AP Jump Table
> +
> +  @retval  0           VMGEXIT succeeded.
> +  @retval  Others      VMGEXIT processing did not succeed. Exception
> +                       number to be propagated.
> +
> +**/
> +UINT64
> +EFIAPI
> +VmgExitSetAPJumpTable (
> +  IN EFI_PHYSICAL_ADDRESS  Address
> +  );

I think above two APIs should not been added to this library, they are not the basic actions for VmgExit. 
Remove these two APIs will make the library more stable.

Also, I check all the code in this patch series, only one caller for each API, so I think we can directly
move these codes to the caller. If later more and more callers need to use these two APIs, we can
create another service library to convenient the callers.

I ignore all the coding style related issues in this patch because I assume you have passed ECC
checks in your new patches.

Thanks,
Eric
> +
> +#endif
> diff --git a/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.c
> b/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.c
> new file mode 100644
> index 000000000000..6137b1a0eb64
> --- /dev/null
> +++ b/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.c
> @@ -0,0 +1,293 @@
> +/** @file
> +  VMGEXIT Support Library.
> +
> +  Copyright (c) 2019, Advanced Micro Devices, Inc. All rights
> + reserved.<BR>
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <Base.h>
> +#include <Uefi.h>
> +#include <Library/BaseMemoryLib.h>
> +#include <Register/Amd/Ghcb.h>
> +#include <Register/Amd/Msr.h>
> +
> +/**
> +  Check for VMGEXIT error
> +
> +  Check if the hypervisor has returned an error after completion of the
> + VMGEXIT  by examining the SwExitInfo1 field of the GHCB.
> +
> +  @param[in]  Ghcb       A pointer to the GHCB
> +
> +  @retval  0             VMGEXIT succeeded.
> +  @retval  Others        VMGEXIT processing did not succeed. Exception
> number to
> +                         be propagated.
> +
> +**/
> +STATIC
> +UINT64
> +VmgExitErrorCheck (
> +  IN GHCB                *Ghcb
> +  )
> +{
> +  GHCB_EVENT_INJECTION  Event;
> +  GHCB_EXIT_INFO        ExitInfo;
> +  UINT64                Status;
> +
> +  ExitInfo.Uint64 = Ghcb->SaveArea.SwExitInfo1;  ASSERT
> + ((ExitInfo.Elements.Lower32Bits == 0) ||
> +          (ExitInfo.Elements.Lower32Bits == 1));
> +
> +  Status = 0;
> +  if (ExitInfo.Elements.Lower32Bits == 0) {
> +    return Status;
> +  }
> +
> +  if (ExitInfo.Elements.Lower32Bits == 1) {
> +    ASSERT (Ghcb->SaveArea.SwExitInfo2 != 0);
> +
> +    // Check that the return event is valid
> +    Event.Uint64 = Ghcb->SaveArea.SwExitInfo2;
> +    if (Event.Elements.Valid &&
> +        Event.Elements.Type == GHCB_EVENT_INJECTION_TYPE_EXCEPTION) {
> +      switch (Event.Elements.Vector) {
> +      case GP_EXCEPTION:
> +      case UD_EXCEPTION:
> +        // Use returned event as return code
> +        Status = Event.Uint64;
> +      }
> +    }
> +  }
> +
> +  if (Status == 0) {
> +    GHCB_EVENT_INJECTION  Event;
> +
> +    Event.Uint64 = 0;
> +    Event.Elements.Vector = GP_EXCEPTION;
> +    Event.Elements.Type   = GHCB_EVENT_INJECTION_TYPE_EXCEPTION;
> +    Event.Elements.Valid  = 1;
> +
> +    Status = Event.Uint64;
> +  }
> +
> +  return Status;
> +}
> +
> +/**
> +  Perform VMGEXIT.
> +
> +  Sets the necessary fields of the GHCB, invokes the VMGEXIT
> + instruction and  then handles the return actions.
> +
> +  @param[in, out]  Ghcb       A pointer to the GHCB
> +  @param[in]       ExitCode   VMGEXIT code to be assigned to the SwExitCode
> +                              field of the GHCB.
> +  @param[in]       ExitInfo1  VMGEXIT information to be assigned to the
> +                              SwExitInfo1 field of the GHCB.
> +  @param[in]       ExitInfo2  VMGEXIT information to be assigned to the
> +                              SwExitInfo2 field of the GHCB.
> +
> +  @retval  0                  VMGEXIT succeeded.
> +  @retval  Others             VMGEXIT processing did not succeed. Exception
> +                              number to be propagated.
> +
> +**/
> +UINT64
> +EFIAPI
> +VmgExit (
> +  IN OUT GHCB                *Ghcb,
> +  IN     UINT64              ExitCode,
> +  IN     UINT64              ExitInfo1,
> +  IN     UINT64              ExitInfo2
> +  )
> +{
> +  Ghcb->SaveArea.SwExitCode = ExitCode;
> +  Ghcb->SaveArea.SwExitInfo1 = ExitInfo1;
> +  Ghcb->SaveArea.SwExitInfo2 = ExitInfo2;
> +
> +  //
> +  // Guest memory is used for the guest-hypervisor communication, so
> + fence  // the invocation of the VMGEXIT instruction to ensure GHCB
> + accesses are  // synchronized properly.
> +  //
> +  MemoryFence ();
> +  AsmVmgExit ();
> +  MemoryFence ();
> +
> +  return VmgExitErrorCheck (Ghcb);
> +}
> +
> +/**
> +  Perform pre-VMGEXIT initialization/preparation.
> +
> +  Performs the necessary steps in preparation for invoking VMGEXIT.
> + Must be  called before setting any fields within the GHCB.
> +
> +  @param[in, out]  Ghcb       A pointer to the GHCB
> +
> +**/
> +VOID
> +EFIAPI
> +VmgInit (
> +  IN OUT GHCB                *Ghcb
> +  )
> +{
> +  SetMem (&Ghcb->SaveArea, sizeof (Ghcb->SaveArea), 0); }
> +
> +/**
> +  Perform post-VMGEXIT cleanup.
> +
> +  Performs the necessary steps to cleanup after invoking VMGEXIT. Must
> + be  called after obtaining needed fields within the GHCB.
> +
> +  @param[in, out]  Ghcb       A pointer to the GHCB
> +
> +**/
> +VOID
> +EFIAPI
> +VmgDone (
> +  IN OUT GHCB                *Ghcb
> +  )
> +{
> +}
> +
> +/**
> +  Perform VMGEXIT MMIO read or write.
> +
> +  Performs the requested MMIO read or write using the VMGEXIT
> instruction.
> +
> +  For an MMIO read, the data that has been read during the VMGEXIT is
> + placed in  the SharedBuffer area of the GHCB. This is then copied to
> + the actual  destination buffer within the guest.
> +
> +  For an MMIO write, the data to be written is copied into the
> + SharedBuffer area  of the GHCB by the guest. This is then copied to
> + the actual destination buffer  by the hypervisor during the VMGEXIT.
> +
> +  @param[in, out]  MmioAddress  A pointer to the MMIO buffer to be
> read/written
> +  @param[in, out]  Buffer       A pointer to the buffer to hold the data thas
> +                                has been read or hold the data to be written
> +  @param[in]       Bytes        Number of bytes to read or write
> +  @param[in]       Write        If set, the request is for an MMIO write, else
> +                                it is an MMIO read.
> +
> +  @retval  0                    VMGEXIT succeeded.
> +  @retval  Others               VMGEXIT processing did not succeed. Exception
> +                                number to be propagated.
> +
> +**/
> +STATIC
> +UINT64
> +EFIAPI
> +VmgMmio (
> +  IN OUT UINT8               *MmioAddress,
> +  IN OUT UINT8               *Buffer,
> +  IN     UINTN               Bytes,
> +  IN     BOOLEAN             Write
> +  )
> +{
> +  UINT64                    MmioOp, ExitInfo1, ExitInfo2, Status;
> +  GHCB                      *Ghcb;
> +  MSR_SEV_ES_GHCB_REGISTER  Msr;
> +
> +  Msr.GhcbPhysicalAddress = AsmReadMsr64 (MSR_SEV_ES_GHCB);  Ghcb
> =
> + Msr.Ghcb;
> +
> +  //
> +  // This function is about to set fields in the GHCB. Do not execute
> + // anything that will cause a #VC before issuing the VmgExit(). Any
> + #VC  // will result in all GHCB settings being overwritten (this
> + means, e.g.,  // do not add DEBUG() statements).
> +  //
> +  VmgInit (Ghcb);
> +
> +  if (Write) {
> +    MmioOp = SvmExitMmioWrite;
> +  } else {
> +    MmioOp = SvmExitMmioRead;
> +  }
> +
> +  ExitInfo1 = (UINT64) (UINTN) MmioAddress;
> +  ExitInfo2 = Bytes;
> +
> +  if (Write) {
> +    CopyMem (Ghcb->SharedBuffer, Buffer, Bytes);  }
> +
> +  Ghcb->SaveArea.SwScratch = (UINT64) (UINTN) Ghcb->SharedBuffer;
> + Status = VmgExit (Ghcb, MmioOp, ExitInfo1, ExitInfo2);  if (Status !=
> + 0) {
> +    return Status;
> +  }
> +
> +  if (!Write) {
> +    CopyMem (Buffer, Ghcb->SharedBuffer, Bytes);  }
> +
> +  VmgDone (Ghcb);
> +
> +  return 0;
> +}
> +
> +/**
> +  Perform MMIO write of a buffer to a non-MMIO marked range.
> +
> +  Performs an MMIO write without taking a #VC. This is useful  for
> + Flash devices, which are marked read-only.
> +
> +  @param[in, out]  Dest       A pointer to the destination buffer
> +  @param[in]       Src        A pointer to the source data to be written
> +  @param[in]       Bytes      Number of bytes to write
> +
> +**/
> +VOID
> +EFIAPI
> +VmgMmioWrite (
> +  IN OUT UINT8               *Dest,
> +  IN     UINT8               *Src,
> +  IN     UINTN                Bytes
> +  )
> +{
> +  VmgMmio (Dest, Src, Bytes, TRUE);
> +}
> +
> +/**
> +  Issue the GHCB set AP Jump Table VMGEXIT.
> +
> +  Performs a VMGEXIT using the GHCB AP Jump Table exit code to save the
> + AP Jump Table address with the hypervisor for retrieval at a later time.
> +
> +  @param[in]  Address  Physical address of the AP Jump Table
> +
> +  @retval  0           VMGEXIT succeeded.
> +  @retval  Others      VMGEXIT processing did not succeed. Exception
> +                       number to be propagated.
> +
> +**/
> +UINT64
> +EFIAPI
> +VmgExitSetAPJumpTable (
> +  IN EFI_PHYSICAL_ADDRESS  Address
> +  )
> +{
> +  UINT64                    ExitInfo1, ExitInfo2, Status;
> +  GHCB                      *Ghcb;
> +  MSR_SEV_ES_GHCB_REGISTER  Msr;
> +
> +  Msr.GhcbPhysicalAddress = AsmReadMsr64 (MSR_SEV_ES_GHCB);  Ghcb
> =
> + Msr.Ghcb;
> +
> +  VmgInit (Ghcb);
> +
> +  ExitInfo1 = 0;
> +  ExitInfo2 = (UINT64) (UINTN) Address;
> +
> +  Status = VmgExit (Ghcb, SvmExitApJumpTable, ExitInfo1, ExitInfo2);
> +
> +  VmgDone (Ghcb);
> +
> +  return Status;
> +}
> +
> diff --git a/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.uni
> b/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.uni
> new file mode 100644
> index 000000000000..e8656aae4726
> --- /dev/null
> +++ b/UefiCpuPkg/Library/VmgExitLib/VmgExitLib.uni
> @@ -0,0 +1,15 @@
> +// /** @file
> +// VMGEXIT support library instance.
> +//
> +// VMGEXIT support library instance.
> +//
> +// Copyright (c) 2019, Advanced Micro Devices, Inc. All rights
> +reserved.<BR> // SPDX-License-Identifier: BSD-2-Clause-Patent // // **/
> +
> +
> +#string STR_MODULE_ABSTRACT             #language en-US "VMGEXIT
> Support Library."
> +
> +#string STR_MODULE_DESCRIPTION          #language en-US "VMGEXIT
> Support Library."
> +
> --
> 2.17.1


  reply	other threads:[~2020-05-09  1:06 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-22 17:41 [PATCH v7 00/43] SEV-ES guest support Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 01/43] MdeModulePkg: Create PCDs to be used in support of SEV-ES Lendacky, Thomas
2020-05-02  8:19   ` [edk2-devel] " Dong, Eric
2020-05-04 13:34     ` Lendacky, Thomas
2020-05-04 13:47       ` Dong, Eric
2020-05-04 16:41         ` Lendacky, Thomas
2020-05-05 15:29           ` Laszlo Ersek
2020-05-06  1:53             ` Dong, Eric
2020-05-06 13:19               ` Lendacky, Thomas
2020-05-06 15:06                 ` Dong, Eric
2020-05-06 18:33                   ` Lendacky, Thomas
2020-05-07  2:28                     ` Dong, Eric
2020-05-07  2:38                     ` Dong, Eric
2020-05-08 18:58                       ` Lendacky, Thomas
2020-05-06 16:24                 ` Laszlo Ersek
2020-04-22 17:41 ` [PATCH v7 02/43] UefiCpuPkg: Create PCD " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 03/43] MdePkg: Add the MSR definition for the GHCB register Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 04/43] MdePkg: Add a structure definition for the GHCB Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 05/43] MdeModulePkg/DxeIplPeim: Support GHCB pages when creating page tables Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 06/43] MdePkg/BaseLib: Add support for the XGETBV instruction Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 07/43] MdePkg/BaseLib: Add support for the VMGEXIT instruction Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 08/43] UefiCpuPkg: Implement library support for VMGEXIT Lendacky, Thomas
2020-05-09  1:06   ` Dong, Eric [this message]
2020-05-09 14:08     ` Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 09/43] OvmfPkg: Prepare OvmfPkg to use the VmgExitLib library Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 10/43] UefiPayloadPkg: Prepare UefiPayloadPkg " Lendacky, Thomas
2020-04-22 17:46   ` [edk2-devel] " Guo Dong
2020-04-22 17:41 ` [PATCH v7 11/43] UefiCpuPkg/CpuExceptionHandler: Add base support for the #VC exception Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 12/43] UefiCpuPkg/CpuExceptionHandler: Add support for IOIO_PROT NAE events Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 13/43] UefiCpuPkg/CpuExceptionHandler: Support string IO " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 14/43] UefiCpuPkg/CpuExceptionHandler: Add support for CPUID " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 15/43] UefiCpuPkg/CpuExceptionHandler: Add support for MSR_PROT " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 16/43] UefiCpuPkg/CpuExceptionHandler: Add support for NPF NAE events (MMIO) Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 17/43] UefiCpuPkg/CpuExceptionHandler: Add support for WBINVD NAE events Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 18/43] UefiCpuPkg/CpuExceptionHandler: Add support for RDTSC " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 19/43] UefiCpuPkg/CpuExceptionHandler: Add support for RDPMC " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 20/43] UefiCpuPkg/CpuExceptionHandler: Add support for INVD " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 21/43] UefiCpuPkg/CpuExceptionHandler: Add support for VMMCALL " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 22/43] UefiCpuPkg/CpuExceptionHandler: Add support for RDTSCP " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 23/43] UefiCpuPkg/CpuExceptionHandler: Add support for MONITOR/MONITORX " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 24/43] UefiCpuPkg/CpuExceptionHandler: Add support for MWAIT/MWAITX " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 25/43] UefiCpuPkg/CpuExceptionHandler: Add support for DR7 Read/Write " Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 26/43] OvmfPkg/MemEncryptSevLib: Add an SEV-ES guest indicator function Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 27/43] OvmfPkg: Add support to perform SEV-ES initialization Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 28/43] OvmfPkg: Create a GHCB page for use during Sec phase Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 29/43] OvmfPkg/PlatformPei: Reserve GHCB-related areas if S3 is supported Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 30/43] OvmfPkg: Create GHCB pages for use during Pei and Dxe phase Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 31/43] OvmfPkg/PlatformPei: Move early GDT into ram when SEV-ES is enabled Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 32/43] UefiCpuPkg: Create an SEV-ES workarea PCD Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 33/43] OvmfPkg: Reserve a page in memory for the SEV-ES usage Lendacky, Thomas
2020-04-30 18:58   ` [edk2-devel] " Laszlo Ersek
2020-04-30 21:12     ` Lendacky, Thomas
2020-04-30 22:09       ` Lendacky, Thomas
2020-05-05 15:25         ` Laszlo Ersek
2020-05-05 15:15       ` Laszlo Ersek
2020-04-22 17:41 ` [PATCH v7 34/43] OvmfPkg/ResetVector: Add support for a 32-bit SEV check Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 35/43] OvmfPkg/Sec: Add #VC exception handling for Sec phase Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 36/43] OvmfPkg/Sec: Enable cache early to speed up booting Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 37/43] OvmfPkg/QemuFlashFvbServicesRuntimeDxe: Bypass flash detection with SEV-ES is enabled Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 38/43] UefiCpuPkg: Add a 16-bit protected mode code segment descriptor Lendacky, Thomas
2020-04-22 17:41 ` [PATCH v7 39/43] UefiCpuPkg/MpInitLib: Add CPU MP data flag to indicate if SEV-ES is enabled Lendacky, Thomas
2020-04-23  4:33 ` [PATCH v7 40/43] UefiCpuPkg: Allow AP booting under SEV-ES Lendacky, Thomas
2020-04-23  4:33 ` [PATCH v7 41/43] OvmfPkg: Use the SEV-ES work area for the SEV-ES AP reset vector Lendacky, Thomas
2020-04-23  4:33 ` [PATCH v7 42/43] OvmfPkg: Move the GHCB allocations into reserved memory Lendacky, Thomas
2020-04-23  4:33 ` [PATCH v7 43/43] UefiCpuPkg/MpInitLib: Prepare SEV-ES guest APs for OS use Lendacky, Thomas
2020-05-08 19:16 ` [PATCH v7 00/43] SEV-ES guest support Lendacky, Thomas
2020-05-09  6:44   ` Ni, Ray
2020-05-09 14:34     ` Lendacky, Thomas
2020-05-09 19:09       ` [edk2-devel] " Andrew Fish
2020-05-11  5:24         ` Ni, Ray
2020-05-12 14:59           ` Lendacky, Thomas
2020-05-14 13:10             ` Ni, Ray
2020-05-14 17:59               ` Lendacky, Thomas
2020-05-15  5:47                 ` Ni, Ray
2020-05-15 14:30                   ` Lendacky, Thomas
2020-05-18 20:44                     ` Brian J. Johnson
2020-05-20  1:57                       ` 回复: " Fan Jeff
2020-05-12 16:49         ` Lendacky, Thomas
2020-05-12 17:44           ` Lendacky, Thomas
2020-05-12 20:10             ` Lendacky, Thomas
2020-05-11 15:37   ` Laszlo Ersek

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-list 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=DM6PR11MB3274D9460435FF941F7F47E1FEA30@DM6PR11MB3274.namprd11.prod.outlook.com \
    --to=devel@edk2.groups.io \
    /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