BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3902 Replace GUEST_TYPE with CC_GUEST_TYPE which is defined in MdePkg/Include/ConfidentialComputingGuestAttr.h. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Brijesh Singh <brijesh.singh@amd.com> Cc: Erdem Aktas <erdemaktas@google.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Min Xu <min.m.xu@intel.com>
88 lines
2.4 KiB
C
88 lines
2.4 KiB
C
/** @file
|
|
|
|
Work Area structure definition
|
|
|
|
Copyright (c) 2021, AMD Inc.
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
|
|
#ifndef __OVMF_WORK_AREA_H__
|
|
#define __OVMF_WORK_AREA_H__
|
|
|
|
#include <ConfidentialComputingGuestAttr.h>
|
|
|
|
//
|
|
// Confidential computing work area header definition. Any change
|
|
// to the structure need to be kept in sync with the
|
|
// PcdOvmfConfidentialComputingWorkAreaHeader.
|
|
//
|
|
// PcdOvmfConfidentialComputingWorkAreaHeader ==
|
|
// sizeof (CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER)
|
|
// PcdOvmfConfidentialComputingWorkAreaHeader defined in:
|
|
// OvmfPkg/OvmfPkg.dec
|
|
// OvmfPkg/OvmfPkgDefines.fdf.inc
|
|
typedef struct _CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER {
|
|
UINT8 GuestType;
|
|
UINT8 Reserved1[3];
|
|
} CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER;
|
|
|
|
//
|
|
// Internal structure for holding SEV-ES information needed during SEC phase
|
|
// and valid only during SEC phase and early PEI during platform
|
|
// initialization.
|
|
//
|
|
// This structure is also used by assembler files:
|
|
// OvmfPkg/ResetVector/ResetVector.nasmb
|
|
// OvmfPkg/ResetVector/Ia32/PageTables64.asm
|
|
// OvmfPkg/ResetVector/Ia32/Flat32ToFlat64.asm
|
|
// any changes must stay in sync with its usage.
|
|
//
|
|
typedef struct _SEC_SEV_ES_WORK_AREA {
|
|
//
|
|
// Hold the SevStatus MSR value read by OvmfPkg/ResetVector/Ia32/AmdSev.c
|
|
//
|
|
UINT64 SevStatusMsrValue;
|
|
|
|
UINT64 RandomData;
|
|
|
|
UINT64 EncryptionMask;
|
|
|
|
//
|
|
// Indicator that the VC handler is called. It is used during the SevFeature
|
|
// detection in OvmfPkg/ResetVector/Ia32/AmdSev.c
|
|
//
|
|
UINT8 ReceivedVc;
|
|
} SEC_SEV_ES_WORK_AREA;
|
|
|
|
//
|
|
// The SEV work area definition.
|
|
//
|
|
typedef struct _SEV_WORK_AREA {
|
|
CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;
|
|
|
|
SEC_SEV_ES_WORK_AREA SevEsWorkArea;
|
|
} SEV_WORK_AREA;
|
|
|
|
//
|
|
// The TDX work area definition
|
|
//
|
|
typedef struct _SEC_TDX_WORK_AREA {
|
|
UINT32 PageTableReady;
|
|
UINT32 Gpaw;
|
|
UINT64 HobList;
|
|
} SEC_TDX_WORK_AREA;
|
|
|
|
typedef struct _TDX_WORK_AREA {
|
|
CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;
|
|
SEC_TDX_WORK_AREA SecTdxWorkArea;
|
|
} TDX_WORK_AREA;
|
|
|
|
typedef union {
|
|
CONFIDENTIAL_COMPUTING_WORK_AREA_HEADER Header;
|
|
SEV_WORK_AREA SevWorkArea;
|
|
TDX_WORK_AREA TdxWorkArea;
|
|
} OVMF_WORK_AREA;
|
|
|
|
#endif
|