]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Include/Guid/AcpiVariable.h
IntelFrameworkModulePkg: Add Guid/AcpiVariable.h
[mirror_edk2.git] / IntelFrameworkModulePkg / Include / Guid / AcpiVariable.h
CommitLineData
070fba65 1/** @file\r
2Provides the data format and Name and GUID definition for the EFI Variable ACPI_VARIABLE_SET and the Framework version's correponding \r
3EFI Variable.\r
4This variable is the persistent data that will be saved to NV EFI Variable. It is the central repository\r
5for configuration data saved by the CPU Driver, Platform SMM Handler. It is read by \r
6Platform PEIM and PEIM on S3 boot path to restore the system configuration.\r
7\r
8Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
9\r
10This program and the accompanying materials\r
11are licensed and made available under the terms and conditions\r
12of the BSD License which accompanies this distribution. The\r
13full text of the license may be found at\r
14http://opensource.org/licenses/bsd-license.php\r
15\r
16THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
17WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
18\r
19**/\r
20\r
21#ifndef _ACPI_VARIABLE_H_\r
22#define _ACPI_VARIABLE_H_\r
23\r
24#define EFI_ACPI_VARIABLE_GUID \\r
25 { \\r
26 0xaf9ffd67, 0xec10, 0x488a, {0x9d, 0xfc, 0x6c, 0xbf, 0x5e, 0xe2, 0x2c, 0x2e } \\r
27 }\r
28\r
29#define ACPI_GLOBAL_VARIABLE L"AcpiGlobalVariable"\r
30\r
31#define EFI_ACPI_VARIABLE_COMPATIBILITY_GUID \\r
32 { \\r
33 0xc020489e, 0x6db2, 0x4ef2, {0x9a, 0xa5, 0xca, 0x6, 0xfc, 0x11, 0xd3, 0x6a } \\r
34 }\r
35//\r
36// The following structure boosts performance by combining all ACPI related variables into one.\r
37//\r
38#pragma pack(1)\r
39typedef struct {\r
40 UINT16 Limit;\r
41 UINTN Base;\r
42} PSEUDO_DESCRIPTOR;\r
43#pragma pack()\r
44\r
45typedef struct {\r
46 BOOLEAN APState;\r
47 BOOLEAN S3BootPath;\r
48 EFI_PHYSICAL_ADDRESS WakeUpBuffer;\r
49 EFI_PHYSICAL_ADDRESS GdtrProfile;\r
50 EFI_PHYSICAL_ADDRESS IdtrProfile;\r
51 EFI_PHYSICAL_ADDRESS CpuPrivateData;\r
52 EFI_PHYSICAL_ADDRESS StackAddress;\r
53 EFI_PHYSICAL_ADDRESS MicrocodePointerBuffer;\r
54 EFI_PHYSICAL_ADDRESS SmramBase;\r
55 EFI_PHYSICAL_ADDRESS SmmStartImageBase;\r
56 UINT32 SmmStartImageSize;\r
57 UINT32 NumberOfCpus;\r
58} ACPI_CPU_DATA_COMPATIBILITY;\r
59\r
60typedef struct {\r
61 //\r
62 // Acpi Related variables\r
63 //\r
64 EFI_PHYSICAL_ADDRESS AcpiReservedMemoryBase;\r
65 UINT32 AcpiReservedMemorySize;\r
66 EFI_PHYSICAL_ADDRESS S3ReservedLowMemoryBase;\r
67 EFI_PHYSICAL_ADDRESS AcpiBootScriptTable;\r
68 EFI_PHYSICAL_ADDRESS RuntimeScriptTableBase;\r
69 EFI_PHYSICAL_ADDRESS AcpiFacsTable;\r
70 UINT64 SystemMemoryLength;\r
71 ACPI_CPU_DATA_COMPATIBILITY AcpiCpuData;\r
72 //\r
73 // VGA OPROM to support Video Re-POST for Linux S3\r
74 //\r
75 EFI_PHYSICAL_ADDRESS VideoOpromAddress;\r
76 UINT32 VideoOpromSize;\r
77\r
78 //\r
79 // S3 Debug extension\r
80 //\r
81 EFI_PHYSICAL_ADDRESS S3DebugBufferAddress; \r
82 EFI_PHYSICAL_ADDRESS S3ResumeNvsEntryPoint; \r
83} ACPI_VARIABLE_SET_COMPATIBILITY;\r
84\r
85typedef struct {\r
86 BOOLEAN APState;\r
87 EFI_PHYSICAL_ADDRESS StartupVector;\r
88 EFI_PHYSICAL_ADDRESS GdtrProfile;\r
89 EFI_PHYSICAL_ADDRESS IdtrProfile;\r
90 EFI_PHYSICAL_ADDRESS StackAddress;\r
91 UINT32 StackSize;\r
92 UINT32 NumberOfCpus;\r
93 EFI_PHYSICAL_ADDRESS MtrrTable;\r
94 EFI_PHYSICAL_ADDRESS RegisterTable;\r
95 EFI_PHYSICAL_ADDRESS Microcode;\r
96} ACPI_CPU_DATA;\r
97\r
98typedef struct {\r
99 //\r
100 // Acpi Related variables\r
101 //\r
102 EFI_PHYSICAL_ADDRESS AcpiReservedMemoryBase;\r
103 UINT32 AcpiReservedMemorySize;\r
104 EFI_PHYSICAL_ADDRESS S3ReservedLowMemoryBase;\r
105 EFI_PHYSICAL_ADDRESS AcpiFacsTable;\r
106 UINT64 SystemMemoryLength;\r
107 ACPI_CPU_DATA AcpiCpuData;\r
108\r
109 //\r
110 // VGA OPROM to support Video Re-POST for Linux S3\r
111 //\r
112 EFI_PHYSICAL_ADDRESS VideoOpromAddress;\r
113 UINT32 VideoOpromSize; \r
114 EFI_PHYSICAL_ADDRESS S3PostVideoStatusRestoreEntryPoint;\r
115\r
116 EFI_PHYSICAL_ADDRESS S3NvsPageTableAddress;\r
117 EFI_PHYSICAL_ADDRESS S3DebugBufferAddress; \r
118} ACPI_VARIABLE_SET;\r
119\r
120#define SMM_S3_RESUME_SMM_32 SIGNATURE_64 ('S','M','M','S','3','_','3','2')\r
121#define SMM_S3_RESUME_SMM_64 SIGNATURE_64 ('S','M','M','S','3','_','6','4')\r
122\r
123typedef struct {\r
124 UINT64 Signature;\r
125 EFI_PHYSICAL_ADDRESS SmmS3ResumeEntryPoint;\r
126 EFI_PHYSICAL_ADDRESS SmmS3StackBase;\r
127 UINT64 SmmS3StackSize;\r
128 UINT64 SmmS3Cr0;\r
129 UINT64 SmmS3Cr3;\r
130 UINT64 SmmS3Cr4;\r
131 UINT16 ReturnCs;\r
132 EFI_PHYSICAL_ADDRESS ReturnEntryPoint;\r
133 EFI_PHYSICAL_ADDRESS ReturnContext1;\r
134 EFI_PHYSICAL_ADDRESS ReturnContext2;\r
135 EFI_PHYSICAL_ADDRESS ReturnStackPointer;\r
136 EFI_PHYSICAL_ADDRESS Smst;\r
137} SMM_S3_RESUME_STATE;\r
138\r
139\r
140typedef struct {\r
141 EFI_PHYSICAL_ADDRESS AcpiFacsTable;\r
142 EFI_PHYSICAL_ADDRESS IdtrProfile;\r
143 EFI_PHYSICAL_ADDRESS S3NvsPageTableAddress;\r
144 EFI_PHYSICAL_ADDRESS BootScriptStackBase;\r
145 UINT64 BootScriptStackSize;\r
146 EFI_PHYSICAL_ADDRESS S3DebugBufferAddress; \r
147} ACPI_S3_CONTEXT;\r
148\r
149typedef struct {\r
150 UINT16 ReturnCs;\r
151 EFI_PHYSICAL_ADDRESS ReturnEntryPoint;\r
152 EFI_PHYSICAL_ADDRESS ReturnStackPointer;\r
153 EFI_PHYSICAL_ADDRESS AsmTransferControl;\r
154 PSEUDO_DESCRIPTOR Idtr;\r
155} PEI_S3_RESUME_STATE;\r
156\r
157#define EFI_ACPI_S3_CONTEXT_GUID \\r
158 { \\r
159 0xef98d3a, 0x3e33, 0x497a, {0xa4, 0x1, 0x77, 0xbe, 0x3e, 0xb7, 0x4f, 0x38} \\r
160 }\r
161\r
162extern EFI_GUID gEfiAcpiS3ContextGuid;\r
163\r
164extern EFI_GUID gEfiAcpiVariableGuid;\r
165extern EFI_GUID gEfiAcpiVariableCompatiblityGuid;\r
166\r
167#endif\r