/** @file Defines the defitions used by TDX in OvmfPkg. Copyright (c) 2020 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef OVMF_INTEL_TDX_H_ #define OVMF_INTEL_TDX_H_ #include #include #include #include #define MP_CPU_PROTECTED_MODE_MAILBOX_APICID_INVALID 0xFFFFFFFF #define MP_CPU_PROTECTED_MODE_MAILBOX_APICID_BROADCAST 0xFFFFFFFE typedef enum { MpProtectedModeWakeupCommandNoop = 0, MpProtectedModeWakeupCommandWakeup = 1, MpProtectedModeWakeupCommandSleep = 2, MpProtectedModeWakeupCommandAcceptPages = 3, } MP_CPU_PROTECTED_MODE_WAKEUP_CMD; #pragma pack(1) // // Describes the CPU MAILBOX control structure use to // wakeup cpus spinning in long mode // typedef struct { UINT16 Command; UINT16 Resv; UINT32 ApicId; UINT64 WakeUpVector; UINT8 ResvForOs[2032]; // // Arguments available for wakeup code // UINT64 WakeUpArgs1; UINT64 WakeUpArgs2; UINT64 WakeUpArgs3; UINT64 WakeUpArgs4; UINT8 Pad1[0xe0]; UINT64 NumCpusArriving; UINT8 Pad2[0xf8]; UINT64 NumCpusExiting; UINT32 Tallies[256]; UINT8 Errors[256]; UINT8 Pad3[0xf8]; } MP_WAKEUP_MAILBOX; // // AP relocation code information including code address and size, // this structure will be shared be C code and assembly code. // It is natural aligned by design. // typedef struct { UINT8 *RelocateApLoopFuncAddress; UINTN RelocateApLoopFuncSize; } MP_RELOCATION_MAP; #pragma pack() #endif