2 Public header file for the VMGEXIT Support library class.
4 This library class defines some routines used when invoking the VMGEXIT
5 instruction in support of SEV-ES and to handle #VC exceptions.
7 Copyright (C) 2020, Advanced Micro Devices, Inc. All rights reserved.<BR>
8 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #ifndef __VMG_EXIT_LIB_H__
13 #define __VMG_EXIT_LIB_H__
15 #include <Protocol/DebugSupport.h>
16 #include <Register/Amd/Ghcb.h>
22 Sets the necessary fields of the GHCB, invokes the VMGEXIT instruction and
23 then handles the return actions.
25 @param[in, out] Ghcb A pointer to the GHCB
26 @param[in] ExitCode VMGEXIT code to be assigned to the SwExitCode
28 @param[in] ExitInfo1 VMGEXIT information to be assigned to the
29 SwExitInfo1 field of the GHCB.
30 @param[in] ExitInfo2 VMGEXIT information to be assigned to the
31 SwExitInfo2 field of the GHCB.
33 @retval 0 VMGEXIT succeeded.
34 @return Exception number to be propagated, VMGEXIT
35 processing did not succeed.
48 Perform pre-VMGEXIT initialization/preparation.
50 Performs the necessary steps in preparation for invoking VMGEXIT. Must be
51 called before setting any fields within the GHCB.
53 @param[in, out] Ghcb A pointer to the GHCB
63 Perform post-VMGEXIT cleanup.
65 Performs the necessary steps to cleanup after invoking VMGEXIT. Must be
66 called after obtaining needed fields within the GHCB.
68 @param[in, out] Ghcb A pointer to the GHCB
78 Handle a #VC exception.
80 Performs the necessary processing to handle a #VC exception.
82 The base library function returns an error equal to VC_EXCEPTION,
83 to be propagated to the standard exception handling stack.
85 @param[in, out] ExceptionType Pointer to an EFI_EXCEPTION_TYPE to be set
86 as value to use on error.
87 @param[in, out] SystemContext Pointer to EFI_SYSTEM_CONTEXT
89 @retval EFI_SUCCESS Exception handled
90 @retval EFI_UNSUPPORTED #VC not supported, (new) exception value to
92 @retval EFI_PROTOCOL_ERROR #VC handling failed, (new) exception value to
99 IN OUT EFI_EXCEPTION_TYPE
*ExceptionType
,
100 IN OUT EFI_SYSTEM_CONTEXT SystemContext