3 Work Area structure definition
5 Copyright (c) 2021, AMD Inc.
7 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #ifndef __OVMF_WORK_AREA_H__
11 #define __OVMF_WORK_AREA_H__
13 #include <ConfidentialComputingGuestAttr.h>
14 #include <IndustryStandard/Tpm20.h>
17 // Confidential computing work area header definition. Any change
18 // to the structure need to be kept in sync with the
19 // PcdOvmfConfidentialComputingWorkAreaHeader.
21 // PcdOvmfConfidentialComputingWorkAreaHeader ==
22 // sizeof (CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER)
23 // PcdOvmfConfidentialComputingWorkAreaHeader defined in:
24 // OvmfPkg/OvmfPkg.dec
25 // OvmfPkg/Include/Fdf/OvmfPkgDefines.fdf.inc
26 typedef struct _CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER
{
29 } CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER
;
32 // Internal structure for holding SEV-ES information needed during SEC phase
33 // and valid only during SEC phase and early PEI during platform
36 // This structure is also used by assembler files:
37 // OvmfPkg/ResetVector/ResetVector.nasmb
38 // OvmfPkg/ResetVector/Ia32/PageTables64.asm
39 // OvmfPkg/ResetVector/Ia32/Flat32ToFlat64.asm
40 // any changes must stay in sync with its usage.
42 typedef struct _SEC_SEV_ES_WORK_AREA
{
44 // Hold the SevStatus MSR value read by OvmfPkg/ResetVector/Ia32/AmdSev.c
46 UINT64 SevStatusMsrValue
;
50 UINT64 EncryptionMask
;
53 // Indicator that the VC handler is called. It is used during the SevFeature
54 // detection in OvmfPkg/ResetVector/Ia32/AmdSev.c
57 } SEC_SEV_ES_WORK_AREA
;
60 // The SEV work area definition.
62 typedef struct _SEV_WORK_AREA
{
63 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header
;
65 SEC_SEV_ES_WORK_AREA SevEsWorkArea
;
69 // Start of TDX Specific WorkArea definition
72 #define TDX_MEASUREMENT_TDHOB_BITMASK 0x1
73 #define TDX_MEASUREMENT_CFVIMG_BITMASK 0x2
75 typedef struct _TDX_MEASUREMENTS_DATA
{
76 UINT32 MeasurementsBitmap
;
77 UINT8 TdHobHashValue
[SHA384_DIGEST_SIZE
];
78 UINT8 CfvImgHashValue
[SHA384_DIGEST_SIZE
];
79 } TDX_MEASUREMENTS_DATA
;
82 // The TDX work area definition
84 typedef struct _SEC_TDX_WORK_AREA
{
85 UINT32 PageTableReady
;
88 TDX_MEASUREMENTS_DATA TdxMeasurementsData
;
91 typedef struct _TDX_WORK_AREA
{
92 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header
;
93 SEC_TDX_WORK_AREA SecTdxWorkArea
;
97 // End of TDX Specific WorkArea definition
101 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header
;
102 SEV_WORK_AREA SevWorkArea
;
103 TDX_WORK_AREA TdxWorkArea
;