]>
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 | |
13 | //\r | |
14 | // Guest type for the work area\r | |
15 | //\r | |
16 | typedef enum {\r | |
17 | GUEST_TYPE_NON_ENCRYPTED,\r | |
18 | GUEST_TYPE_AMD_SEV,\r | |
19 | GUEST_TYPE_INTEL_TDX,\r | |
80e67af9 BS |
20 | } GUEST_TYPE;\r |
21 | \r | |
22 | //\r | |
23 | // Confidential computing work area header definition. Any change\r | |
24 | // to the structure need to be kept in sync with the\r | |
25 | // PcdOvmfConfidentialComputingWorkAreaHeader.\r | |
26 | //\r | |
79019c7a CK |
27 | // PcdOvmfConfidentialComputingWorkAreaHeader ==\r |
28 | // sizeof (CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER)\r | |
29 | // PcdOvmfConfidentialComputingWorkAreaHeader defined in:\r | |
30 | // OvmfPkg/OvmfPkg.dec\r | |
31 | // OvmfPkg/OvmfPkgDefines.fdf.inc\r | |
80e67af9 | 32 | typedef struct _CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER {\r |
ac0a286f MK |
33 | UINT8 GuestType;\r |
34 | UINT8 Reserved1[3];\r | |
80e67af9 BS |
35 | } CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER;\r |
36 | \r | |
37 | //\r | |
38 | // Internal structure for holding SEV-ES information needed during SEC phase\r | |
39 | // and valid only during SEC phase and early PEI during platform\r | |
40 | // initialization.\r | |
41 | //\r | |
42 | // This structure is also used by assembler files:\r | |
43 | // OvmfPkg/ResetVector/ResetVector.nasmb\r | |
44 | // OvmfPkg/ResetVector/Ia32/PageTables64.asm\r | |
45 | // OvmfPkg/ResetVector/Ia32/Flat32ToFlat64.asm\r | |
46 | // any changes must stay in sync with its usage.\r | |
47 | //\r | |
48 | typedef struct _SEC_SEV_ES_WORK_AREA {\r | |
63c50d3f BS |
49 | //\r |
50 | // Hold the SevStatus MSR value read by OvmfPkg/ResetVector/Ia32/AmdSev.c\r | |
51 | //\r | |
52 | UINT64 SevStatusMsrValue;\r | |
80e67af9 | 53 | \r |
ac0a286f | 54 | UINT64 RandomData;\r |
80e67af9 | 55 | \r |
ac0a286f | 56 | UINT64 EncryptionMask;\r |
63c50d3f BS |
57 | \r |
58 | //\r | |
59 | // Indicator that the VC handler is called. It is used during the SevFeature\r | |
60 | // detection in OvmfPkg/ResetVector/Ia32/AmdSev.c\r | |
61 | //\r | |
62 | UINT8 ReceivedVc;\r | |
80e67af9 BS |
63 | } SEC_SEV_ES_WORK_AREA;\r |
64 | \r | |
65 | //\r | |
66 | // The SEV work area definition.\r | |
67 | //\r | |
68 | typedef struct _SEV_WORK_AREA {\r | |
ac0a286f | 69 | CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r |
80e67af9 | 70 | \r |
ac0a286f | 71 | SEC_SEV_ES_WORK_AREA SevEsWorkArea;\r |
80e67af9 BS |
72 | } SEV_WORK_AREA;\r |
73 | \r | |
580a6b61 MX |
74 | //\r |
75 | // The TDX work area definition\r | |
76 | //\r | |
77 | typedef struct _SEC_TDX_WORK_AREA {\r | |
78 | UINT32 PageTableReady;\r | |
79 | UINT32 Gpaw;\r | |
80 | UINT64 HobList;\r | |
81 | } SEC_TDX_WORK_AREA;\r | |
82 | \r | |
83 | typedef struct _TDX_WORK_AREA {\r | |
84 | CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r | |
85 | SEC_TDX_WORK_AREA SecTdxWorkArea;\r | |
86 | } TDX_WORK_AREA;\r | |
87 | \r | |
80e67af9 | 88 | typedef union {\r |
ac0a286f MK |
89 | CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r |
90 | SEV_WORK_AREA SevWorkArea;\r | |
580a6b61 | 91 | TDX_WORK_AREA TdxWorkArea;\r |
80e67af9 BS |
92 | } OVMF_WORK_AREA;\r |
93 | \r | |
94 | #endif\r |