[edk2-devel] [PATCH V6 04/42] UefiCpuPkg: Extend VmgExitLibNull to handle #VE exception

Min Xu min.m.xu at intel.com
Wed Feb 23 02:00:57 UTC 2022


Hi, Ray & Eric
I am doing the TDVF upstreaming and this commit is in UefiCpuPkg. You're the maintainer of UefiCpuPkg. 
Your comments to this patch is great helpful.
The complete code is at: https://github.com/mxu9/edk2/tree/tdvf_wave2.v6

Thanks
Min

> 
> RFC: https://bugzilla.tianocore.org/show_bug.cgi?id=3429
> 
> VmgExitLib performs the necessary processing to handle a #VC exception.
> VmgExitLibNull is a NULL instance of VmgExitLib which provides a default
> limited interface. In this commit VmgExitLibNull is extended to handle a #VE
> exception with a default limited interface. A full feature version of #VE
> handler will be created later.
> 
> Cc: Brijesh Singh <brijesh.singh at amd.com>
> Cc: Erdem Aktas <erdemaktas at google.com>
> Cc: James Bottomley <jejb at linux.ibm.com>
> Cc: Jiewen Yao <jiewen.yao at intel.com>
> Cc: Tom Lendacky <thomas.lendacky at amd.com>
> Cc: Eric Dong <eric.dong at intel.com>
> Cc: Ray Ni <ray.ni at intel.com>
> Cc: Rahul Kumar <rahul1.kumar at intel.com>
> Cc: Gerd Hoffmann <kraxel at redhat.com>
> Acked-by: Gerd Hoffmann <kraxel at redhat.com>
> Signed-off-by: Min Xu <min.m.xu at intel.com>
> ---
>  UefiCpuPkg/Include/Library/VmgExitLib.h       | 28 ++++++++++++++
>  .../Library/VmgExitLibNull/VmTdExitNull.c     | 38 +++++++++++++++++++
>  .../Library/VmgExitLibNull/VmgExitLibNull.inf |  1 +
>  3 files changed, 67 insertions(+)
>  create mode 100644 UefiCpuPkg/Library/VmgExitLibNull/VmTdExitNull.c
> 
> diff --git a/UefiCpuPkg/Include/Library/VmgExitLib.h
> b/UefiCpuPkg/Include/Library/VmgExitLib.h
> index ebda1c3d907c..f9f911099a7b 100644
> --- a/UefiCpuPkg/Include/Library/VmgExitLib.h
> +++ b/UefiCpuPkg/Include/Library/VmgExitLib.h
> @@ -15,6 +15,8 @@
>  #include <Protocol/DebugSupport.h>
>  #include <Register/Amd/Ghcb.h>
> 
> +#define VE_EXCEPTION  20
> +
>  /**
>    Perform VMGEXIT.
> 
> @@ -142,4 +144,30 @@ VmgExitHandleVc (
>    IN OUT EFI_SYSTEM_CONTEXT  SystemContext
>    );
> 
> +/**
> +  Handle a #VE exception.
> +
> +  Performs the necessary processing to handle a #VE exception.
> +
> +  The base library function returns an error equal to VE_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        #VE not supported, (new) exception value
> to
> +                                  propagate provided
> +  @retval  EFI_PROTOCOL_ERROR     #VE handling failed, (new) exception
> value to
> +                                  propagate provided
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +VmTdExitHandleVe (
> +  IN OUT EFI_EXCEPTION_TYPE  *ExceptionType,
> +  IN OUT EFI_SYSTEM_CONTEXT  SystemContext
> +  );
> +
>  #endif
> diff --git a/UefiCpuPkg/Library/VmgExitLibNull/VmTdExitNull.c
> b/UefiCpuPkg/Library/VmgExitLibNull/VmTdExitNull.c
> new file mode 100644
> index 000000000000..6a4e8087cb89
> --- /dev/null
> +++ b/UefiCpuPkg/Library/VmgExitLibNull/VmTdExitNull.c
> @@ -0,0 +1,38 @@
> +/** @file
> +
> +  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
> +
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +#include <Base.h>
> +#include <Uefi.h>
> +#include <Library/VmgExitLib.h>
> +
> +/**
> +  Handle a #VE exception.
> +
> +  Performs the necessary processing to handle a #VE exception.
> +
> +  @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        #VE not supported, (new) exception value
> to
> +                                  propagate provided
> +  @retval  EFI_PROTOCOL_ERROR     #VE handling failed, (new) exception
> value to
> +                                  propagate provided
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +VmTdExitHandleVe (
> +  IN OUT EFI_EXCEPTION_TYPE  *ExceptionType,
> +  IN OUT EFI_SYSTEM_CONTEXT  SystemContext
> +  )
> +{
> +  *ExceptionType = VE_EXCEPTION;
> +
> +  return EFI_UNSUPPORTED;
> +}
> diff --git a/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> index d8770a21c355..4aab601939ff 100644
> --- a/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> +++ b/UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.inf
> @@ -17,6 +17,7 @@
> 
>  [Sources.common]
>    VmgExitLibNull.c
> +  VmTdExitNull.c
> 
>  [Packages]
>    MdePkg/MdePkg.dec
> --
> 2.29.2.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86875): https://edk2.groups.io/g/devel/message/86875
Mute This Topic: https://groups.io/mt/89252025/1813853
Mute #ve:https://edk2.groups.io/g/devel/mutehashtag/ve
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list