]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Include/IndustryStandard/IntelTdx.h
OvmfPkg: Add IntelTdx.h in OvmfPkg/Include/IndustryStandard
[mirror_edk2.git] / OvmfPkg / Include / IndustryStandard / IntelTdx.h
CommitLineData
352eabdc
MX
1/** @file\r
2 Defines the defitions used by TDX in OvmfPkg.\r
3\r
4 Copyright (c) 2020 - 2021, Intel Corporation. All rights reserved.<BR>\r
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
7**/\r
8\r
9#ifndef OVMF_INTEL_TDX_H_\r
10#define OVMF_INTEL_TDX_H_\r
11\r
12#include <PiPei.h>\r
13#include <Library/BaseLib.h>\r
14#include <Uefi/UefiSpec.h>\r
15#include <Uefi/UefiBaseType.h>\r
16\r
17#define MP_CPU_PROTECTED_MODE_MAILBOX_APICID_INVALID 0xFFFFFFFF\r
18#define MP_CPU_PROTECTED_MODE_MAILBOX_APICID_BROADCAST 0xFFFFFFFE\r
19\r
20typedef enum {\r
21 MpProtectedModeWakeupCommandNoop = 0,\r
22 MpProtectedModeWakeupCommandWakeup = 1,\r
23 MpProtectedModeWakeupCommandSleep = 2,\r
24 MpProtectedModeWakeupCommandAcceptPages = 3,\r
25} MP_CPU_PROTECTED_MODE_WAKEUP_CMD;\r
26\r
27#pragma pack(1)\r
28\r
29//\r
30// Describes the CPU MAILBOX control structure use to\r
31// wakeup cpus spinning in long mode\r
32//\r
33typedef struct {\r
34 UINT16 Command;\r
35 UINT16 Resv;\r
36 UINT32 ApicId;\r
37 UINT64 WakeUpVector;\r
38 UINT8 ResvForOs[2032];\r
39 //\r
40 // Arguments available for wakeup code\r
41 //\r
42 UINT64 WakeUpArgs1;\r
43 UINT64 WakeUpArgs2;\r
44 UINT64 WakeUpArgs3;\r
45 UINT64 WakeUpArgs4;\r
46 UINT8 Pad1[0xe0];\r
47 UINT64 NumCpusArriving;\r
48 UINT8 Pad2[0xf8];\r
49 UINT64 NumCpusExiting;\r
50 UINT32 Tallies[256];\r
51 UINT8 Errors[256];\r
52 UINT8 Pad3[0xf8];\r
53} MP_WAKEUP_MAILBOX;\r
54\r
55//\r
56// AP relocation code information including code address and size,\r
57// this structure will be shared be C code and assembly code.\r
58// It is natural aligned by design.\r
59//\r
60typedef struct {\r
61 UINT8 *RelocateApLoopFuncAddress;\r
62 UINTN RelocateApLoopFuncSize;\r
63} MP_RELOCATION_MAP;\r
64\r
65#pragma pack()\r
66\r
67#endif\r