/** @file | |
Work Area structure definition | |
Copyright (c) 2021, AMD Inc. | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef __OVMF_WORK_AREA_H__ | |
#define __OVMF_WORK_AREA_H__ | |
// | |
// Guest type for the work area | |
// | |
typedef enum { | |
GUEST_TYPE_NON_ENCRYPTED, | |
GUEST_TYPE_AMD_SEV, | |
GUEST_TYPE_INTEL_TDX, | |
} GUEST_TYPE; | |
// | |
// Confidential computing work area header definition. Any change | |
// to the structure need to be kept in sync with the | |
// PcdOvmfConfidentialComputingWorkAreaHeader. | |
// | |
// PcdOvmfConfidentialComputingWorkAreaHeader == | |
// sizeof (CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER) | |
// PcdOvmfConfidentialComputingWorkAreaHeader defined in: | |
// OvmfPkg/OvmfPkg.dec | |
// OvmfPkg/OvmfPkgDefines.fdf.inc | |
typedef struct _CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER { | |
UINT8 GuestType; | |
UINT8 Reserved1[3]; | |
} CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER; | |
// | |
// Internal structure for holding SEV-ES information needed during SEC phase | |
// and valid only during SEC phase and early PEI during platform | |
// initialization. | |
// | |
// This structure is also used by assembler files: | |
// OvmfPkg/ResetVector/ResetVector.nasmb | |
// OvmfPkg/ResetVector/Ia32/PageTables64.asm | |
// OvmfPkg/ResetVector/Ia32/Flat32ToFlat64.asm | |
// any changes must stay in sync with its usage. | |
// | |
typedef struct _SEC_SEV_ES_WORK_AREA { | |
UINT8 SevEsEnabled; | |
UINT8 Reserved1[7]; | |
UINT64 RandomData; | |
UINT64 EncryptionMask; | |
} SEC_SEV_ES_WORK_AREA; | |
// | |
// The SEV work area definition. | |
// | |
typedef struct _SEV_WORK_AREA { | |
CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header; | |
SEC_SEV_ES_WORK_AREA SevEsWorkArea; | |
} SEV_WORK_AREA; | |
typedef union { | |
CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header; | |
SEV_WORK_AREA SevWorkArea; | |
} OVMF_WORK_AREA; | |
#endif |