]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Include/AcpiCpuData.h
UefiCpuPkg/Include/AcpiCpuData.h: Add Semaphore related Information.
[mirror_edk2.git] / UefiCpuPkg / Include / AcpiCpuData.h
index 9e51145c084007703b37ddd8df4b2c4b2b042366..005d48d7ca7957ad2f8f62805ab5354c9330c522 100644 (file)
@@ -22,9 +22,60 @@ typedef enum {
   Msr,\r
   ControlRegister,\r
   MemoryMapped,\r
-  CacheControl\r
+  CacheControl,\r
+\r
+  //\r
+  // Semaphore type used to control the execute sequence of the Msr.\r
+  // It will be insert between two Msr which has execute dependence.\r
+  //\r
+  Semaphore,\r
+  InvalidReg\r
 } REGISTER_TYPE;\r
 \r
+//\r
+// Describe the dependency type for different features.\r
+// The value set to CPU_REGISTER_TABLE_ENTRY.Value when the REGISTER_TYPE is Semaphore.\r
+//\r
+typedef enum {\r
+  NoneDepType,\r
+  ThreadDepType,\r
+  CoreDepType,\r
+  PackageDepType,\r
+  InvalidDepType\r
+} CPU_FEATURE_DEPENDENCE_TYPE;\r
+\r
+//\r
+// CPU information.\r
+//\r
+typedef struct {\r
+  //\r
+  // Record the package count in this CPU.\r
+  //\r
+  UINT32                      PackageCount;\r
+  //\r
+  // Record the max core count in this CPU.\r
+  // Different packages may have different core count, this value\r
+  // save the max core count in all the packages.\r
+  //\r
+  UINT32                      MaxCoreCount;\r
+  //\r
+  // Record the max thread count in this CPU.\r
+  // Different cores may have different thread count, this value\r
+  // save the max thread count in all the cores.\r
+  //\r
+  UINT32                      MaxThreadCount;\r
+  //\r
+  // This field points to an array.\r
+  // This array saves valid core count (type UINT32) of each package.\r
+  // The array has PackageCount elements.\r
+  //\r
+  // If the platform does not support MSR setting at S3 resume, and\r
+  // therefore it doesn't need the dependency semaphores, it should set\r
+  // this field to 0.\r
+  //\r
+  EFI_PHYSICAL_ADDRESS        ValidCoreCountPerPackage;\r
+} CPU_STATUS_INFORMATION;\r
+\r
 //\r
 // Element of register table entry\r
 //\r
@@ -147,6 +198,20 @@ typedef struct {
   // provided.\r
   //\r
   UINT32                ApMachineCheckHandlerSize;\r
+  //\r
+  // CPU information which is required when set the register table.\r
+  //\r
+  CPU_STATUS_INFORMATION     CpuStatus;\r
+  //\r
+  // Location info for each AP.\r
+  // It points to an array which saves all APs location info.\r
+  // The array count is the AP count in this CPU.\r
+  //\r
+  // If the platform does not support MSR setting at S3 resume, and\r
+  // therefore it doesn't need the dependency semaphores, it should set\r
+  // this field to 0.\r
+  //\r
+  EFI_PHYSICAL_ADDRESS  ApLocation;\r
 } ACPI_CPU_DATA;\r
 \r
 #endif\r