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
// 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