]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Include/WorkArea.h
OvmfPkg: Replace GUEST_TYPE with CC_GUEST_TYPE
[mirror_edk2.git] / OvmfPkg / Include / WorkArea.h
CommitLineData
80e67af9
BS
1/** @file\r
2\r
3 Work Area structure definition\r
4\r
5 Copyright (c) 2021, AMD Inc.\r
6\r
7 SPDX-License-Identifier: BSD-2-Clause-Patent\r
8**/\r
9\r
10#ifndef __OVMF_WORK_AREA_H__\r
11#define __OVMF_WORK_AREA_H__\r
12\r
d020ac55 13#include <ConfidentialComputingGuestAttr.h>\r
80e67af9
BS
14\r
15//\r
16// Confidential computing work area header definition. Any change\r
17// to the structure need to be kept in sync with the\r
18// PcdOvmfConfidentialComputingWorkAreaHeader.\r
19//\r
79019c7a
CK
20// PcdOvmfConfidentialComputingWorkAreaHeader ==\r
21// sizeof (CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER)\r
22// PcdOvmfConfidentialComputingWorkAreaHeader defined in:\r
23// OvmfPkg/OvmfPkg.dec\r
24// OvmfPkg/OvmfPkgDefines.fdf.inc\r
80e67af9 25typedef struct _CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER {\r
ac0a286f
MK
26 UINT8 GuestType;\r
27 UINT8 Reserved1[3];\r
80e67af9
BS
28} CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER;\r
29\r
30//\r
31// Internal structure for holding SEV-ES information needed during SEC phase\r
32// and valid only during SEC phase and early PEI during platform\r
33// initialization.\r
34//\r
35// This structure is also used by assembler files:\r
36// OvmfPkg/ResetVector/ResetVector.nasmb\r
37// OvmfPkg/ResetVector/Ia32/PageTables64.asm\r
38// OvmfPkg/ResetVector/Ia32/Flat32ToFlat64.asm\r
39// any changes must stay in sync with its usage.\r
40//\r
41typedef struct _SEC_SEV_ES_WORK_AREA {\r
63c50d3f
BS
42 //\r
43 // Hold the SevStatus MSR value read by OvmfPkg/ResetVector/Ia32/AmdSev.c\r
44 //\r
45 UINT64 SevStatusMsrValue;\r
80e67af9 46\r
ac0a286f 47 UINT64 RandomData;\r
80e67af9 48\r
ac0a286f 49 UINT64 EncryptionMask;\r
63c50d3f
BS
50\r
51 //\r
52 // Indicator that the VC handler is called. It is used during the SevFeature\r
53 // detection in OvmfPkg/ResetVector/Ia32/AmdSev.c\r
54 //\r
55 UINT8 ReceivedVc;\r
80e67af9
BS
56} SEC_SEV_ES_WORK_AREA;\r
57\r
58//\r
59// The SEV work area definition.\r
60//\r
61typedef struct _SEV_WORK_AREA {\r
ac0a286f 62 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r
80e67af9 63\r
ac0a286f 64 SEC_SEV_ES_WORK_AREA SevEsWorkArea;\r
80e67af9
BS
65} SEV_WORK_AREA;\r
66\r
580a6b61
MX
67//\r
68// The TDX work area definition\r
69//\r
70typedef struct _SEC_TDX_WORK_AREA {\r
71 UINT32 PageTableReady;\r
72 UINT32 Gpaw;\r
73 UINT64 HobList;\r
74} SEC_TDX_WORK_AREA;\r
75\r
76typedef struct _TDX_WORK_AREA {\r
77 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r
78 SEC_TDX_WORK_AREA SecTdxWorkArea;\r
79} TDX_WORK_AREA;\r
80\r
80e67af9 81typedef union {\r
ac0a286f
MK
82 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r
83 SEV_WORK_AREA SevWorkArea;\r
580a6b61 84 TDX_WORK_AREA TdxWorkArea;\r
80e67af9
BS
85} OVMF_WORK_AREA;\r
86\r
87#endif\r