[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