#ifndef __OVMF_WORK_AREA_H__\r
#define __OVMF_WORK_AREA_H__\r
\r
-//\r
-// Guest type for the work area\r
-//\r
-typedef enum {\r
- GUEST_TYPE_NON_ENCRYPTED,\r
- GUEST_TYPE_AMD_SEV,\r
- GUEST_TYPE_INTEL_TDX,\r
-} GUEST_TYPE;\r
+#include <ConfidentialComputingGuestAttr.h>\r
+#include <IndustryStandard/Tpm20.h>\r
\r
//\r
// Confidential computing work area header definition. Any change\r
// sizeof (CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER)\r
// PcdOvmfConfidentialComputingWorkAreaHeader defined in:\r
// OvmfPkg/OvmfPkg.dec\r
-// OvmfPkg/OvmfPkgDefines.fdf.inc\r
+// OvmfPkg/Include/Fdf/OvmfPkgDefines.fdf.inc\r
typedef struct _CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER {\r
UINT8 GuestType;\r
UINT8 Reserved1[3];\r
SEC_SEV_ES_WORK_AREA SevEsWorkArea;\r
} SEV_WORK_AREA;\r
\r
+//\r
+// Start of TDX Specific WorkArea definition\r
+//\r
+\r
+#define TDX_MEASUREMENT_TDHOB_BITMASK 0x1\r
+#define TDX_MEASUREMENT_CFVIMG_BITMASK 0x2\r
+\r
+typedef struct _TDX_MEASUREMENTS_DATA {\r
+ UINT32 MeasurementsBitmap;\r
+ UINT8 TdHobHashValue[SHA384_DIGEST_SIZE];\r
+ UINT8 CfvImgHashValue[SHA384_DIGEST_SIZE];\r
+} TDX_MEASUREMENTS_DATA;\r
+\r
+//\r
+// The TDX work area definition\r
+//\r
+typedef struct _SEC_TDX_WORK_AREA {\r
+ UINT32 PageTableReady;\r
+ UINT32 Gpaw;\r
+ UINT64 HobList;\r
+ TDX_MEASUREMENTS_DATA TdxMeasurementsData;\r
+} SEC_TDX_WORK_AREA;\r
+\r
+typedef struct _TDX_WORK_AREA {\r
+ CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r
+ SEC_TDX_WORK_AREA SecTdxWorkArea;\r
+} TDX_WORK_AREA;\r
+\r
+//\r
+// End of TDX Specific WorkArea definition\r
+//\r
+\r
typedef union {\r
CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r
SEV_WORK_AREA SevWorkArea;\r
+ TDX_WORK_AREA TdxWorkArea;\r
} OVMF_WORK_AREA;\r
\r
#endif\r