/** @file File defines the Sec routines for the AMD SEV Copyright (c) 2021, Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _AMD_SEV_SEC_INTERNAL_H__ #define _AMD_SEV_SEC_INTERNAL_H__ /** Handle an SEV-ES/GHCB protocol check failure. Notify the hypervisor using the VMGEXIT instruction that the SEV-ES guest wishes to be terminated. @param[in] ReasonCode Reason code to provide to the hypervisor for the termination request. **/ VOID SevEsProtocolFailure ( IN UINT8 ReasonCode ); /** Validate the SEV-ES/GHCB protocol level. Verify that the level of SEV-ES/GHCB protocol supported by the hypervisor and the guest intersect. If they don't intersect, request termination. **/ VOID SevEsProtocolCheck ( VOID ); /** Determine if the SEV is active. During the early booting, GuestType is set in the work area. Verify that it is an SEV guest. @retval TRUE SEV is enabled @retval FALSE SEV is not enabled **/ BOOLEAN IsSevGuest ( VOID ); /** Determine if SEV-ES is active. During early booting, SEV-ES support code will set a flag to indicate that SEV-ES is enabled. Return the value of this flag as an indicator that SEV-ES is enabled. @retval TRUE SEV-ES is enabled @retval FALSE SEV-ES is not enabled **/ BOOLEAN SevEsIsEnabled ( VOID ); /** Validate System RAM used for decompressing the PEI and DXE firmware volumes when SEV-SNP is active. The PCDs SecValidatedStart and SecValidatedEnd are set in OvmfPkg/Include/Fdf/FvmainCompactScratchEnd.fdf.inc. **/ VOID SecValidateSystemRam ( VOID ); /** Determine if SEV-SNP is active. @retval TRUE SEV-SNP is enabled @retval FALSE SEV-SNP is not enabled **/ BOOLEAN SevSnpIsEnabled ( VOID ); #endif