]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Include/Guid/AcpiVariable.h
IntelFrameworkModulePkg: Add Guid/AcpiVariable.h
[mirror_edk2.git] / IntelFrameworkModulePkg / Include / Guid / AcpiVariable.h
diff --git a/IntelFrameworkModulePkg/Include/Guid/AcpiVariable.h b/IntelFrameworkModulePkg/Include/Guid/AcpiVariable.h
new file mode 100644 (file)
index 0000000..6df9ddb
--- /dev/null
@@ -0,0 +1,167 @@
+/** @file\r
+Provides the data format and Name and GUID definition for the EFI Variable ACPI_VARIABLE_SET and the Framework version's correponding \r
+EFI Variable.\r
+This variable is the persistent data that will be saved to NV EFI Variable. It is the central repository\r
+for configuration data saved by the CPU Driver, Platform SMM Handler. It is read by \r
+Platform PEIM and PEIM on S3 boot path to restore the system configuration.\r
+\r
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions\r
+of the BSD License which accompanies this distribution.  The\r
+full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _ACPI_VARIABLE_H_\r
+#define _ACPI_VARIABLE_H_\r
+\r
+#define EFI_ACPI_VARIABLE_GUID \\r
+  { \\r
+    0xaf9ffd67, 0xec10, 0x488a, {0x9d, 0xfc, 0x6c, 0xbf, 0x5e, 0xe2, 0x2c, 0x2e } \\r
+  }\r
+\r
+#define ACPI_GLOBAL_VARIABLE  L"AcpiGlobalVariable"\r
+\r
+#define EFI_ACPI_VARIABLE_COMPATIBILITY_GUID \\r
+  { \\r
+    0xc020489e, 0x6db2, 0x4ef2, {0x9a, 0xa5, 0xca, 0x6, 0xfc, 0x11, 0xd3, 0x6a } \\r
+  }\r
+//\r
+// The following structure boosts performance by combining all ACPI related variables into one.\r
+//\r
+#pragma pack(1)\r
+typedef struct {\r
+  UINT16  Limit;\r
+  UINTN   Base;\r
+} PSEUDO_DESCRIPTOR;\r
+#pragma pack()\r
+\r
+typedef struct {\r
+  BOOLEAN               APState;\r
+  BOOLEAN               S3BootPath;\r
+  EFI_PHYSICAL_ADDRESS  WakeUpBuffer;\r
+  EFI_PHYSICAL_ADDRESS  GdtrProfile;\r
+  EFI_PHYSICAL_ADDRESS  IdtrProfile;\r
+  EFI_PHYSICAL_ADDRESS  CpuPrivateData;\r
+  EFI_PHYSICAL_ADDRESS  StackAddress;\r
+  EFI_PHYSICAL_ADDRESS  MicrocodePointerBuffer;\r
+  EFI_PHYSICAL_ADDRESS  SmramBase;\r
+  EFI_PHYSICAL_ADDRESS  SmmStartImageBase;\r
+  UINT32                SmmStartImageSize;\r
+  UINT32                NumberOfCpus;\r
+} ACPI_CPU_DATA_COMPATIBILITY;\r
+\r
+typedef struct {\r
+  //\r
+  // Acpi Related variables\r
+  //\r
+  EFI_PHYSICAL_ADDRESS  AcpiReservedMemoryBase;\r
+  UINT32                AcpiReservedMemorySize;\r
+  EFI_PHYSICAL_ADDRESS  S3ReservedLowMemoryBase;\r
+  EFI_PHYSICAL_ADDRESS  AcpiBootScriptTable;\r
+  EFI_PHYSICAL_ADDRESS  RuntimeScriptTableBase;\r
+  EFI_PHYSICAL_ADDRESS  AcpiFacsTable;\r
+  UINT64                SystemMemoryLength;\r
+  ACPI_CPU_DATA_COMPATIBILITY         AcpiCpuData;\r
+  //\r
+  // VGA OPROM to support Video Re-POST for Linux S3\r
+  //\r
+  EFI_PHYSICAL_ADDRESS  VideoOpromAddress;\r
+  UINT32                VideoOpromSize;\r
+\r
+  //\r
+  // S3 Debug extension\r
+  //\r
+  EFI_PHYSICAL_ADDRESS  S3DebugBufferAddress; \r
+  EFI_PHYSICAL_ADDRESS  S3ResumeNvsEntryPoint;    \r
+} ACPI_VARIABLE_SET_COMPATIBILITY;\r
+\r
+typedef struct {\r
+  BOOLEAN               APState;\r
+  EFI_PHYSICAL_ADDRESS  StartupVector;\r
+  EFI_PHYSICAL_ADDRESS  GdtrProfile;\r
+  EFI_PHYSICAL_ADDRESS  IdtrProfile;\r
+  EFI_PHYSICAL_ADDRESS  StackAddress;\r
+  UINT32                StackSize;\r
+  UINT32                NumberOfCpus;\r
+  EFI_PHYSICAL_ADDRESS  MtrrTable;\r
+  EFI_PHYSICAL_ADDRESS  RegisterTable;\r
+  EFI_PHYSICAL_ADDRESS  Microcode;\r
+} ACPI_CPU_DATA;\r
+\r
+typedef struct {\r
+  //\r
+  // Acpi Related variables\r
+  //\r
+  EFI_PHYSICAL_ADDRESS  AcpiReservedMemoryBase;\r
+  UINT32                AcpiReservedMemorySize;\r
+  EFI_PHYSICAL_ADDRESS  S3ReservedLowMemoryBase;\r
+  EFI_PHYSICAL_ADDRESS  AcpiFacsTable;\r
+  UINT64                SystemMemoryLength;\r
+  ACPI_CPU_DATA         AcpiCpuData;\r
+\r
+  //\r
+  // VGA OPROM to support Video Re-POST for Linux S3\r
+  //\r
+  EFI_PHYSICAL_ADDRESS  VideoOpromAddress;\r
+  UINT32                VideoOpromSize;  \r
+  EFI_PHYSICAL_ADDRESS  S3PostVideoStatusRestoreEntryPoint;\r
+\r
+  EFI_PHYSICAL_ADDRESS  S3NvsPageTableAddress;\r
+  EFI_PHYSICAL_ADDRESS  S3DebugBufferAddress;  \r
+} ACPI_VARIABLE_SET;\r
+\r
+#define SMM_S3_RESUME_SMM_32 SIGNATURE_64 ('S','M','M','S','3','_','3','2')\r
+#define SMM_S3_RESUME_SMM_64 SIGNATURE_64 ('S','M','M','S','3','_','6','4')\r
+\r
+typedef struct {\r
+  UINT64                Signature;\r
+  EFI_PHYSICAL_ADDRESS  SmmS3ResumeEntryPoint;\r
+  EFI_PHYSICAL_ADDRESS  SmmS3StackBase;\r
+  UINT64                SmmS3StackSize;\r
+  UINT64                SmmS3Cr0;\r
+  UINT64                SmmS3Cr3;\r
+  UINT64                SmmS3Cr4;\r
+  UINT16                ReturnCs;\r
+  EFI_PHYSICAL_ADDRESS  ReturnEntryPoint;\r
+  EFI_PHYSICAL_ADDRESS  ReturnContext1;\r
+  EFI_PHYSICAL_ADDRESS  ReturnContext2;\r
+  EFI_PHYSICAL_ADDRESS  ReturnStackPointer;\r
+  EFI_PHYSICAL_ADDRESS  Smst;\r
+} SMM_S3_RESUME_STATE;\r
+\r
+\r
+typedef struct {\r
+  EFI_PHYSICAL_ADDRESS  AcpiFacsTable;\r
+  EFI_PHYSICAL_ADDRESS  IdtrProfile;\r
+  EFI_PHYSICAL_ADDRESS  S3NvsPageTableAddress;\r
+  EFI_PHYSICAL_ADDRESS  BootScriptStackBase;\r
+  UINT64                BootScriptStackSize;\r
+  EFI_PHYSICAL_ADDRESS  S3DebugBufferAddress;  \r
+} ACPI_S3_CONTEXT;\r
+\r
+typedef struct {\r
+  UINT16                ReturnCs;\r
+  EFI_PHYSICAL_ADDRESS  ReturnEntryPoint;\r
+  EFI_PHYSICAL_ADDRESS  ReturnStackPointer;\r
+  EFI_PHYSICAL_ADDRESS  AsmTransferControl;\r
+  PSEUDO_DESCRIPTOR     Idtr;\r
+} PEI_S3_RESUME_STATE;\r
+\r
+#define EFI_ACPI_S3_CONTEXT_GUID \\r
+  { \\r
+    0xef98d3a, 0x3e33, 0x497a, {0xa4, 0x1, 0x77, 0xbe, 0x3e, 0xb7, 0x4f, 0x38} \\r
+  }\r
+\r
+extern EFI_GUID gEfiAcpiS3ContextGuid;\r
+\r
+extern EFI_GUID gEfiAcpiVariableGuid;\r
+extern EFI_GUID gEfiAcpiVariableCompatiblityGuid;\r
+\r
+#endif\r