]>
Commit | Line | Data |
---|---|---|
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 | 25 | typedef 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 | |
41 | typedef 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 | |
61 | typedef 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 | |
70 | typedef 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 | |
76 | typedef 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 | 81 | typedef 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 |