> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> Lendacky, Thomas
> Sent: Friday, June 19, 2020 9:51 PM
> To: devel@edk2.groups.io; Dong, Eric <eric.d...@intel.com>
> Cc: Brijesh Singh <brijesh.si...@amd.com>; Ard Biesheuvel
> <ard.biesheu...@arm.com>; Justen, Jordan L <jordan.l.jus...@intel.com>;
> Laszlo Ersek <ler...@redhat.com>; Gao, Liming <liming....@intel.com>;
> Kinney, Michael D <michael.d.kin...@intel.com>; Ni, Ray <ray...@intel.com>
> Subject: Re: [edk2-devel] [PATCH v9 08/46] UefiCpuPkg: Implement library
> support for VMGEXIT
> 
> On 6/19/20 2:47 AM, Dong, Eric via groups.io wrote:
> >
> >
> >> -----Original Message-----
> >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> >> Lendacky, Thomas
> >> Sent: Thursday, June 18, 2020 10:09 PM
> >> To: Dong, Eric <eric.d...@intel.com>; devel@edk2.groups.io
> >> Cc: Brijesh Singh <brijesh.si...@amd.com>; Ard Biesheuvel
> >> <ard.biesheu...@arm.com>; Justen, Jordan L
> >> <jordan.l.jus...@intel.com>; Laszlo Ersek <ler...@redhat.com>; Gao,
> >> Liming <liming....@intel.com>; Kinney, Michael D
> >> <michael.d.kin...@intel.com>; Ni, Ray <ray...@intel.com>
> >> Subject: Re: [edk2-devel] [PATCH v9 08/46] UefiCpuPkg: Implement
> >> library support for VMGEXIT
> >>
> >> On 6/18/20 2:23 AM, Dong, Eric wrote:
> >>> Hi Tom,
> >>>
> >>> When use VS2015 to build this code, it reports below error. Please
> >>> help to
> >> fix it.
> >>>
> >>> k:\edk2\UefiCpuPkg\Include\Library/VmgExitLib.h: error C2220:
> >>> warning treated as error - no 'object' file generated
> >>> k:\edk2\UefiCpuPkg\Include\Library/VmgExitLib.h: warning C4335: Mac
> >>> file format detected: please convert the source file to either DOS
> >>> or UNIX format
> >>
> >> That is strange...  I didn't see this when I ran through the CI. When
> >> I do a file command against the file it reports:
> >>
> >> UefiCpuPkg/Include/Library/VmgExitLib.h: C source, ASCII text, with
> >> CRLF line terminators
> >>
> >> I'll investigate this and try and figure out what's going on, but if
> >> anyone else has some ideas, please let me know.
> >
> > Hi Tom,
> >
> > I met this error again when I trig below patch from AMD again for CPU
> change.
> > "UefiCpuPkg: Move StandardSignatureIsAuthenticAMD to BaseUefiCpuLib"
> 
> Hmmm... I think we could be running into issues with sending patches
> through our mail servers. Let me send you the patch series directly using
> some changes I made to my git config file to see if that helps. Would that be
> ok?

Yes, please do it.

Thanks,
Eric
> 
> Thanks,
> Tom
> 
> >
> > I'm not sure whether this is patch issue, or our internal test sever issue. 
> > I
> have reported this error to our internal team to check also.
> > Please check it from your side and make sure no error from your side. I will
> update the status from my side when I get the update.
> >
> > Thanks,
> > Eric
> >
> >>
> >> Thanks,
> >> Tom
> >>
> >>>
> >>> Thanks,
> >>> Eric
> >>>
> >>>> -----Original Message-----
> >>>> From: Tom Lendacky <thomas.lenda...@amd.com>
> >>>> Sent: Friday, June 5, 2020 9:27 PM
> >>>> To: devel@edk2.groups.io
> >>>> Cc: Brijesh Singh <brijesh.si...@amd.com>; Ard Biesheuvel
> >>>> <ard.biesheu...@arm.com>; Dong, Eric <eric.d...@intel.com>; Justen,
> >>>> Jordan L <jordan.l.jus...@intel.com>; Laszlo Ersek
> >>>> <ler...@redhat.com>; Gao, Liming <liming....@intel.com>; Kinney,
> >>>> Michael D <michael.d.kin...@intel.com>; Ni, Ray <ray...@intel.com>
> >>>> Subject: [PATCH v9 08/46] UefiCpuPkg: Implement library support for
> >>>> VMGEXIT
> >>>>
> >>>> BZ:
> >>>>
> >>
> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbug
> >>>>
> >>
> zilla.tianocore.org%2Fshow_bug.cgi%3Fid%3D2198&amp;data=02%7C01%7Ct
> >> ho
> >>>>
> >>
> mas.lendacky%40amd.com%7Cd75554da4959407c967608d8135877be%7C3dd
> >> 8961fe
> >>>>
> >>
> 4884e608e11a82d994e183d%7C0%7C0%7C637280617975250842&amp;sdata=
> >> fBlK2B
> >>>>
> FkRdAS5EWcM8YShf1ZswfRN%2F41L7XeUsb4ZCs%3D&amp;reserved=0
> >>>>
> >>>> To support handling #VC exceptions and issuing VMGEXIT
> >>>> instructions, create a library with functions that can be used to
> >>>> perform these #VC/VMGEXIT related operations. This includes
> functions for:
> >>>>     - Handling #VC exceptions
> >>>>     - Preparing for and issuing a VMGEXIT
> >>>>     - Performing MMIO-related write operations to support flash
> emulation
> >>>>     - Performing AP related boot opeations
> >>>>
> >>>> The base functions in this driver will not do anything and will
> >>>> return an error if a return value is required. It is expected that
> >>>> other packages (like OvmfPkg) will create a version of the library
> >>>> to fully support an SEV-ES guest.
> >>>>
> >>>> Cc: Eric Dong <eric.d...@intel.com>
> >>>> Cc: Ray Ni <ray...@intel.com>
> >>>> Cc: Laszlo Ersek <ler...@redhat.com>
> >>>> Signed-off-by: Tom Lendacky <thomas.lenda...@amd.com>
> >>>> ---
> >>>>    UefiCpuPkg/UefiCpuPkg.dec                            |   3 +
> >>>>    UefiCpuPkg/UefiCpuPkg.dsc                            |   2 +
> >>>>    UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf |  27 +++++
> >>>>    UefiCpuPkg/Include/Library/VmgExitLib.h              | 103
> >> +++++++++++++++++
> >>>>    UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.c   | 121
> >>>> ++++++++++++++++++++
> >>>>    UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.uni |  15 +++
> >>>>    6 files changed, 271 insertions(+)
> >>>>
> >>>> 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 afa304128221..f0e58b90ff0a 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/Base
> >>>> PeCoffExtraActionLib|P
> >>>> eCoffExtraActionLibNull.inf
> >>>>
> >>>>
> >>>>
> >>
> TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/Tp
> >>>> mMeasurementLibNull.inf
> >>>>
> >>>> +  VmgExitLib|UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> >>>>
> >>>>
> >>>>
> >>>>    [LibraryClasses.common.SEC]
> >>>>
> >>>>
> >>>>
> >>
> PlatformSecLib|UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNu
> >>>> PlatformSecLib|ll.i
> >>>> nf
> >>>>
> >>>> @@ -143,6 +144,7 @@ [Components.IA32, Components.X64]
> >>>>
> >>>>
> >>
> UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLib
> >>>> Null.inf
> >>>>
> >>>>      UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLib.inf
> >>>>
> >>>>
> UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLibStm.inf
> >>>>
> >>>> +  UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> >>>>
> >>>>      UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf
> >>>>
> >>>>      UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf
> >>>>
> >>>>      UefiCpuPkg/SecCore/SecCore.inf
> >>>>
> >>>> diff --git a/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> >>>> b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> >>>> new file mode 100644
> >>>> index 000000000000..d8770a21c355
> >>>> --- /dev/null
> >>>> +++ b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> >>>> @@ -0,0 +1,27 @@
> >>>> +## @file
> >>>>
> >>>> +#  VMGEXIT Support Library.
> >>>>
> >>>> +#
> >>>>
> >>>> +#  Copyright (C) 2020, Advanced Micro Devices, Inc. All rights
> >>>> +reserved.<BR>
> >>>>
> >>>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
> >>>>
> >>>> +#
> >>>>
> >>>> +##
> >>>>
> >>>> +
> >>>>
> >>>> +[Defines]
> >>>>
> >>>> +  INF_VERSION                    = 0x00010005
> >>>>
> >>>> +  BASE_NAME                      = VmgExitLibNull
> >>>>
> >>>> +  MODULE_UNI_FILE                = VmgExitLibNull.uni
> >>>>
> >>>> +  FILE_GUID                      = 3cd7368f-ef9b-4a9b-9571-2ed93813677e
> >>>>
> >>>> +  MODULE_TYPE                    = BASE
> >>>>
> >>>> +  VERSION_STRING                 = 1.0
> >>>>
> >>>> +  LIBRARY_CLASS                  = VmgExitLib
> >>>>
> >>>> +
> >>>>
> >>>> +[Sources.common]
> >>>>
> >>>> +  VmgExitLibNull.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..0b2f39026a4a
> >>>> --- /dev/null
> >>>> +++ b/UefiCpuPkg/Include/Library/VmgExitLib.h
> >>>> @@ -0,0 +1,103 @@
> >>>> +/** @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 and to handle #VC exceptions.
> >>>>
> >>>> +
> >>>>
> >>>> +  Copyright (C) 2020, 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 <Protocol/DebugSupport.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.
> >>>>
> >>>> +
> >>>>
> >>>> +  @return  0                  VMGEXIT succeeded.
> >>>>
> >>>> +  @return  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
> >>>>
> >>>> +  );
> >>>>
> >>>> +
> >>>>
> >>>> +/**
> >>>>
> >>>> +  Handle a #VC exception.
> >>>>
> >>>> +
> >>>>
> >>>> +  Performs the necessary processing to handle a #VC exception.
> >>>>
> >>>> +
> >>>>
> >>>> +  The base library function returns an error equal to
> >>>> + VC_EXCEPTION,
> >>>>
> >>>> +  to be propagated to the standard exception handling stack.
> >>>>
> >>>> +
> >>>>
> >>>> +  @param[in, out]  ExceptionType  Pointer to an EFI_EXCEPTION_TYPE
> >>>> + to be
> >>>> set
> >>>>
> >>>> +                                  as value to use on error.
> >>>>
> >>>> +  @param[in, out]  SystemContext  Pointer to EFI_SYSTEM_CONTEXT
> >>>>
> >>>> +
> >>>>
> >>>> +  @retval  EFI_SUCCESS            Exception handled
> >>>>
> >>>> +  @retval  EFI_UNSUPPORTED        #VC not supported, (new)
> exception
> >>>> value to
> >>>>
> >>>> +                                  propagate provided
> >>>>
> >>>> +  @retval  EFI_PROTOCOL_ERROR     #VC handling failed, (new)
> exception
> >>>> value to
> >>>>
> >>>> +                                  propagate provided
> >>>>
> >>>> +
> >>>>
> >>>> +**/
> >>>>
> >>>> +EFI_STATUS
> >>>>
> >>>> +EFIAPI
> >>>>
> >>>> +VmgExitHandleVc (
> >>>>
> >>>> +  IN OUT EFI_EXCEPTION_TYPE  *ExceptionType,
> >>>>
> >>>> +  IN OUT EFI_SYSTEM_CONTEXT  SystemContext
> >>>>
> >>>> +  );
> >>>>
> >>>> +
> >>>>
> >>>> +#endif
> >>>>
> >>>> diff --git a/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.c
> >>>> b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.c
> >>>> new file mode 100644
> >>>> index 000000000000..30a239df298e
> >>>> --- /dev/null
> >>>> +++ b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.c
> >>>> @@ -0,0 +1,121 @@
> >>>> +/** @file
> >>>>
> >>>> +  VMGEXIT Base Support Library.
> >>>>
> >>>> +
> >>>>
> >>>> +  Copyright (C) 2020, Advanced Micro Devices, Inc. All rights
> >>>> + reserved.<BR>
> >>>>
> >>>> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> >>>>
> >>>> +
> >>>>
> >>>> +**/
> >>>>
> >>>> +
> >>>>
> >>>> +#include <Base.h>
> >>>>
> >>>> +#include <Uefi.h>
> >>>>
> >>>> +#include <Library/VmgExitLib.h>
> >>>>
> >>>> +
> >>>>
> >>>> +/**
> >>>>
> >>>> +  Perform VMGEXIT.
> >>>>
> >>>> +
> >>>>
> >>>> +  Sets the necessary fields of the GHCB, invokes the VMGEXIT
> >>>> + instruction
> >>>> and
> >>>>
> >>>> +  then handles the return actions.
> >>>>
> >>>> +
> >>>>
> >>>> +  The base library function returns an error in the form of a
> >>>>
> >>>> +  GHCB_EVENT_INJECTION representing a GP_EXCEPTION.
> >>>>
> >>>> +
> >>>>
> >>>> +  @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.
> >>>>
> >>>> +
> >>>>
> >>>> +  @return  0                  VMGEXIT succeeded.
> >>>>
> >>>> +  @return  Others             VMGEXIT processing did not succeed.
> Exception
> >>>>
> >>>> +                              event to be propagated.
> >>>>
> >>>> +
> >>>>
> >>>> +**/
> >>>>
> >>>> +UINT64
> >>>>
> >>>> +EFIAPI
> >>>>
> >>>> +VmgExit (
> >>>>
> >>>> +  IN OUT GHCB                *Ghcb,
> >>>>
> >>>> +  IN     UINT64              ExitCode,
> >>>>
> >>>> +  IN     UINT64              ExitInfo1,
> >>>>
> >>>> +  IN     UINT64              ExitInfo2
> >>>>
> >>>> +  )
> >>>>
> >>>> +{
> >>>>
> >>>> +  GHCB_EVENT_INJECTION  Event;
> >>>>
> >>>> +
> >>>>
> >>>> +  Event.Uint64 = 0;
> >>>>
> >>>> +  Event.Elements.Vector = GP_EXCEPTION;
> >>>>
> >>>> +  Event.Elements.Type   = GHCB_EVENT_INJECTION_TYPE_EXCEPTION;
> >>>>
> >>>> +  Event.Elements.Valid  = 1;
> >>>>
> >>>> +
> >>>>
> >>>> +  return Event.Uint64;
> >>>>
> >>>> +}
> >>>>
> >>>> +
> >>>>
> >>>> +/**
> >>>>
> >>>> +  Perform pre-VMGEXIT initialization/preparation.
> >>>>
> >>>> +
> >>>>
> >>>> +  Performs the necessary steps in preparation for invoking VMGEXIT.
> >>>> + Must
> >>>> be
> >>>>
> >>>> +  called before setting any fields within the GHCB.
> >>>>
> >>>> +
> >>>>
> >>>> +  The base library function does nothing.
> >>>>
> >>>> +
> >>>>
> >>>> +  @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.
> >>>>
> >>>> +
> >>>>
> >>>> +  The base library function does nothing.
> >>>>
> >>>> +
> >>>>
> >>>> +  @param[in, out]  Ghcb       A pointer to the GHCB
> >>>>
> >>>> +
> >>>>
> >>>> +**/
> >>>>
> >>>> +VOID
> >>>>
> >>>> +EFIAPI
> >>>>
> >>>> +VmgDone (
> >>>>
> >>>> +  IN OUT GHCB                *Ghcb
> >>>>
> >>>> +  )
> >>>>
> >>>> +{
> >>>>
> >>>> +}
> >>>>
> >>>> +
> >>>>
> >>>> +/**
> >>>>
> >>>> +  Handle a #VC exception.
> >>>>
> >>>> +
> >>>>
> >>>> +  Performs the necessary processing to handle a #VC exception.
> >>>>
> >>>> +
> >>>>
> >>>> +  The base library function returns an error equal to
> >>>> + VC_EXCEPTION,
> >>>>
> >>>> +  to be propagated to the standard exception handling stack.
> >>>>
> >>>> +
> >>>>
> >>>> +  @param[in, out]  ExceptionType  Pointer to an EFI_EXCEPTION_TYPE
> >>>> + to be
> >>>> set
> >>>>
> >>>> +                                  as value to use on error.
> >>>>
> >>>> +  @param[in, out]  SystemContext  Pointer to EFI_SYSTEM_CONTEXT
> >>>>
> >>>> +
> >>>>
> >>>> +  @retval  EFI_SUCCESS            Exception handled
> >>>>
> >>>> +  @retval  EFI_UNSUPPORTED        #VC not supported, (new)
> exception
> >>>> value to
> >>>>
> >>>> +                                  propagate provided
> >>>>
> >>>> +  @retval  EFI_PROTOCOL_ERROR     #VC handling failed, (new)
> exception
> >>>> value to
> >>>>
> >>>> +                                  propagate provided
> >>>>
> >>>> +
> >>>>
> >>>> +**/
> >>>>
> >>>> +EFI_STATUS
> >>>>
> >>>> +EFIAPI
> >>>>
> >>>> +VmgExitHandleVc (
> >>>>
> >>>> +  IN OUT EFI_EXCEPTION_TYPE  *ExceptionType,
> >>>>
> >>>> +  IN OUT EFI_SYSTEM_CONTEXT  SystemContext
> >>>>
> >>>> +  )
> >>>>
> >>>> +{
> >>>>
> >>>> +  *ExceptionType = VC_EXCEPTION;
> >>>>
> >>>> +
> >>>>
> >>>> +  return EFI_UNSUPPORTED;
> >>>>
> >>>> +}
> >>>>
> >>>> diff --git a/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.uni
> >>>> b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.uni
> >>>> new file mode 100644
> >>>> index 000000000000..8639bc0e8ce9
> >>>> --- /dev/null
> >>>> +++ b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.uni
> >>>> @@ -0,0 +1,15 @@
> >>>> +// /** @file
> >>>>
> >>>> +// VMGEXIT support library instance.
> >>>>
> >>>> +//
> >>>>
> >>>> +// VMGEXIT support library instance.
> >>>>
> >>>> +//
> >>>>
> >>>> +// Copyright (C) 2020, Advanced Micro Devices, Inc. All rights
> >>>> +reserved.<BR>
> >>>>
> >>>> +// SPDX-License-Identifier: BSD-2-Clause-Patent
> >>>>
> >>>> +//
> >>>>
> >>>> +// **/
> >>>>
> >>>> +
> >>>>
> >>>> +
> >>>>
> >>>> +#string STR_MODULE_ABSTRACT             #language en-US "VMGEXIT
> >> support
> >>>> NULL library instance"
> >>>>
> >>>> +
> >>>>
> >>>> +#string STR_MODULE_DESCRIPTION          #language en-US "VMGEXIT
> >>>> support NULL library instance."
> >>>>
> >>>> +
> >>>>
> >>>> --
> >>>> 2.27.0
> >>>
> >>
> >>
> >
> >
> >
> 
> 

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#61524): https://edk2.groups.io/g/devel/message/61524
Mute This Topic: https://groups.io/mt/74692413/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to