]> git.proxmox.com Git - mirror_edk2.git/blame_incremental - OvmfPkg/Include/WorkArea.h
mv OvmfPkg: move fdf include snippets to Include/Fdf
[mirror_edk2.git] / OvmfPkg / Include / WorkArea.h
... / ...
CommitLineData
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#include <ConfidentialComputingGuestAttr.h>\r
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
20// PcdOvmfConfidentialComputingWorkAreaHeader ==\r
21// sizeof (CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER)\r
22// PcdOvmfConfidentialComputingWorkAreaHeader defined in:\r
23// OvmfPkg/OvmfPkg.dec\r
24// OvmfPkg/Include/Fdf/OvmfPkgDefines.fdf.inc\r
25typedef struct _CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER {\r
26 UINT8 GuestType;\r
27 UINT8 Reserved1[3];\r
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
42 //\r
43 // Hold the SevStatus MSR value read by OvmfPkg/ResetVector/Ia32/AmdSev.c\r
44 //\r
45 UINT64 SevStatusMsrValue;\r
46\r
47 UINT64 RandomData;\r
48\r
49 UINT64 EncryptionMask;\r
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
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
62 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r
63\r
64 SEC_SEV_ES_WORK_AREA SevEsWorkArea;\r
65} SEV_WORK_AREA;\r
66\r
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
81typedef union {\r
82 CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;\r
83 SEV_WORK_AREA SevWorkArea;\r
84 TDX_WORK_AREA TdxWorkArea;\r
85} OVMF_WORK_AREA;\r
86\r
87#endif\r