summaryrefslogtreecommitdiff
path: root/UefiCpuPkg/Library/RegisterCpuFeaturesLib
diff options
context:
space:
mode:
authorMichael Kubacki <michael.kubacki@microsoft.com>2021-12-05 14:54:17 -0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2021-12-07 17:24:28 +0000
commit053e878bfb5c9d5eca779789b62891add30b14ba (patch)
tree1cdf5bacb37306e373b8d14bd67c5b3e4f3b269f /UefiCpuPkg/Library/RegisterCpuFeaturesLib
parent91415a36ae7aaeabb2bbab3762f39544f9aed683 (diff)
downloadedk2-053e878bfb5c9d5eca779789b62891add30b14ba.zip
edk2-053e878bfb5c9d5eca779789b62891add30b14ba.tar.gz
edk2-053e878bfb5c9d5eca779789b62891add30b14ba.tar.bz2
UefiCpuPkg: Apply uncrustify changes
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the UefiCpuPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
Diffstat (limited to 'UefiCpuPkg/Library/RegisterCpuFeaturesLib')
-rw-r--r--UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c864
-rw-r--r--UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c114
-rw-r--r--UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c141
-rw-r--r--UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h110
-rw-r--r--UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c421
5 files changed, 865 insertions, 785 deletions
diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
index 2f77ab3..a8e4f92 100644
--- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
+++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
@@ -8,7 +8,7 @@
#include "RegisterCpuFeatures.h"
-CHAR16 *mDependTypeStr[] = {L"None", L"Thread", L"Core", L"Package", L"Invalid" };
+CHAR16 *mDependTypeStr[] = { L"None", L"Thread", L"Core", L"Package", L"Invalid" };
/**
Worker function to save PcdCpuFeaturesCapability.
@@ -19,11 +19,11 @@ CHAR16 *mDependTypeStr[] = {L"None", L"Thread", L"Core", L"Package", L"Invalid
**/
VOID
SetCapabilityPcd (
- IN UINT8 *SupportedFeatureMask,
- IN UINTN BitMaskSize
+ IN UINT8 *SupportedFeatureMask,
+ IN UINTN BitMaskSize
)
{
- EFI_STATUS Status;
+ EFI_STATUS Status;
Status = PcdSetPtrS (PcdCpuFeaturesCapability, &BitMaskSize, SupportedFeatureMask);
ASSERT_EFI_ERROR (Status);
@@ -37,11 +37,11 @@ SetCapabilityPcd (
**/
VOID
SetSettingPcd (
- IN UINT8 *SupportedFeatureMask,
- IN UINTN BitMaskSize
+ IN UINT8 *SupportedFeatureMask,
+ IN UINTN BitMaskSize
)
{
- EFI_STATUS Status;
+ EFI_STATUS Status;
Status = PcdSetPtrS (PcdCpuFeaturesSetting, &BitMaskSize, SupportedFeatureMask);
ASSERT_EFI_ERROR (Status);
@@ -54,14 +54,14 @@ SetSettingPcd (
**/
VOID
FillProcessorInfo (
- IN OUT REGISTER_CPU_FEATURE_INFORMATION *CpuInfo
+ IN OUT REGISTER_CPU_FEATURE_INFORMATION *CpuInfo
)
{
- CPUID_VERSION_INFO_EAX Eax;
- CPUID_VERSION_INFO_ECX Ecx;
- CPUID_VERSION_INFO_EDX Edx;
- UINT32 DisplayedFamily;
- UINT32 DisplayedModel;
+ CPUID_VERSION_INFO_EAX Eax;
+ CPUID_VERSION_INFO_ECX Ecx;
+ CPUID_VERSION_INFO_EDX Edx;
+ UINT32 DisplayedFamily;
+ UINT32 DisplayedModel;
AsmCpuid (CPUID_VERSION_INFO, &Eax.Uint32, NULL, &Ecx.Uint32, &Edx.Uint32);
@@ -71,14 +71,14 @@ FillProcessorInfo (
}
DisplayedModel = Eax.Bits.Model;
- if (Eax.Bits.FamilyId == 0x06 || Eax.Bits.FamilyId == 0x0f) {
+ if ((Eax.Bits.FamilyId == 0x06) || (Eax.Bits.FamilyId == 0x0f)) {
DisplayedModel |= (Eax.Bits.ExtendedModelId << 4);
}
- CpuInfo->DisplayFamily = DisplayedFamily;
- CpuInfo->DisplayModel = DisplayedModel;
- CpuInfo->SteppingId = Eax.Bits.SteppingId;
- CpuInfo->ProcessorType = Eax.Bits.ProcessorType;
+ CpuInfo->DisplayFamily = DisplayedFamily;
+ CpuInfo->DisplayModel = DisplayedModel;
+ CpuInfo->SteppingId = Eax.Bits.SteppingId;
+ CpuInfo->ProcessorType = Eax.Bits.ProcessorType;
CpuInfo->CpuIdVersionInfoEcx.Uint32 = Ecx.Uint32;
CpuInfo->CpuIdVersionInfoEdx.Uint32 = Edx.Uint32;
}
@@ -92,29 +92,29 @@ CpuInitDataInitialize (
VOID
)
{
- EFI_STATUS Status;
- UINTN ProcessorNumber;
- EFI_PROCESSOR_INFORMATION ProcessorInfoBuffer;
- CPU_FEATURES_ENTRY *CpuFeature;
- CPU_FEATURES_INIT_ORDER *InitOrder;
- CPU_FEATURES_DATA *CpuFeaturesData;
- LIST_ENTRY *Entry;
- UINT32 Core;
- UINT32 Package;
- UINT32 Thread;
- EFI_CPU_PHYSICAL_LOCATION *Location;
- UINT32 PackageIndex;
- UINT32 CoreIndex;
- UINTN Pages;
- UINT32 FirstPackage;
- UINT32 *FirstCore;
- UINT32 *FirstThread;
- ACPI_CPU_DATA *AcpiCpuData;
- CPU_STATUS_INFORMATION *CpuStatus;
- UINT32 *ThreadCountPerPackage;
- UINT8 *ThreadCountPerCore;
- UINTN NumberOfCpus;
- UINTN NumberOfEnabledProcessors;
+ EFI_STATUS Status;
+ UINTN ProcessorNumber;
+ EFI_PROCESSOR_INFORMATION ProcessorInfoBuffer;
+ CPU_FEATURES_ENTRY *CpuFeature;
+ CPU_FEATURES_INIT_ORDER *InitOrder;
+ CPU_FEATURES_DATA *CpuFeaturesData;
+ LIST_ENTRY *Entry;
+ UINT32 Core;
+ UINT32 Package;
+ UINT32 Thread;
+ EFI_CPU_PHYSICAL_LOCATION *Location;
+ UINT32 PackageIndex;
+ UINT32 CoreIndex;
+ UINTN Pages;
+ UINT32 FirstPackage;
+ UINT32 *FirstCore;
+ UINT32 *FirstThread;
+ ACPI_CPU_DATA *AcpiCpuData;
+ CPU_STATUS_INFORMATION *CpuStatus;
+ UINT32 *ThreadCountPerPackage;
+ UINT8 *ThreadCountPerCore;
+ UINTN NumberOfCpus;
+ UINTN NumberOfEnabledProcessors;
Core = 0;
Package = 0;
@@ -143,23 +143,24 @@ CpuInitDataInitialize (
if (CpuFeature->GetConfigDataFunc != NULL) {
CpuFeature->ConfigData = CpuFeature->GetConfigDataFunc (NumberOfCpus);
}
+
Entry = Entry->ForwardLink;
}
- CpuFeaturesData->NumberOfCpus = (UINT32) NumberOfCpus;
+ CpuFeaturesData->NumberOfCpus = (UINT32)NumberOfCpus;
AcpiCpuData = GetAcpiCpuData ();
ASSERT (AcpiCpuData != NULL);
- CpuFeaturesData->AcpiCpuData= AcpiCpuData;
+ CpuFeaturesData->AcpiCpuData = AcpiCpuData;
CpuStatus = &AcpiCpuData->CpuFeatureInitData.CpuStatus;
- Location = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (EFI_CPU_PHYSICAL_LOCATION) * NumberOfCpus));
+ Location = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (EFI_CPU_PHYSICAL_LOCATION) * NumberOfCpus));
ASSERT (Location != NULL);
ZeroMem (Location, sizeof (EFI_CPU_PHYSICAL_LOCATION) * NumberOfCpus);
AcpiCpuData->CpuFeatureInitData.ApLocation = (EFI_PHYSICAL_ADDRESS)(UINTN)Location;
for (ProcessorNumber = 0; ProcessorNumber < NumberOfCpus; ProcessorNumber++) {
- InitOrder = &CpuFeaturesData->InitOrder[ProcessorNumber];
+ InitOrder = &CpuFeaturesData->InitOrder[ProcessorNumber];
InitOrder->FeaturesSupportedMask = AllocateZeroPool (CpuFeaturesData->BitMaskSize);
ASSERT (InitOrder->FeaturesSupportedMask != NULL);
InitializeListHead (&InitOrder->OrderList);
@@ -182,12 +183,14 @@ CpuInitDataInitialize (
if (Package < ProcessorInfoBuffer.Location.Package) {
Package = ProcessorInfoBuffer.Location.Package;
}
+
//
// Collect CPU max core count info.
//
if (Core < ProcessorInfoBuffer.Location.Core) {
Core = ProcessorInfoBuffer.Location.Core;
}
+
//
// Collect CPU max thread count info.
//
@@ -195,13 +198,17 @@ CpuInitDataInitialize (
Thread = ProcessorInfoBuffer.Location.Thread;
}
}
- CpuStatus->PackageCount = Package + 1;
- CpuStatus->MaxCoreCount = Core + 1;
- CpuStatus->MaxThreadCount = Thread + 1;
- DEBUG ((DEBUG_INFO, "Processor Info: Package: %d, MaxCore : %d, MaxThread: %d\n",
- CpuStatus->PackageCount,
- CpuStatus->MaxCoreCount,
- CpuStatus->MaxThreadCount));
+
+ CpuStatus->PackageCount = Package + 1;
+ CpuStatus->MaxCoreCount = Core + 1;
+ CpuStatus->MaxThreadCount = Thread + 1;
+ DEBUG ((
+ DEBUG_INFO,
+ "Processor Info: Package: %d, MaxCore : %d, MaxThread: %d\n",
+ CpuStatus->PackageCount,
+ CpuStatus->MaxCoreCount,
+ CpuStatus->MaxThreadCount
+ ));
//
// Collect valid core count in each package because not all cores are valid.
@@ -228,7 +235,10 @@ CpuInitDataInitialize (
for (CoreIndex = 0; CoreIndex < CpuStatus->MaxCoreCount; CoreIndex++) {
if (ThreadCountPerCore[PackageIndex * CpuStatus->MaxCoreCount + CoreIndex] != 0) {
DEBUG ((
- DEBUG_INFO, " P%02d C%04d, Thread Count = %d\n", PackageIndex, CoreIndex,
+ DEBUG_INFO,
+ " P%02d C%04d, Thread Count = %d\n",
+ PackageIndex,
+ CoreIndex,
ThreadCountPerCore[PackageIndex * CpuStatus->MaxCoreCount + CoreIndex]
));
}
@@ -248,13 +258,13 @@ CpuInitDataInitialize (
Pages = EFI_SIZE_TO_PAGES (CpuStatus->PackageCount * sizeof (UINT32) + CpuStatus->PackageCount * CpuStatus->MaxCoreCount * sizeof (UINT32));
FirstCore = AllocatePages (Pages);
ASSERT (FirstCore != NULL);
- FirstThread = FirstCore + CpuStatus->PackageCount;
+ FirstThread = FirstCore + CpuStatus->PackageCount;
//
// Set FirstPackage, FirstCore[], FirstThread[] to maximum package ID, core ID, thread ID.
//
FirstPackage = MAX_UINT32;
- SetMem32 (FirstCore, CpuStatus->PackageCount * sizeof (UINT32), MAX_UINT32);
+ SetMem32 (FirstCore, CpuStatus->PackageCount * sizeof (UINT32), MAX_UINT32);
SetMem32 (FirstThread, CpuStatus->PackageCount * CpuStatus->MaxCoreCount * sizeof (UINT32), MAX_UINT32);
for (ProcessorNumber = 0; ProcessorNumber < NumberOfCpus; ProcessorNumber++) {
@@ -263,7 +273,7 @@ CpuInitDataInitialize (
//
// Save the minimum package ID in the platform.
//
- FirstPackage = MIN (Location->Package, FirstPackage);
+ FirstPackage = MIN (Location->Package, FirstPackage);
//
// Save the minimum core ID per package.
@@ -274,9 +284,9 @@ CpuInitDataInitialize (
// Save the minimum thread ID per core.
//
FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core] = MIN (
- Location->Thread,
- FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core]
- );
+ Location->Thread,
+ FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core]
+ );
}
//
@@ -293,13 +303,14 @@ CpuInitDataInitialize (
// Set First.Die/Tile/Module for each thread assuming:
// single Die under each package, single Tile under each Die, single Module under each Tile
//
- CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Die = 1;
- CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Tile = 1;
+ CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Die = 1;
+ CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Tile = 1;
CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Module = 1;
if (Location->Core == FirstCore[Location->Package]) {
CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Core = 1;
}
+
if (Location->Thread == FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core]) {
CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Thread = 1;
}
@@ -318,14 +329,14 @@ CpuInitDataInitialize (
**/
VOID
SupportedMaskOr (
- IN UINT8 *SupportedFeatureMask,
- IN UINT8 *OrFeatureBitMask,
- IN UINT32 BitMaskSize
+ IN UINT8 *SupportedFeatureMask,
+ IN UINT8 *OrFeatureBitMask,
+ IN UINT32 BitMaskSize
)
{
- UINTN Index;
- UINT8 *Data1;
- UINT8 *Data2;
+ UINTN Index;
+ UINT8 *Data1;
+ UINT8 *Data2;
Data1 = SupportedFeatureMask;
Data2 = OrFeatureBitMask;
@@ -344,14 +355,14 @@ SupportedMaskOr (
**/
VOID
SupportedMaskAnd (
- IN UINT8 *SupportedFeatureMask,
- IN CONST UINT8 *AndFeatureBitMask,
- IN UINT32 BitMaskSize
+ IN UINT8 *SupportedFeatureMask,
+ IN CONST UINT8 *AndFeatureBitMask,
+ IN UINT32 BitMaskSize
)
{
- UINTN Index;
- UINT8 *Data1;
- CONST UINT8 *Data2;
+ UINTN Index;
+ UINT8 *Data1;
+ CONST UINT8 *Data2;
Data1 = SupportedFeatureMask;
Data2 = AndFeatureBitMask;
@@ -369,14 +380,14 @@ SupportedMaskAnd (
**/
VOID
SupportedMaskCleanBit (
- IN UINT8 *SupportedFeatureMask,
- IN UINT8 *AndFeatureBitMask,
- IN UINT32 BitMaskSize
+ IN UINT8 *SupportedFeatureMask,
+ IN UINT8 *AndFeatureBitMask,
+ IN UINT32 BitMaskSize
)
{
- UINTN Index;
- UINT8 *Data1;
- UINT8 *Data2;
+ UINTN Index;
+ UINT8 *Data1;
+ UINT8 *Data2;
Data1 = SupportedFeatureMask;
Data2 = AndFeatureBitMask;
@@ -400,14 +411,14 @@ SupportedMaskCleanBit (
**/
BOOLEAN
IsBitMaskMatch (
- IN UINT8 *SupportedFeatureMask,
- IN UINT8 *ComparedFeatureBitMask,
- IN UINT32 BitMaskSize
+ IN UINT8 *SupportedFeatureMask,
+ IN UINT8 *ComparedFeatureBitMask,
+ IN UINT32 BitMaskSize
)
{
- UINTN Index;
- UINT8 *Data1;
- UINT8 *Data2;
+ UINTN Index;
+ UINT8 *Data1;
+ UINT8 *Data2;
Data1 = SupportedFeatureMask;
Data2 = ComparedFeatureBitMask;
@@ -416,6 +427,7 @@ IsBitMaskMatch (
return TRUE;
}
}
+
return FALSE;
}
@@ -427,18 +439,18 @@ IsBitMaskMatch (
VOID
EFIAPI
CollectProcessorData (
- IN OUT VOID *Buffer
+ IN OUT VOID *Buffer
)
{
- UINTN ProcessorNumber;
- CPU_FEATURES_ENTRY *CpuFeature;
- REGISTER_CPU_FEATURE_INFORMATION *CpuInfo;
- LIST_ENTRY *Entry;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ UINTN ProcessorNumber;
+ CPU_FEATURES_ENTRY *CpuFeature;
+ REGISTER_CPU_FEATURE_INFORMATION *CpuInfo;
+ LIST_ENTRY *Entry;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = (CPU_FEATURES_DATA *)Buffer;
ProcessorNumber = GetProcessorIndex (CpuFeaturesData);
- CpuInfo = &CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo;
+ CpuInfo = &CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo;
//
// collect processor information
//
@@ -462,6 +474,7 @@ CollectProcessorData (
CpuFeaturesData->BitMaskSize
);
}
+
Entry = Entry->ForwardLink;
}
}
@@ -475,15 +488,15 @@ CollectProcessorData (
**/
VOID
DumpRegisterTableOnProcessor (
- IN UINTN ProcessorNumber
+ IN UINTN ProcessorNumber
)
{
- CPU_FEATURES_DATA *CpuFeaturesData;
- UINTN FeatureIndex;
- CPU_REGISTER_TABLE *RegisterTable;
- CPU_REGISTER_TABLE_ENTRY *RegisterTableEntry;
- CPU_REGISTER_TABLE_ENTRY *RegisterTableEntryHead;
- UINT32 DebugPrintErrorLevel;
+ CPU_FEATURES_DATA *CpuFeaturesData;
+ UINTN FeatureIndex;
+ CPU_REGISTER_TABLE *RegisterTable;
+ CPU_REGISTER_TABLE_ENTRY *RegisterTableEntry;
+ CPU_REGISTER_TABLE_ENTRY *RegisterTableEntryHead;
+ UINT32 DebugPrintErrorLevel;
DebugPrintErrorLevel = (ProcessorNumber == 0) ? DEBUG_INFO : DEBUG_VERBOSE;
CpuFeaturesData = GetCpuFeaturesData ();
@@ -493,71 +506,71 @@ DumpRegisterTableOnProcessor (
RegisterTable = &CpuFeaturesData->RegisterTable[ProcessorNumber];
DEBUG ((DebugPrintErrorLevel, "RegisterTable->TableLength = %d\n", RegisterTable->TableLength));
- RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *) (UINTN) RegisterTable->RegisterTableEntry;
+ RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *)(UINTN)RegisterTable->RegisterTableEntry;
for (FeatureIndex = 0; FeatureIndex < RegisterTable->TableLength; FeatureIndex++) {
RegisterTableEntry = &RegisterTableEntryHead[FeatureIndex];
switch (RegisterTableEntry->RegisterType) {
- case Msr:
- DEBUG ((
- DebugPrintErrorLevel,
- "Processor: %04d: Index %04d, MSR : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
- (UINT32) ProcessorNumber,
- (UINT32) FeatureIndex,
- RegisterTableEntry->Index,
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitLength,
- RegisterTableEntry->Value
- ));
- break;
- case ControlRegister:
- DEBUG ((
- DebugPrintErrorLevel,
- "Processor: %04d: Index %04d, CR : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
- (UINT32) ProcessorNumber,
- (UINT32) FeatureIndex,
- RegisterTableEntry->Index,
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitLength,
- RegisterTableEntry->Value
- ));
- break;
- case MemoryMapped:
- DEBUG ((
- DebugPrintErrorLevel,
- "Processor: %04d: Index %04d, MMIO : %016lx, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
- (UINT32) ProcessorNumber,
- (UINT32) FeatureIndex,
- RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32),
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitLength,
- RegisterTableEntry->Value
- ));
- break;
- case CacheControl:
- DEBUG ((
- DebugPrintErrorLevel,
- "Processor: %04d: Index %04d, CACHE: %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
- (UINT32) ProcessorNumber,
- (UINT32) FeatureIndex,
- RegisterTableEntry->Index,
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitLength,
- RegisterTableEntry->Value
- ));
- break;
- case Semaphore:
- DEBUG ((
- DebugPrintErrorLevel,
- "Processor: %04d: Index %04d, SEMAP: %s\r\n",
- (UINT32) ProcessorNumber,
- (UINT32) FeatureIndex,
- mDependTypeStr[MIN ((UINT32)RegisterTableEntry->Value, InvalidDepType)]
- ));
- break;
+ case Msr:
+ DEBUG ((
+ DebugPrintErrorLevel,
+ "Processor: %04d: Index %04d, MSR : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
+ (UINT32)ProcessorNumber,
+ (UINT32)FeatureIndex,
+ RegisterTableEntry->Index,
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitLength,
+ RegisterTableEntry->Value
+ ));
+ break;
+ case ControlRegister:
+ DEBUG ((
+ DebugPrintErrorLevel,
+ "Processor: %04d: Index %04d, CR : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
+ (UINT32)ProcessorNumber,
+ (UINT32)FeatureIndex,
+ RegisterTableEntry->Index,
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitLength,
+ RegisterTableEntry->Value
+ ));
+ break;
+ case MemoryMapped:
+ DEBUG ((
+ DebugPrintErrorLevel,
+ "Processor: %04d: Index %04d, MMIO : %016lx, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
+ (UINT32)ProcessorNumber,
+ (UINT32)FeatureIndex,
+ RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32),
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitLength,
+ RegisterTableEntry->Value
+ ));
+ break;
+ case CacheControl:
+ DEBUG ((
+ DebugPrintErrorLevel,
+ "Processor: %04d: Index %04d, CACHE: %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",
+ (UINT32)ProcessorNumber,
+ (UINT32)FeatureIndex,
+ RegisterTableEntry->Index,
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitLength,
+ RegisterTableEntry->Value
+ ));
+ break;
+ case Semaphore:
+ DEBUG ((
+ DebugPrintErrorLevel,
+ "Processor: %04d: Index %04d, SEMAP: %s\r\n",
+ (UINT32)ProcessorNumber,
+ (UINT32)FeatureIndex,
+ mDependTypeStr[MIN ((UINT32)RegisterTableEntry->Value, InvalidDepType)]
+ ));
+ break;
- default:
- break;
+ default:
+ break;
}
}
}
@@ -581,11 +594,11 @@ BiggestDep (
IN CPU_FEATURE_DEPENDENCE_TYPE NoneNeibAfterDep
)
{
- CPU_FEATURE_DEPENDENCE_TYPE Bigger;
+ CPU_FEATURE_DEPENDENCE_TYPE Bigger;
Bigger = MAX (BeforeDep, AfterDep);
Bigger = MAX (Bigger, NoneNeibBeforeDep);
- return MAX(Bigger, NoneNeibAfterDep);
+ return MAX (Bigger, NoneNeibAfterDep);
}
/**
@@ -596,26 +609,26 @@ BiggestDep (
**/
VOID
AnalysisProcessorFeatures (
- IN UINTN NumberOfCpus
+ IN UINTN NumberOfCpus
)
{
- EFI_STATUS Status;
- UINTN ProcessorNumber;
- CPU_FEATURES_ENTRY *CpuFeature;
- CPU_FEATURES_ENTRY *CpuFeatureInOrder;
- CPU_FEATURES_INIT_ORDER *CpuInitOrder;
- REGISTER_CPU_FEATURE_INFORMATION *CpuInfo;
- LIST_ENTRY *Entry;
- CPU_FEATURES_DATA *CpuFeaturesData;
- LIST_ENTRY *NextEntry;
- CPU_FEATURES_ENTRY *NextCpuFeatureInOrder;
- BOOLEAN Success;
- CPU_FEATURE_DEPENDENCE_TYPE BeforeDep;
- CPU_FEATURE_DEPENDENCE_TYPE AfterDep;
- CPU_FEATURE_DEPENDENCE_TYPE NoneNeibBeforeDep;
- CPU_FEATURE_DEPENDENCE_TYPE NoneNeibAfterDep;
-
- CpuFeaturesData = GetCpuFeaturesData ();
+ EFI_STATUS Status;
+ UINTN ProcessorNumber;
+ CPU_FEATURES_ENTRY *CpuFeature;
+ CPU_FEATURES_ENTRY *CpuFeatureInOrder;
+ CPU_FEATURES_INIT_ORDER *CpuInitOrder;
+ REGISTER_CPU_FEATURE_INFORMATION *CpuInfo;
+ LIST_ENTRY *Entry;
+ CPU_FEATURES_DATA *CpuFeaturesData;
+ LIST_ENTRY *NextEntry;
+ CPU_FEATURES_ENTRY *NextCpuFeatureInOrder;
+ BOOLEAN Success;
+ CPU_FEATURE_DEPENDENCE_TYPE BeforeDep;
+ CPU_FEATURE_DEPENDENCE_TYPE AfterDep;
+ CPU_FEATURE_DEPENDENCE_TYPE NoneNeibBeforeDep;
+ CPU_FEATURE_DEPENDENCE_TYPE NoneNeibAfterDep;
+
+ CpuFeaturesData = GetCpuFeaturesData ();
CpuFeaturesData->CapabilityPcd = AllocatePool (CpuFeaturesData->BitMaskSize);
ASSERT (CpuFeaturesData->CapabilityPcd != NULL);
SetMem (CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize, 0xFF);
@@ -626,6 +639,7 @@ AnalysisProcessorFeatures (
//
SupportedMaskAnd (CpuFeaturesData->CapabilityPcd, CpuInitOrder->FeaturesSupportedMask, CpuFeaturesData->BitMaskSize);
}
+
//
// Calculate the last setting
//
@@ -637,28 +651,30 @@ AnalysisProcessorFeatures (
// Dump the last CPU feature list
//
DEBUG_CODE_BEGIN ();
- DEBUG ((DEBUG_INFO, "Last CPU features list...\n"));
- Entry = GetFirstNode (&CpuFeaturesData->FeatureList);
- while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {
- CpuFeature = CPU_FEATURE_ENTRY_FROM_LINK (Entry);
- if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize)) {
- if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize)) {
- DEBUG ((DEBUG_INFO, "[Enable ] "));
- } else {
- DEBUG ((DEBUG_INFO, "[Disable ] "));
- }
+ DEBUG ((DEBUG_INFO, "Last CPU features list...\n"));
+ Entry = GetFirstNode (&CpuFeaturesData->FeatureList);
+ while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {
+ CpuFeature = CPU_FEATURE_ENTRY_FROM_LINK (Entry);
+ if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize)) {
+ if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize)) {
+ DEBUG ((DEBUG_INFO, "[Enable ] "));
} else {
- DEBUG ((DEBUG_INFO, "[Unsupport] "));
+ DEBUG ((DEBUG_INFO, "[Disable ] "));
}
- DumpCpuFeature (CpuFeature, CpuFeaturesData->BitMaskSize);
- Entry = Entry->ForwardLink;
+ } else {
+ DEBUG ((DEBUG_INFO, "[Unsupport] "));
}
- DEBUG ((DEBUG_INFO, "PcdCpuFeaturesCapability:\n"));
- DumpCpuFeatureMask (CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize);
- DEBUG ((DEBUG_INFO, "Origin PcdCpuFeaturesSetting:\n"));
- DumpCpuFeatureMask (PcdGetPtr (PcdCpuFeaturesSetting), CpuFeaturesData->BitMaskSize);
- DEBUG ((DEBUG_INFO, "Final PcdCpuFeaturesSetting:\n"));
- DumpCpuFeatureMask (CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize);
+
+ DumpCpuFeature (CpuFeature, CpuFeaturesData->BitMaskSize);
+ Entry = Entry->ForwardLink;
+ }
+
+ DEBUG ((DEBUG_INFO, "PcdCpuFeaturesCapability:\n"));
+ DumpCpuFeatureMask (CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize);
+ DEBUG ((DEBUG_INFO, "Origin PcdCpuFeaturesSetting:\n"));
+ DumpCpuFeatureMask (PcdGetPtr (PcdCpuFeaturesSetting), CpuFeaturesData->BitMaskSize);
+ DEBUG ((DEBUG_INFO, "Final PcdCpuFeaturesSetting:\n"));
+ DumpCpuFeatureMask (CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize);
DEBUG_CODE_END ();
//
@@ -669,7 +685,7 @@ AnalysisProcessorFeatures (
for (ProcessorNumber = 0; ProcessorNumber < NumberOfCpus; ProcessorNumber++) {
CpuInitOrder = &CpuFeaturesData->InitOrder[ProcessorNumber];
- Entry = GetFirstNode (&CpuFeaturesData->FeatureList);
+ Entry = GetFirstNode (&CpuFeaturesData->FeatureList);
while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {
//
// Insert each feature into processor's order list
@@ -680,13 +696,15 @@ AnalysisProcessorFeatures (
ASSERT (CpuFeatureInOrder != NULL);
InsertTailList (&CpuInitOrder->OrderList, &CpuFeatureInOrder->Link);
}
+
Entry = Entry->ForwardLink;
}
+
//
// Go through ordered feature list to initialize CPU features
//
CpuInfo = &CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo;
- Entry = GetFirstNode (&CpuInitOrder->OrderList);
+ Entry = GetFirstNode (&CpuInitOrder->OrderList);
while (!IsNull (&CpuInitOrder->OrderList, Entry)) {
CpuFeatureInOrder = CPU_FEATURE_ENTRY_FROM_LINK (Entry);
@@ -736,23 +754,24 @@ AnalysisProcessorFeatures (
// Check whether next feature has After type dependence with not neighborhood CPU
// Features in former CPU features.
//
- NoneNeibAfterDep = DetectNoneNeighborhoodFeatureScope(NextCpuFeatureInOrder, FALSE, &CpuInitOrder->OrderList);
+ NoneNeibAfterDep = DetectNoneNeighborhoodFeatureScope (NextCpuFeatureInOrder, FALSE, &CpuInitOrder->OrderList);
} else {
BeforeDep = NoneDepType;
AfterDep = NoneDepType;
NoneNeibAfterDep = NoneDepType;
}
+
//
// Check whether current feature has Before type dependence with none neighborhood
// CPU features in after Cpu features.
//
- NoneNeibBeforeDep = DetectNoneNeighborhoodFeatureScope(CpuFeatureInOrder, TRUE, &CpuInitOrder->OrderList);
+ NoneNeibBeforeDep = DetectNoneNeighborhoodFeatureScope (CpuFeatureInOrder, TRUE, &CpuInitOrder->OrderList);
//
// Get the biggest dependence and add semaphore for it.
// PackageDepType > CoreDepType > ThreadDepType > NoneDepType.
//
- BeforeDep = BiggestDep(BeforeDep, AfterDep, NoneNeibBeforeDep, NoneNeibAfterDep);
+ BeforeDep = BiggestDep (BeforeDep, AfterDep, NoneNeibBeforeDep, NoneNeibAfterDep);
if (BeforeDep > ThreadDepType) {
CPU_REGISTER_TABLE_WRITE32 (ProcessorNumber, Semaphore, 0, BeforeDep);
}
@@ -783,7 +802,7 @@ AnalysisProcessorFeatures (
**/
VOID
LibReleaseSemaphore (
- IN OUT volatile UINT32 *Sem
+ IN OUT volatile UINT32 *Sem
)
{
InterlockedIncrement (Sem);
@@ -801,7 +820,7 @@ LibReleaseSemaphore (
**/
VOID
LibWaitForSemaphore (
- IN OUT volatile UINT32 *Sem
+ IN OUT volatile UINT32 *Sem
)
{
UINT32 Value;
@@ -827,42 +846,46 @@ LibWaitForSemaphore (
**/
UINTN
ReadWriteCr (
- IN UINT32 CrIndex,
- IN BOOLEAN Read,
- IN OUT UINTN *CrValue
+ IN UINT32 CrIndex,
+ IN BOOLEAN Read,
+ IN OUT UINTN *CrValue
)
{
switch (CrIndex) {
- case 0:
- if (Read) {
- *CrValue = AsmReadCr0 ();
- } else {
- AsmWriteCr0 (*CrValue);
- }
- break;
- case 2:
- if (Read) {
- *CrValue = AsmReadCr2 ();
- } else {
- AsmWriteCr2 (*CrValue);
- }
- break;
- case 3:
- if (Read) {
- *CrValue = AsmReadCr3 ();
- } else {
- AsmWriteCr3 (*CrValue);
- }
- break;
- case 4:
- if (Read) {
- *CrValue = AsmReadCr4 ();
- } else {
- AsmWriteCr4 (*CrValue);
- }
- break;
- default:
- return EFI_UNSUPPORTED;;
+ case 0:
+ if (Read) {
+ *CrValue = AsmReadCr0 ();
+ } else {
+ AsmWriteCr0 (*CrValue);
+ }
+
+ break;
+ case 2:
+ if (Read) {
+ *CrValue = AsmReadCr2 ();
+ } else {
+ AsmWriteCr2 (*CrValue);
+ }
+
+ break;
+ case 3:
+ if (Read) {
+ *CrValue = AsmReadCr3 ();
+ } else {
+ AsmWriteCr3 (*CrValue);
+ }
+
+ break;
+ case 4:
+ if (Read) {
+ *CrValue = AsmReadCr4 ();
+ } else {
+ AsmWriteCr4 (*CrValue);
+ }
+
+ break;
+ default:
+ return EFI_UNSUPPORTED;
}
return EFI_SUCCESS;
@@ -880,10 +903,10 @@ ReadWriteCr (
**/
VOID
ProgramProcessorRegister (
- IN CPU_REGISTER_TABLE *RegisterTable,
- IN EFI_CPU_PHYSICAL_LOCATION *ApLocation,
- IN CPU_STATUS_INFORMATION *CpuStatus,
- IN PROGRAM_CPU_REGISTER_FLAGS *CpuFlags
+ IN CPU_REGISTER_TABLE *RegisterTable,
+ IN EFI_CPU_PHYSICAL_LOCATION *ApLocation,
+ IN CPU_STATUS_INFORMATION *CpuStatus,
+ IN PROGRAM_CPU_REGISTER_FLAGS *CpuFlags
)
{
CPU_REGISTER_TABLE_ENTRY *RegisterTableEntry;
@@ -903,54 +926,25 @@ ProgramProcessorRegister (
//
// Traverse Register Table of this logical processor
//
- RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *) (UINTN) RegisterTable->RegisterTableEntry;
+ RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *)(UINTN)RegisterTable->RegisterTableEntry;
for (Index = 0; Index < RegisterTable->TableLength; Index++) {
-
RegisterTableEntry = &RegisterTableEntryHead[Index];
//
// Check the type of specified register
//
switch (RegisterTableEntry->RegisterType) {
- //
- // The specified register is Control Register
- //
- case ControlRegister:
- Status = ReadWriteCr (RegisterTableEntry->Index, TRUE, &Value);
- if (EFI_ERROR (Status)) {
- break;
- }
- if (RegisterTableEntry->TestThenWrite) {
- CurrentValue = BitFieldRead64 (
- Value,
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1
- );
- if (CurrentValue == RegisterTableEntry->Value) {
+ //
+ // The specified register is Control Register
+ //
+ case ControlRegister:
+ Status = ReadWriteCr (RegisterTableEntry->Index, TRUE, &Value);
+ if (EFI_ERROR (Status)) {
break;
}
- }
- Value = (UINTN) BitFieldWrite64 (
- Value,
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,
- RegisterTableEntry->Value
- );
- ReadWriteCr (RegisterTableEntry->Index, FALSE, &Value);
- break;
- //
- // The specified register is Model Specific Register
- //
- case Msr:
- if (RegisterTableEntry->TestThenWrite) {
- Value = (UINTN)AsmReadMsr64 (RegisterTableEntry->Index);
- if (RegisterTableEntry->ValidBitLength >= 64) {
- if (Value == RegisterTableEntry->Value) {
- break;
- }
- } else {
+ if (RegisterTableEntry->TestThenWrite) {
CurrentValue = BitFieldRead64 (
Value,
RegisterTableEntry->ValidBitStart,
@@ -960,153 +954,190 @@ ProgramProcessorRegister (
break;
}
}
- }
- if (RegisterTableEntry->ValidBitLength >= 64) {
- //
- // If length is not less than 64 bits, then directly write without reading
- //
- AsmWriteMsr64 (
- RegisterTableEntry->Index,
- RegisterTableEntry->Value
- );
- } else {
- //
- // Set the bit section according to bit start and length
- //
- AsmMsrBitFieldWrite64 (
- RegisterTableEntry->Index,
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,
- RegisterTableEntry->Value
- );
- }
- break;
- //
- // MemoryMapped operations
- //
- case MemoryMapped:
- AcquireSpinLock (&CpuFlags->MemoryMappedLock);
- MmioBitFieldWrite32 (
- (UINTN)(RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32)),
- RegisterTableEntry->ValidBitStart,
- RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,
- (UINT32)RegisterTableEntry->Value
- );
- ReleaseSpinLock (&CpuFlags->MemoryMappedLock);
- break;
- //
- // Enable or disable cache
- //
- case CacheControl:
- //
- // If value of the entry is 0, then disable cache. Otherwise, enable cache.
- //
- if (RegisterTableEntry->Value == 0) {
- AsmDisableCache ();
- } else {
- AsmEnableCache ();
- }
- break;
+ Value = (UINTN)BitFieldWrite64 (
+ Value,
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,
+ RegisterTableEntry->Value
+ );
+ ReadWriteCr (RegisterTableEntry->Index, FALSE, &Value);
+ break;
- case Semaphore:
- // Semaphore works logic like below:
//
- // V(x) = LibReleaseSemaphore (Semaphore[FirstThread + x]);
- // P(x) = LibWaitForSemaphore (Semaphore[FirstThread + x]);
+ // The specified register is Model Specific Register
//
- // All threads (T0...Tn) waits in P() line and continues running
- // together.
+ case Msr:
+ if (RegisterTableEntry->TestThenWrite) {
+ Value = (UINTN)AsmReadMsr64 (RegisterTableEntry->Index);
+ if (RegisterTableEntry->ValidBitLength >= 64) {
+ if (Value == RegisterTableEntry->Value) {
+ break;
+ }
+ } else {
+ CurrentValue = BitFieldRead64 (
+ Value,
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1
+ );
+ if (CurrentValue == RegisterTableEntry->Value) {
+ break;
+ }
+ }
+ }
+
+ if (RegisterTableEntry->ValidBitLength >= 64) {
+ //
+ // If length is not less than 64 bits, then directly write without reading
+ //
+ AsmWriteMsr64 (
+ RegisterTableEntry->Index,
+ RegisterTableEntry->Value
+ );
+ } else {
+ //
+ // Set the bit section according to bit start and length
+ //
+ AsmMsrBitFieldWrite64 (
+ RegisterTableEntry->Index,
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,
+ RegisterTableEntry->Value
+ );
+ }
+
+ break;
//
+ // MemoryMapped operations
//
- // T0 T1 ... Tn
+ case MemoryMapped:
+ AcquireSpinLock (&CpuFlags->MemoryMappedLock);
+ MmioBitFieldWrite32 (
+ (UINTN)(RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32)),
+ RegisterTableEntry->ValidBitStart,
+ RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,
+ (UINT32)RegisterTableEntry->Value
+ );
+ ReleaseSpinLock (&CpuFlags->MemoryMappedLock);
+ break;
//
- // V(0...n) V(0...n) ... V(0...n)
- // n * P(0) n * P(1) ... n * P(n)
+ // Enable or disable cache
//
- switch (RegisterTableEntry->Value) {
- case CoreDepType:
- SemaphorePtr = CpuFlags->CoreSemaphoreCount;
- ThreadCountPerCore = (UINT8 *)(UINTN)CpuStatus->ThreadCountPerCore;
-
- CurrentCore = ApLocation->Package * CpuStatus->MaxCoreCount + ApLocation->Core;
+ case CacheControl:
//
- // Get Offset info for the first thread in the core which current thread belongs to.
+ // If value of the entry is 0, then disable cache. Otherwise, enable cache.
//
- FirstThread = CurrentCore * CpuStatus->MaxThreadCount;
- CurrentThread = FirstThread + ApLocation->Thread;
-
- //
- // Different cores may have different valid threads in them. If driver maintail clearly
- // thread index in different cores, the logic will be much complicated.
- // Here driver just simply records the max thread number in all cores and use it as expect
- // thread number for all cores.
- // In below two steps logic, first current thread will Release semaphore for each thread
- // in current core. Maybe some threads are not valid in this core, but driver don't
- // care. Second, driver will let current thread wait semaphore for all valid threads in
- // current core. Because only the valid threads will do release semaphore for this
- // thread, driver here only need to wait the valid thread count.
- //
-
- //
- // First Notify ALL THREADs in current Core that this thread is ready.
- //
- for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount; ProcessorIndex ++) {
- LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);
- }
- //
- // Second, check whether all VALID THREADs (not all threads) in current core are ready.
- //
- for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerCore[CurrentCore]; ProcessorIndex ++) {
- LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);
+ if (RegisterTableEntry->Value == 0) {
+ AsmDisableCache ();
+ } else {
+ AsmEnableCache ();
}
+
break;
- case PackageDepType:
- SemaphorePtr = CpuFlags->PackageSemaphoreCount;
- ThreadCountPerPackage = (UINT32 *)(UINTN)CpuStatus->ThreadCountPerPackage;
+ case Semaphore:
+ // Semaphore works logic like below:
//
- // Get Offset info for the first thread in the package which current thread belongs to.
+ // V(x) = LibReleaseSemaphore (Semaphore[FirstThread + x]);
+ // P(x) = LibWaitForSemaphore (Semaphore[FirstThread + x]);
//
- FirstThread = ApLocation->Package * CpuStatus->MaxCoreCount * CpuStatus->MaxThreadCount;
+ // All threads (T0...Tn) waits in P() line and continues running
+ // together.
//
- // Get the possible threads count for current package.
//
- CurrentThread = FirstThread + CpuStatus->MaxThreadCount * ApLocation->Core + ApLocation->Thread;
-
+ // T0 T1 ... Tn
//
- // Different packages may have different valid threads in them. If driver maintail clearly
- // thread index in different packages, the logic will be much complicated.
- // Here driver just simply records the max thread number in all packages and use it as expect
- // thread number for all packages.
- // In below two steps logic, first current thread will Release semaphore for each thread
- // in current package. Maybe some threads are not valid in this package, but driver don't
- // care. Second, driver will let current thread wait semaphore for all valid threads in
- // current package. Because only the valid threads will do release semaphore for this
- // thread, driver here only need to wait the valid thread count.
+ // V(0...n) V(0...n) ... V(0...n)
+ // n * P(0) n * P(1) ... n * P(n)
//
+ switch (RegisterTableEntry->Value) {
+ case CoreDepType:
+ SemaphorePtr = CpuFlags->CoreSemaphoreCount;
+ ThreadCountPerCore = (UINT8 *)(UINTN)CpuStatus->ThreadCountPerCore;
+
+ CurrentCore = ApLocation->Package * CpuStatus->MaxCoreCount + ApLocation->Core;
+ //
+ // Get Offset info for the first thread in the core which current thread belongs to.
+ //
+ FirstThread = CurrentCore * CpuStatus->MaxThreadCount;
+ CurrentThread = FirstThread + ApLocation->Thread;
+
+ //
+ // Different cores may have different valid threads in them. If driver maintail clearly
+ // thread index in different cores, the logic will be much complicated.
+ // Here driver just simply records the max thread number in all cores and use it as expect
+ // thread number for all cores.
+ // In below two steps logic, first current thread will Release semaphore for each thread
+ // in current core. Maybe some threads are not valid in this core, but driver don't
+ // care. Second, driver will let current thread wait semaphore for all valid threads in
+ // current core. Because only the valid threads will do release semaphore for this
+ // thread, driver here only need to wait the valid thread count.
+ //
+
+ //
+ // First Notify ALL THREADs in current Core that this thread is ready.
+ //
+ for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount; ProcessorIndex++) {
+ LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);
+ }
+
+ //
+ // Second, check whether all VALID THREADs (not all threads) in current core are ready.
+ //
+ for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerCore[CurrentCore]; ProcessorIndex++) {
+ LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);
+ }
- //
- // First Notify ALL THREADS in current package that this thread is ready.
- //
- for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount * CpuStatus->MaxCoreCount; ProcessorIndex ++) {
- LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);
- }
- //
- // Second, check whether VALID THREADS (not all threads) in current package are ready.
- //
- for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerPackage[ApLocation->Package]; ProcessorIndex ++) {
- LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);
+ break;
+
+ case PackageDepType:
+ SemaphorePtr = CpuFlags->PackageSemaphoreCount;
+ ThreadCountPerPackage = (UINT32 *)(UINTN)CpuStatus->ThreadCountPerPackage;
+ //
+ // Get Offset info for the first thread in the package which current thread belongs to.
+ //
+ FirstThread = ApLocation->Package * CpuStatus->MaxCoreCount * CpuStatus->MaxThreadCount;
+ //
+ // Get the possible threads count for current package.
+ //
+ CurrentThread = FirstThread + CpuStatus->MaxThreadCount * ApLocation->Core + ApLocation->Thread;
+
+ //
+ // Different packages may have different valid threads in them. If driver maintail clearly
+ // thread index in different packages, the logic will be much complicated.
+ // Here driver just simply records the max thread number in all packages and use it as expect
+ // thread number for all packages.
+ // In below two steps logic, first current thread will Release semaphore for each thread
+ // in current package. Maybe some threads are not valid in this package, but driver don't
+ // care. Second, driver will let current thread wait semaphore for all valid threads in
+ // current package. Because only the valid threads will do release semaphore for this
+ // thread, driver here only need to wait the valid thread count.
+ //
+
+ //
+ // First Notify ALL THREADS in current package that this thread is ready.
+ //
+ for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount * CpuStatus->MaxCoreCount; ProcessorIndex++) {
+ LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);
+ }
+
+ //
+ // Second, check whether VALID THREADS (not all threads) in current package are ready.
+ //
+ for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerPackage[ApLocation->Package]; ProcessorIndex++) {
+ LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);
+ }
+
+ break;
+
+ default:
+ break;
}
+
break;
default:
break;
- }
- break;
-
- default:
- break;
}
}
}
@@ -1120,32 +1151,33 @@ ProgramProcessorRegister (
VOID
EFIAPI
SetProcessorRegister (
- IN OUT VOID *Buffer
+ IN OUT VOID *Buffer
)
{
- CPU_FEATURES_DATA *CpuFeaturesData;
- CPU_REGISTER_TABLE *RegisterTable;
- CPU_REGISTER_TABLE *RegisterTables;
- UINT32 InitApicId;
- UINTN ProcIndex;
- UINTN Index;
- ACPI_CPU_DATA *AcpiCpuData;
+ CPU_FEATURES_DATA *CpuFeaturesData;
+ CPU_REGISTER_TABLE *RegisterTable;
+ CPU_REGISTER_TABLE *RegisterTables;
+ UINT32 InitApicId;
+ UINTN ProcIndex;
+ UINTN Index;
+ ACPI_CPU_DATA *AcpiCpuData;
- CpuFeaturesData = (CPU_FEATURES_DATA *) Buffer;
- AcpiCpuData = CpuFeaturesData->AcpiCpuData;
+ CpuFeaturesData = (CPU_FEATURES_DATA *)Buffer;
+ AcpiCpuData = CpuFeaturesData->AcpiCpuData;
RegisterTables = (CPU_REGISTER_TABLE *)(UINTN)AcpiCpuData->CpuFeatureInitData.RegisterTable;
- InitApicId = GetInitialApicId ();
+ InitApicId = GetInitialApicId ();
RegisterTable = NULL;
- ProcIndex = (UINTN)-1;
+ ProcIndex = (UINTN)-1;
for (Index = 0; Index < AcpiCpuData->NumberOfCpus; Index++) {
if (RegisterTables[Index].InitialApicId == InitApicId) {
RegisterTable = &RegisterTables[Index];
- ProcIndex = Index;
+ ProcIndex = Index;
break;
}
}
+
ASSERT (RegisterTable != NULL);
ProgramProcessorRegister (
@@ -1170,9 +1202,9 @@ CpuFeaturesDetect (
VOID
)
{
- CPU_FEATURES_DATA *CpuFeaturesData;
+ CPU_FEATURES_DATA *CpuFeaturesData;
- CpuFeaturesData = GetCpuFeaturesData();
+ CpuFeaturesData = GetCpuFeaturesData ();
CpuInitDataInitialize ();
diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c
index e2e06e8..e635cad 100644
--- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c
+++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c
@@ -13,7 +13,7 @@
#include "RegisterCpuFeatures.h"
-CPU_FEATURES_DATA mCpuFeaturesData = {0};
+CPU_FEATURES_DATA mCpuFeaturesData = { 0 };
/**
Worker function to get CPU_FEATURES_DATA pointer.
@@ -38,17 +38,17 @@ GetMpService (
VOID
)
{
- EFI_STATUS Status;
- MP_SERVICES MpService;
+ EFI_STATUS Status;
+ MP_SERVICES MpService;
//
// Get MP Services Protocol
//
Status = gBS->LocateProtocol (
- &gEfiMpServiceProtocolGuid,
- NULL,
- (VOID **)&MpService.Protocol
- );
+ &gEfiMpServiceProtocolGuid,
+ NULL,
+ (VOID **)&MpService.Protocol
+ );
ASSERT_EFI_ERROR (Status);
return MpService;
@@ -63,15 +63,15 @@ GetMpService (
**/
UINTN
GetProcessorIndex (
- IN CPU_FEATURES_DATA *CpuFeaturesData
+ IN CPU_FEATURES_DATA *CpuFeaturesData
)
{
- EFI_STATUS Status;
- UINTN ProcessorIndex;
- EFI_MP_SERVICES_PROTOCOL *MpServices;
+ EFI_STATUS Status;
+ UINTN ProcessorIndex;
+ EFI_MP_SERVICES_PROTOCOL *MpServices;
MpServices = CpuFeaturesData->MpService.Protocol;
- Status = MpServices->WhoAmI(MpServices, &ProcessorIndex);
+ Status = MpServices->WhoAmI (MpServices, &ProcessorIndex);
ASSERT_EFI_ERROR (Status);
return ProcessorIndex;
}
@@ -88,22 +88,22 @@ GetProcessorIndex (
**/
EFI_STATUS
GetProcessorInformation (
- IN UINTN ProcessorNumber,
- OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
+ IN UINTN ProcessorNumber,
+ OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
)
{
- EFI_STATUS Status;
- EFI_MP_SERVICES_PROTOCOL *MpServices;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EFI_MP_SERVICES_PROTOCOL *MpServices;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- MpServices = CpuFeaturesData->MpService.Protocol;
+ MpServices = CpuFeaturesData->MpService.Protocol;
Status = MpServices->GetProcessorInfo (
- MpServices,
- ProcessorNumber,
- ProcessorInfoBuffer
- );
+ MpServices,
+ ProcessorNumber,
+ ProcessorInfoBuffer
+ );
return Status;
}
@@ -117,29 +117,29 @@ GetProcessorInformation (
**/
VOID
StartupAllAPsWorker (
- IN EFI_AP_PROCEDURE Procedure,
- IN EFI_EVENT MpEvent
+ IN EFI_AP_PROCEDURE Procedure,
+ IN EFI_EVENT MpEvent
)
{
- EFI_STATUS Status;
- EFI_MP_SERVICES_PROTOCOL *MpServices;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EFI_MP_SERVICES_PROTOCOL *MpServices;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- MpServices = CpuFeaturesData->MpService.Protocol;
+ MpServices = CpuFeaturesData->MpService.Protocol;
//
// Wakeup all APs
//
Status = MpServices->StartupAllAPs (
- MpServices,
- Procedure,
- FALSE,
- MpEvent,
- 0,
- CpuFeaturesData,
- NULL
- );
+ MpServices,
+ Procedure,
+ FALSE,
+ MpEvent,
+ 0,
+ CpuFeaturesData,
+ NULL
+ );
ASSERT_EFI_ERROR (Status);
}
@@ -150,24 +150,24 @@ StartupAllAPsWorker (
**/
VOID
SwitchNewBsp (
- IN UINTN ProcessorNumber
+ IN UINTN ProcessorNumber
)
{
- EFI_STATUS Status;
- EFI_MP_SERVICES_PROTOCOL *MpServices;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EFI_MP_SERVICES_PROTOCOL *MpServices;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- MpServices = CpuFeaturesData->MpService.Protocol;
+ MpServices = CpuFeaturesData->MpService.Protocol;
//
// Wakeup all APs
//
Status = MpServices->SwitchBSP (
- MpServices,
- ProcessorNumber,
- TRUE
- );
+ MpServices,
+ ProcessorNumber,
+ TRUE
+ );
ASSERT_EFI_ERROR (Status);
}
@@ -183,16 +183,16 @@ SwitchNewBsp (
**/
VOID
GetNumberOfProcessor (
- OUT UINTN *NumberOfCpus,
- OUT UINTN *NumberOfEnabledProcessors
+ OUT UINTN *NumberOfCpus,
+ OUT UINTN *NumberOfEnabledProcessors
)
{
- EFI_STATUS Status;
- EFI_MP_SERVICES_PROTOCOL *MpServices;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EFI_MP_SERVICES_PROTOCOL *MpServices;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- MpServices = CpuFeaturesData->MpService.Protocol;
+ MpServices = CpuFeaturesData->MpService.Protocol;
//
// Get the number of CPUs
@@ -219,14 +219,14 @@ CpuFeaturesInitialize (
VOID
)
{
- CPU_FEATURES_DATA *CpuFeaturesData;
- UINTN OldBspNumber;
- EFI_EVENT MpEvent;
- EFI_STATUS Status;
+ CPU_FEATURES_DATA *CpuFeaturesData;
+ UINTN OldBspNumber;
+ EFI_EVENT MpEvent;
+ EFI_STATUS Status;
CpuFeaturesData = GetCpuFeaturesData ();
- OldBspNumber = GetProcessorIndex (CpuFeaturesData);
+ OldBspNumber = GetProcessorIndex (CpuFeaturesData);
CpuFeaturesData->BspNumber = OldBspNumber;
//
@@ -263,6 +263,7 @@ CpuFeaturesInitialize (
do {
Status = gBS->CheckEvent (MpEvent);
} while (Status == EFI_NOT_READY);
+
ASSERT_EFI_ERROR (Status);
}
@@ -273,4 +274,3 @@ CpuFeaturesInitialize (
SwitchNewBsp (CpuFeaturesData->BspNumber);
}
}
-
diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c
index 4e558e9..d4c528b 100644
--- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c
+++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c
@@ -20,7 +20,7 @@
0xa694c467, 0x697a, 0x446b, { 0xb9, 0x29, 0x5b, 0x14, 0xa0, 0xcf, 0x39, 0xf } \
}
-EFI_GUID mRegisterCpuFeaturesHobGuid = REGISTER_CPU_FEATURES_GUID;
+EFI_GUID mRegisterCpuFeaturesHobGuid = REGISTER_CPU_FEATURES_GUID;
/**
Worker function to get CPU_FEATURES_DATA pointer.
@@ -32,16 +32,16 @@ GetCpuFeaturesData (
VOID
)
{
- CPU_FEATURES_DATA *CpuInitData;
- EFI_HOB_GUID_TYPE *GuidHob;
- VOID *DataInHob;
- UINT64 Data64;
+ CPU_FEATURES_DATA *CpuInitData;
+ EFI_HOB_GUID_TYPE *GuidHob;
+ VOID *DataInHob;
+ UINT64 Data64;
CpuInitData = NULL;
- GuidHob = GetFirstGuidHob (&mRegisterCpuFeaturesHobGuid);
+ GuidHob = GetFirstGuidHob (&mRegisterCpuFeaturesHobGuid);
if (GuidHob != NULL) {
- DataInHob = GET_GUID_HOB_DATA (GuidHob);
- CpuInitData = (CPU_FEATURES_DATA *) (*(UINTN *) DataInHob);
+ DataInHob = GET_GUID_HOB_DATA (GuidHob);
+ CpuInitData = (CPU_FEATURES_DATA *)(*(UINTN *)DataInHob);
ASSERT (CpuInitData != NULL);
} else {
CpuInitData = AllocateZeroPool (sizeof (CPU_FEATURES_DATA));
@@ -49,10 +49,10 @@ GetCpuFeaturesData (
//
// Build location of CPU MP DATA buffer in HOB
//
- Data64 = (UINT64) (UINTN) CpuInitData;
+ Data64 = (UINT64)(UINTN)CpuInitData;
BuildGuidDataHob (
&mRegisterCpuFeaturesHobGuid,
- (VOID *) &Data64,
+ (VOID *)&Data64,
sizeof (UINT64)
);
}
@@ -70,8 +70,8 @@ GetMpService (
VOID
)
{
- EFI_STATUS Status;
- MP_SERVICES MpService;
+ EFI_STATUS Status;
+ MP_SERVICES MpService;
//
// Get MP Services2 Ppi
@@ -95,12 +95,12 @@ GetMpService (
**/
UINTN
GetProcessorIndex (
- IN CPU_FEATURES_DATA *CpuFeaturesData
+ IN CPU_FEATURES_DATA *CpuFeaturesData
)
{
- EFI_STATUS Status;
- EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
- UINTN ProcessorIndex;
+ EFI_STATUS Status;
+ EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
+ UINTN ProcessorIndex;
CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
@@ -126,22 +126,22 @@ GetProcessorIndex (
**/
EFI_STATUS
GetProcessorInformation (
- IN UINTN ProcessorNumber,
- OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
+ IN UINTN ProcessorNumber,
+ OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
)
{
- EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
- EFI_STATUS Status;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
+ EFI_STATUS Status;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
+ CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
Status = CpuMp2Ppi->GetProcessorInfo (
- CpuMp2Ppi,
- ProcessorNumber,
- ProcessorInfoBuffer
- );
+ CpuMp2Ppi,
+ ProcessorNumber,
+ ProcessorInfoBuffer
+ );
return Status;
}
@@ -155,27 +155,27 @@ GetProcessorInformation (
**/
VOID
StartupAllAPsWorker (
- IN EFI_AP_PROCEDURE Procedure,
- IN EFI_EVENT MpEvent
+ IN EFI_AP_PROCEDURE Procedure,
+ IN EFI_EVENT MpEvent
)
{
- EFI_STATUS Status;
- EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
+ CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
//
// Wakeup all APs for data collection.
//
Status = CpuMp2Ppi->StartupAllAPs (
- CpuMp2Ppi,
- Procedure,
- FALSE,
- 0,
- CpuFeaturesData
- );
+ CpuMp2Ppi,
+ Procedure,
+ FALSE,
+ 0,
+ CpuFeaturesData
+ );
ASSERT_EFI_ERROR (Status);
}
@@ -188,12 +188,12 @@ StartupAllAPsWorker (
**/
VOID
StartupAllCPUsWorker (
- IN EFI_AP_PROCEDURE Procedure
+ IN EFI_AP_PROCEDURE Procedure
)
{
- EFI_STATUS Status;
- EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
@@ -201,12 +201,12 @@ StartupAllCPUsWorker (
// Get MP Services2 Ppi
//
CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
- Status = CpuMp2Ppi->StartupAllCPUs (
- CpuMp2Ppi,
- Procedure,
- 0,
- CpuFeaturesData
- );
+ Status = CpuMp2Ppi->StartupAllCPUs (
+ CpuMp2Ppi,
+ Procedure,
+ 0,
+ CpuFeaturesData
+ );
ASSERT_EFI_ERROR (Status);
}
@@ -217,24 +217,24 @@ StartupAllCPUsWorker (
**/
VOID
SwitchNewBsp (
- IN UINTN ProcessorNumber
+ IN UINTN ProcessorNumber
)
{
- EFI_STATUS Status;
- EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
+ CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
//
// Wakeup all APs for data collection.
//
Status = CpuMp2Ppi->SwitchBSP (
- CpuMp2Ppi,
- ProcessorNumber,
- TRUE
- );
+ CpuMp2Ppi,
+ ProcessorNumber,
+ TRUE
+ );
ASSERT_EFI_ERROR (Status);
}
@@ -250,25 +250,25 @@ SwitchNewBsp (
**/
VOID
GetNumberOfProcessor (
- OUT UINTN *NumberOfCpus,
- OUT UINTN *NumberOfEnabledProcessors
+ OUT UINTN *NumberOfCpus,
+ OUT UINTN *NumberOfEnabledProcessors
)
{
- EFI_STATUS Status;
- EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;
+ CPU_FEATURES_DATA *CpuFeaturesData;
CpuFeaturesData = GetCpuFeaturesData ();
- CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
+ CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;
//
// Get the number of CPUs
//
Status = CpuMp2Ppi->GetNumberOfProcessors (
- CpuMp2Ppi,
- NumberOfCpus,
- NumberOfEnabledProcessors
- );
+ CpuMp2Ppi,
+ NumberOfCpus,
+ NumberOfEnabledProcessors
+ );
ASSERT_EFI_ERROR (Status);
}
@@ -286,12 +286,12 @@ CpuFeaturesInitialize (
VOID
)
{
- CPU_FEATURES_DATA *CpuFeaturesData;
- UINTN OldBspNumber;
+ CPU_FEATURES_DATA *CpuFeaturesData;
+ UINTN OldBspNumber;
CpuFeaturesData = GetCpuFeaturesData ();
- OldBspNumber = GetProcessorIndex (CpuFeaturesData);
+ OldBspNumber = GetProcessorIndex (CpuFeaturesData);
CpuFeaturesData->BspNumber = OldBspNumber;
//
@@ -306,4 +306,3 @@ CpuFeaturesInitialize (
SwitchNewBsp (CpuFeaturesData->BspNumber);
}
}
-
diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h
index e8a4aa6..4a84954 100644
--- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h
+++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h
@@ -27,66 +27,66 @@
#define CPU_FEATURE_ENTRY_SIGNATURE SIGNATURE_32 ('C', 'F', 'E', 'S')
-#define CPU_FEATURE_NAME_SIZE 128
+#define CPU_FEATURE_NAME_SIZE 128
typedef struct {
- REGISTER_CPU_FEATURE_INFORMATION CpuInfo;
- UINT8 *FeaturesSupportedMask;
- LIST_ENTRY OrderList;
+ REGISTER_CPU_FEATURE_INFORMATION CpuInfo;
+ UINT8 *FeaturesSupportedMask;
+ LIST_ENTRY OrderList;
} CPU_FEATURES_INIT_ORDER;
typedef struct {
- UINT32 Signature;
- LIST_ENTRY Link;
- UINT8 *FeatureMask;
- CHAR8 *FeatureName;
- CPU_FEATURE_GET_CONFIG_DATA GetConfigDataFunc;
- CPU_FEATURE_SUPPORT SupportFunc;
- CPU_FEATURE_INITIALIZE InitializeFunc;
- UINT8 *ThreadBeforeFeatureBitMask;
- UINT8 *ThreadAfterFeatureBitMask;
- UINT8 *CoreBeforeFeatureBitMask;
- UINT8 *CoreAfterFeatureBitMask;
- UINT8 *PackageBeforeFeatureBitMask;
- UINT8 *PackageAfterFeatureBitMask;
- VOID *ConfigData;
- BOOLEAN BeforeAll;
- BOOLEAN AfterAll;
+ UINT32 Signature;
+ LIST_ENTRY Link;
+ UINT8 *FeatureMask;
+ CHAR8 *FeatureName;
+ CPU_FEATURE_GET_CONFIG_DATA GetConfigDataFunc;
+ CPU_FEATURE_SUPPORT SupportFunc;
+ CPU_FEATURE_INITIALIZE InitializeFunc;
+ UINT8 *ThreadBeforeFeatureBitMask;
+ UINT8 *ThreadAfterFeatureBitMask;
+ UINT8 *CoreBeforeFeatureBitMask;
+ UINT8 *CoreAfterFeatureBitMask;
+ UINT8 *PackageBeforeFeatureBitMask;
+ UINT8 *PackageAfterFeatureBitMask;
+ VOID *ConfigData;
+ BOOLEAN BeforeAll;
+ BOOLEAN AfterAll;
} CPU_FEATURES_ENTRY;
//
// Flags used when program the register.
//
typedef struct {
- volatile UINTN MemoryMappedLock; // Spinlock used to program mmio
- volatile UINT32 *CoreSemaphoreCount; // Semaphore containers used to program Core semaphore.
- volatile UINT32 *PackageSemaphoreCount; // Semaphore containers used to program Package semaphore.
+ volatile UINTN MemoryMappedLock; // Spinlock used to program mmio
+ volatile UINT32 *CoreSemaphoreCount; // Semaphore containers used to program Core semaphore.
+ volatile UINT32 *PackageSemaphoreCount; // Semaphore containers used to program Package semaphore.
} PROGRAM_CPU_REGISTER_FLAGS;
typedef union {
- EFI_MP_SERVICES_PROTOCOL *Protocol;
- EDKII_PEI_MP_SERVICES2_PPI *Ppi;
+ EFI_MP_SERVICES_PROTOCOL *Protocol;
+ EDKII_PEI_MP_SERVICES2_PPI *Ppi;
} MP_SERVICES;
typedef struct {
- UINTN FeaturesCount;
- UINT32 BitMaskSize;
- LIST_ENTRY FeatureList;
+ UINTN FeaturesCount;
+ UINT32 BitMaskSize;
+ LIST_ENTRY FeatureList;
- CPU_FEATURES_INIT_ORDER *InitOrder;
- UINT8 *CapabilityPcd;
- UINT8 *SettingPcd;
+ CPU_FEATURES_INIT_ORDER *InitOrder;
+ UINT8 *CapabilityPcd;
+ UINT8 *SettingPcd;
- UINT32 NumberOfCpus;
- ACPI_CPU_DATA *AcpiCpuData;
+ UINT32 NumberOfCpus;
+ ACPI_CPU_DATA *AcpiCpuData;
- CPU_REGISTER_TABLE *RegisterTable;
- CPU_REGISTER_TABLE *PreSmmRegisterTable;
- UINTN BspNumber;
+ CPU_REGISTER_TABLE *RegisterTable;
+ CPU_REGISTER_TABLE *PreSmmRegisterTable;
+ UINTN BspNumber;
- PROGRAM_CPU_REGISTER_FLAGS CpuFlags;
+ PROGRAM_CPU_REGISTER_FLAGS CpuFlags;
- MP_SERVICES MpService;
+ MP_SERVICES MpService;
} CPU_FEATURES_DATA;
#define CPU_FEATURE_ENTRY_FROM_LINK(a) \
@@ -116,7 +116,7 @@ GetCpuFeaturesData (
**/
UINTN
GetProcessorIndex (
- IN CPU_FEATURES_DATA *CpuFeaturesData
+ IN CPU_FEATURES_DATA *CpuFeaturesData
);
/**
@@ -131,8 +131,8 @@ GetProcessorIndex (
**/
EFI_STATUS
GetProcessorInformation (
- IN UINTN ProcessorNumber,
- OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
+ IN UINTN ProcessorNumber,
+ OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer
);
/**
@@ -145,8 +145,8 @@ GetProcessorInformation (
**/
VOID
StartupAllAPsWorker (
- IN EFI_AP_PROCEDURE Procedure,
- IN EFI_EVENT MpEvent
+ IN EFI_AP_PROCEDURE Procedure,
+ IN EFI_EVENT MpEvent
);
/**
@@ -161,8 +161,8 @@ StartupAllAPsWorker (
**/
VOID
GetNumberOfProcessor (
- OUT UINTN *NumberOfCpus,
- OUT UINTN *NumberOfEnabledProcessors
+ OUT UINTN *NumberOfCpus,
+ OUT UINTN *NumberOfEnabledProcessors
);
/**
@@ -172,7 +172,7 @@ GetNumberOfProcessor (
**/
VOID
SwitchNewBsp (
- IN UINTN ProcessorNumber
+ IN UINTN ProcessorNumber
);
/**
@@ -184,8 +184,8 @@ SwitchNewBsp (
**/
VOID
DumpCpuFeatureMask (
- IN UINT8 *FeatureMask,
- IN UINT32 BitMaskSize
+ IN UINT8 *FeatureMask,
+ IN UINT32 BitMaskSize
);
/**
@@ -212,9 +212,9 @@ DumpCpuFeature (
**/
CPU_FEATURE_DEPENDENCE_TYPE
DetectFeatureScope (
- IN CPU_FEATURES_ENTRY *CpuFeature,
- IN BOOLEAN Before,
- IN UINT8 *NextCpuFeatureMask
+ IN CPU_FEATURES_ENTRY *CpuFeature,
+ IN BOOLEAN Before,
+ IN UINT8 *NextCpuFeatureMask
);
/**
@@ -228,9 +228,9 @@ DetectFeatureScope (
**/
CPU_FEATURE_DEPENDENCE_TYPE
DetectNoneNeighborhoodFeatureScope (
- IN CPU_FEATURES_ENTRY *CpuFeature,
- IN BOOLEAN Before,
- IN LIST_ENTRY *FeatureList
+ IN CPU_FEATURES_ENTRY *CpuFeature,
+ IN BOOLEAN Before,
+ IN LIST_ENTRY *FeatureList
);
/**
@@ -242,7 +242,7 @@ DetectNoneNeighborhoodFeatureScope (
VOID
EFIAPI
SetProcessorRegister (
- IN OUT VOID *Buffer
+ IN OUT VOID *Buffer
);
/**
diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c
index ffe34ff..0285aaf 100644
--- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c
+++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c
@@ -17,17 +17,18 @@
**/
VOID
DumpCpuFeatureMask (
- IN UINT8 *FeatureMask,
- IN UINT32 BitMaskSize
+ IN UINT8 *FeatureMask,
+ IN UINT32 BitMaskSize
)
{
- UINTN Index;
- UINT8 *Data8;
+ UINTN Index;
+ UINT8 *Data8;
- Data8 = (UINT8 *) FeatureMask;
+ Data8 = (UINT8 *)FeatureMask;
for (Index = 0; Index < BitMaskSize; Index++) {
DEBUG ((DEBUG_INFO, " %02x ", *Data8++));
}
+
DEBUG ((DEBUG_INFO, "\n"));
}
@@ -44,7 +45,6 @@ DumpCpuFeature (
IN UINT32 BitMaskSize
)
{
-
if (CpuFeature->FeatureName != NULL) {
DEBUG ((DEBUG_INFO, "FeatureName: %a\n", CpuFeature->FeatureName));
} else {
@@ -64,8 +64,8 @@ DumpCpuFeature (
**/
BOOLEAN
IsBitMaskMatchCheck (
- IN UINT8 *FeatureMask,
- IN UINT8 *DependentBitMask
+ IN UINT8 *FeatureMask,
+ IN UINT8 *DependentBitMask
)
{
UINTN Index;
@@ -82,6 +82,7 @@ IsBitMaskMatchCheck (
return TRUE;
}
}
+
return FALSE;
}
@@ -98,14 +99,14 @@ IsBitMaskMatchCheck (
**/
BOOLEAN
FindSpecifyFeature (
- IN LIST_ENTRY *FeatureList,
- IN LIST_ENTRY *CurrentEntry,
- IN BOOLEAN SearchFormer,
- IN UINT8 *FeatureMask
+ IN LIST_ENTRY *FeatureList,
+ IN LIST_ENTRY *CurrentEntry,
+ IN BOOLEAN SearchFormer,
+ IN UINT8 *FeatureMask
)
{
- CPU_FEATURES_ENTRY *CpuFeature;
- LIST_ENTRY *NextEntry;
+ CPU_FEATURES_ENTRY *CpuFeature;
+ LIST_ENTRY *NextEntry;
//
// Check whether exist the not neighborhood entry first.
@@ -165,9 +166,9 @@ FindSpecifyFeature (
**/
CPU_FEATURE_DEPENDENCE_TYPE
DetectFeatureScope (
- IN CPU_FEATURES_ENTRY *CpuFeature,
- IN BOOLEAN Before,
- IN UINT8 *NextCpuFeatureMask
+ IN CPU_FEATURES_ENTRY *CpuFeature,
+ IN BOOLEAN Before,
+ IN UINT8 *NextCpuFeatureMask
)
{
//
@@ -185,17 +186,20 @@ DetectFeatureScope (
if (Before) {
if ((CpuFeature->PackageBeforeFeatureBitMask != NULL) &&
- IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageBeforeFeatureBitMask)) {
+ IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageBeforeFeatureBitMask))
+ {
return PackageDepType;
}
if ((CpuFeature->CoreBeforeFeatureBitMask != NULL) &&
- IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreBeforeFeatureBitMask)) {
+ IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreBeforeFeatureBitMask))
+ {
return CoreDepType;
}
if ((CpuFeature->ThreadBeforeFeatureBitMask != NULL) &&
- IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadBeforeFeatureBitMask)) {
+ IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadBeforeFeatureBitMask))
+ {
return ThreadDepType;
}
@@ -203,17 +207,20 @@ DetectFeatureScope (
}
if ((CpuFeature->PackageAfterFeatureBitMask != NULL) &&
- IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageAfterFeatureBitMask)) {
+ IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageAfterFeatureBitMask))
+ {
return PackageDepType;
}
if ((CpuFeature->CoreAfterFeatureBitMask != NULL) &&
- IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreAfterFeatureBitMask)) {
+ IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreAfterFeatureBitMask))
+ {
return CoreDepType;
}
if ((CpuFeature->ThreadAfterFeatureBitMask != NULL) &&
- IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadAfterFeatureBitMask)) {
+ IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadAfterFeatureBitMask))
+ {
return ThreadDepType;
}
@@ -231,24 +238,27 @@ DetectFeatureScope (
**/
CPU_FEATURE_DEPENDENCE_TYPE
DetectNoneNeighborhoodFeatureScope (
- IN CPU_FEATURES_ENTRY *CpuFeature,
- IN BOOLEAN Before,
- IN LIST_ENTRY *FeatureList
+ IN CPU_FEATURES_ENTRY *CpuFeature,
+ IN BOOLEAN Before,
+ IN LIST_ENTRY *FeatureList
)
{
if (Before) {
if ((CpuFeature->PackageBeforeFeatureBitMask != NULL) &&
- FindSpecifyFeature(FeatureList, &CpuFeature->Link, FALSE, CpuFeature->PackageBeforeFeatureBitMask)) {
+ FindSpecifyFeature (FeatureList, &CpuFeature->Link, FALSE, CpuFeature->PackageBeforeFeatureBitMask))
+ {
return PackageDepType;
}
if ((CpuFeature->CoreBeforeFeatureBitMask != NULL) &&
- FindSpecifyFeature(FeatureList, &CpuFeature->Link, FALSE, CpuFeature->CoreBeforeFeatureBitMask)) {
+ FindSpecifyFeature (FeatureList, &CpuFeature->Link, FALSE, CpuFeature->CoreBeforeFeatureBitMask))
+ {
return CoreDepType;
}
if ((CpuFeature->ThreadBeforeFeatureBitMask != NULL) &&
- FindSpecifyFeature(FeatureList, &CpuFeature->Link, FALSE, CpuFeature->ThreadBeforeFeatureBitMask)) {
+ FindSpecifyFeature (FeatureList, &CpuFeature->Link, FALSE, CpuFeature->ThreadBeforeFeatureBitMask))
+ {
return ThreadDepType;
}
@@ -256,17 +266,20 @@ DetectNoneNeighborhoodFeatureScope (
}
if ((CpuFeature->PackageAfterFeatureBitMask != NULL) &&
- FindSpecifyFeature(FeatureList, &CpuFeature->Link, TRUE, CpuFeature->PackageAfterFeatureBitMask)) {
+ FindSpecifyFeature (FeatureList, &CpuFeature->Link, TRUE, CpuFeature->PackageAfterFeatureBitMask))
+ {
return PackageDepType;
}
if ((CpuFeature->CoreAfterFeatureBitMask != NULL) &&
- FindSpecifyFeature(FeatureList, &CpuFeature->Link, TRUE, CpuFeature->CoreAfterFeatureBitMask)) {
+ FindSpecifyFeature (FeatureList, &CpuFeature->Link, TRUE, CpuFeature->CoreAfterFeatureBitMask))
+ {
return CoreDepType;
}
if ((CpuFeature->ThreadAfterFeatureBitMask != NULL) &&
- FindSpecifyFeature(FeatureList, &CpuFeature->Link, TRUE, CpuFeature->ThreadAfterFeatureBitMask)) {
+ FindSpecifyFeature (FeatureList, &CpuFeature->Link, TRUE, CpuFeature->ThreadAfterFeatureBitMask))
+ {
return ThreadDepType;
}
@@ -294,17 +307,17 @@ DetectNoneNeighborhoodFeatureScope (
**/
BOOLEAN
AdjustFeaturesDependence (
- IN OUT CPU_FEATURES_ENTRY *PreviousFeature,
- IN OUT CPU_FEATURES_ENTRY *CurrentFeature,
- IN CPU_FEATURES_ENTRY *FindFeature,
- IN BOOLEAN Before
+ IN OUT CPU_FEATURES_ENTRY *PreviousFeature,
+ IN OUT CPU_FEATURES_ENTRY *CurrentFeature,
+ IN CPU_FEATURES_ENTRY *FindFeature,
+ IN BOOLEAN Before
)
{
- CPU_FEATURE_DEPENDENCE_TYPE PreDependType;
- CPU_FEATURE_DEPENDENCE_TYPE CurrentDependType;
+ CPU_FEATURE_DEPENDENCE_TYPE PreDependType;
+ CPU_FEATURE_DEPENDENCE_TYPE CurrentDependType;
- PreDependType = DetectFeatureScope(PreviousFeature, Before, FindFeature->FeatureMask);
- CurrentDependType = DetectFeatureScope(CurrentFeature, Before, FindFeature->FeatureMask);
+ PreDependType = DetectFeatureScope (PreviousFeature, Before, FindFeature->FeatureMask);
+ CurrentDependType = DetectFeatureScope (CurrentFeature, Before, FindFeature->FeatureMask);
//
// If previous feature has no dependence with the find featue.
@@ -336,16 +349,16 @@ AdjustFeaturesDependence (
**/
VOID
AdjustEntry (
- IN LIST_ENTRY *FeatureList,
- IN OUT LIST_ENTRY *FindEntry,
- IN OUT LIST_ENTRY *CurrentEntry,
- IN BOOLEAN Before
+ IN LIST_ENTRY *FeatureList,
+ IN OUT LIST_ENTRY *FindEntry,
+ IN OUT LIST_ENTRY *CurrentEntry,
+ IN BOOLEAN Before
)
{
- LIST_ENTRY *PreviousEntry;
- CPU_FEATURES_ENTRY *PreviousFeature;
- CPU_FEATURES_ENTRY *CurrentFeature;
- CPU_FEATURES_ENTRY *FindFeature;
+ LIST_ENTRY *PreviousEntry;
+ CPU_FEATURES_ENTRY *PreviousFeature;
+ CPU_FEATURES_ENTRY *CurrentFeature;
+ CPU_FEATURES_ENTRY *FindFeature;
//
// For CPU feature which has core or package type dependence, later code need to insert
@@ -363,11 +376,10 @@ AdjustEntry (
if (Before) {
PreviousEntry = GetPreviousNode (FeatureList, FindEntry);
} else {
-
PreviousEntry = GetNextNode (FeatureList, FindEntry);
}
- CurrentFeature = CPU_FEATURE_ENTRY_FROM_LINK (CurrentEntry);
+ CurrentFeature = CPU_FEATURE_ENTRY_FROM_LINK (CurrentEntry);
RemoveEntryList (CurrentEntry);
if (IsNull (FeatureList, PreviousEntry)) {
@@ -407,7 +419,6 @@ AdjustEntry (
}
}
-
/**
Checks and adjusts current CPU features per dependency relationship.
@@ -419,14 +430,14 @@ AdjustEntry (
**/
BOOLEAN
InsertToBeforeEntry (
- IN LIST_ENTRY *FeatureList,
- IN LIST_ENTRY *CurrentEntry,
- IN UINT8 *FeatureMask
+ IN LIST_ENTRY *FeatureList,
+ IN LIST_ENTRY *CurrentEntry,
+ IN UINT8 *FeatureMask
)
{
- LIST_ENTRY *CheckEntry;
- CPU_FEATURES_ENTRY *CheckFeature;
- BOOLEAN Swapped;
+ LIST_ENTRY *CheckEntry;
+ CPU_FEATURES_ENTRY *CheckFeature;
+ BOOLEAN Swapped;
Swapped = FALSE;
@@ -441,6 +452,7 @@ InsertToBeforeEntry (
Swapped = TRUE;
break;
}
+
CheckEntry = CheckEntry->ForwardLink;
}
@@ -458,14 +470,14 @@ InsertToBeforeEntry (
**/
BOOLEAN
InsertToAfterEntry (
- IN LIST_ENTRY *FeatureList,
- IN LIST_ENTRY *CurrentEntry,
- IN UINT8 *FeatureMask
+ IN LIST_ENTRY *FeatureList,
+ IN LIST_ENTRY *CurrentEntry,
+ IN UINT8 *FeatureMask
)
{
- LIST_ENTRY *CheckEntry;
- CPU_FEATURES_ENTRY *CheckFeature;
- BOOLEAN Swapped;
+ LIST_ENTRY *CheckEntry;
+ CPU_FEATURES_ENTRY *CheckFeature;
+ BOOLEAN Swapped;
Swapped = FALSE;
@@ -480,6 +492,7 @@ InsertToAfterEntry (
Swapped = TRUE;
break;
}
+
CheckEntry = CheckEntry->ForwardLink;
}
@@ -493,22 +506,22 @@ InsertToAfterEntry (
**/
VOID
CheckCpuFeaturesDependency (
- IN LIST_ENTRY *FeatureList
+ IN LIST_ENTRY *FeatureList
)
{
- LIST_ENTRY *CurrentEntry;
- CPU_FEATURES_ENTRY *CpuFeature;
- LIST_ENTRY *CheckEntry;
- CPU_FEATURES_ENTRY *CheckFeature;
- BOOLEAN Swapped;
- LIST_ENTRY *TempEntry;
- LIST_ENTRY *NextEntry;
+ LIST_ENTRY *CurrentEntry;
+ CPU_FEATURES_ENTRY *CpuFeature;
+ LIST_ENTRY *CheckEntry;
+ CPU_FEATURES_ENTRY *CheckFeature;
+ BOOLEAN Swapped;
+ LIST_ENTRY *TempEntry;
+ LIST_ENTRY *NextEntry;
CurrentEntry = GetFirstNode (FeatureList);
while (!IsNull (FeatureList, CurrentEntry)) {
- Swapped = FALSE;
+ Swapped = FALSE;
CpuFeature = CPU_FEATURE_ENTRY_FROM_LINK (CurrentEntry);
- NextEntry = CurrentEntry->ForwardLink;
+ NextEntry = CurrentEntry->ForwardLink;
if (CpuFeature->BeforeAll) {
//
// Check all features dispatched before this entry
@@ -526,8 +539,10 @@ CheckCpuFeaturesDependency (
Swapped = TRUE;
break;
}
+
CheckEntry = CheckEntry->ForwardLink;
}
+
if (Swapped) {
CurrentEntry = NextEntry;
continue;
@@ -550,11 +565,13 @@ CheckCpuFeaturesDependency (
RemoveEntryList (CurrentEntry);
InsertHeadList (CheckEntry, CurrentEntry);
CurrentEntry = TempEntry;
- Swapped = TRUE;
+ Swapped = TRUE;
break;
}
+
CheckEntry = CheckEntry->ForwardLink;
}
+
if (Swapped) {
CurrentEntry = NextEntry;
continue;
@@ -622,18 +639,18 @@ CheckCpuFeaturesDependency (
**/
RETURN_STATUS
RegisterCpuFeatureWorker (
- IN CPU_FEATURES_DATA *CpuFeaturesData,
- IN CPU_FEATURES_ENTRY *CpuFeature
+ IN CPU_FEATURES_DATA *CpuFeaturesData,
+ IN CPU_FEATURES_ENTRY *CpuFeature
)
{
- EFI_STATUS Status;
- CPU_FEATURES_ENTRY *CpuFeatureEntry;
- LIST_ENTRY *Entry;
- BOOLEAN FeatureExist;
+ EFI_STATUS Status;
+ CPU_FEATURES_ENTRY *CpuFeatureEntry;
+ LIST_ENTRY *Entry;
+ BOOLEAN FeatureExist;
- FeatureExist = FALSE;
+ FeatureExist = FALSE;
CpuFeatureEntry = NULL;
- Entry = GetFirstNode (&CpuFeaturesData->FeatureList);
+ Entry = GetFirstNode (&CpuFeaturesData->FeatureList);
while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {
CpuFeatureEntry = CPU_FEATURE_ENTRY_FROM_LINK (Entry);
if (CompareMem (CpuFeature->FeatureMask, CpuFeatureEntry->FeatureMask, CpuFeaturesData->BitMaskSize) == 0) {
@@ -643,6 +660,7 @@ RegisterCpuFeatureWorker (
FeatureExist = TRUE;
break;
}
+
Entry = Entry->ForwardLink;
}
@@ -661,55 +679,71 @@ RegisterCpuFeatureWorker (
if (CpuFeature->GetConfigDataFunc != NULL) {
CpuFeatureEntry->GetConfigDataFunc = CpuFeature->GetConfigDataFunc;
}
+
if (CpuFeature->SupportFunc != NULL) {
CpuFeatureEntry->SupportFunc = CpuFeature->SupportFunc;
}
+
if (CpuFeature->InitializeFunc != NULL) {
CpuFeatureEntry->InitializeFunc = CpuFeature->InitializeFunc;
}
+
if (CpuFeature->FeatureName != NULL) {
if (CpuFeatureEntry->FeatureName == NULL) {
CpuFeatureEntry->FeatureName = AllocatePool (CPU_FEATURE_NAME_SIZE);
ASSERT (CpuFeatureEntry->FeatureName != NULL);
}
+
Status = AsciiStrCpyS (CpuFeatureEntry->FeatureName, CPU_FEATURE_NAME_SIZE, CpuFeature->FeatureName);
ASSERT_EFI_ERROR (Status);
FreePool (CpuFeature->FeatureName);
}
+
if (CpuFeature->ThreadBeforeFeatureBitMask != NULL) {
if (CpuFeatureEntry->ThreadBeforeFeatureBitMask != NULL) {
FreePool (CpuFeatureEntry->ThreadBeforeFeatureBitMask);
}
+
CpuFeatureEntry->ThreadBeforeFeatureBitMask = CpuFeature->ThreadBeforeFeatureBitMask;
}
+
if (CpuFeature->ThreadAfterFeatureBitMask != NULL) {
if (CpuFeatureEntry->ThreadAfterFeatureBitMask != NULL) {
FreePool (CpuFeatureEntry->ThreadAfterFeatureBitMask);
}
+
CpuFeatureEntry->ThreadAfterFeatureBitMask = CpuFeature->ThreadAfterFeatureBitMask;
}
+
if (CpuFeature->CoreBeforeFeatureBitMask != NULL) {
if (CpuFeatureEntry->CoreBeforeFeatureBitMask != NULL) {
FreePool (CpuFeatureEntry->CoreBeforeFeatureBitMask);
}
+
CpuFeatureEntry->CoreBeforeFeatureBitMask = CpuFeature->CoreBeforeFeatureBitMask;
}
+
if (CpuFeature->CoreAfterFeatureBitMask != NULL) {
if (CpuFeatureEntry->CoreAfterFeatureBitMask != NULL) {
FreePool (CpuFeatureEntry->CoreAfterFeatureBitMask);
}
+
CpuFeatureEntry->CoreAfterFeatureBitMask = CpuFeature->CoreAfterFeatureBitMask;
}
+
if (CpuFeature->PackageBeforeFeatureBitMask != NULL) {
if (CpuFeatureEntry->PackageBeforeFeatureBitMask != NULL) {
FreePool (CpuFeatureEntry->PackageBeforeFeatureBitMask);
}
+
CpuFeatureEntry->PackageBeforeFeatureBitMask = CpuFeature->PackageBeforeFeatureBitMask;
}
+
if (CpuFeature->PackageAfterFeatureBitMask != NULL) {
if (CpuFeatureEntry->PackageAfterFeatureBitMask != NULL) {
FreePool (CpuFeatureEntry->PackageAfterFeatureBitMask);
}
+
CpuFeatureEntry->PackageAfterFeatureBitMask = CpuFeature->PackageAfterFeatureBitMask;
}
@@ -719,6 +753,7 @@ RegisterCpuFeatureWorker (
FreePool (CpuFeature->FeatureMask);
FreePool (CpuFeature);
}
+
//
// Verify CPU features dependency can change CPU feature order
//
@@ -735,12 +770,12 @@ RegisterCpuFeatureWorker (
**/
VOID
SetCpuFeaturesBitMask (
- IN UINT8 **FeaturesBitMask,
- IN UINT32 Feature,
- IN UINTN BitMaskSize
+ IN UINT8 **FeaturesBitMask,
+ IN UINT32 Feature,
+ IN UINTN BitMaskSize
)
{
- UINT8 *CpuFeaturesBitMask;
+ UINT8 *CpuFeaturesBitMask;
ASSERT (FeaturesBitMask != NULL);
CpuFeaturesBitMask = *FeaturesBitMask;
@@ -751,7 +786,7 @@ SetCpuFeaturesBitMask (
}
CpuFeaturesBitMask += (Feature / 8);
- *CpuFeaturesBitMask |= (UINT8) (1 << (Feature % 8));
+ *CpuFeaturesBitMask |= (UINT8)(1 << (Feature % 8));
}
/**
@@ -803,27 +838,27 @@ SetCpuFeaturesBitMask (
RETURN_STATUS
EFIAPI
RegisterCpuFeature (
- IN CHAR8 *FeatureName OPTIONAL,
- IN CPU_FEATURE_GET_CONFIG_DATA GetConfigDataFunc OPTIONAL,
- IN CPU_FEATURE_SUPPORT SupportFunc OPTIONAL,
- IN CPU_FEATURE_INITIALIZE InitializeFunc OPTIONAL,
+ IN CHAR8 *FeatureName OPTIONAL,
+ IN CPU_FEATURE_GET_CONFIG_DATA GetConfigDataFunc OPTIONAL,
+ IN CPU_FEATURE_SUPPORT SupportFunc OPTIONAL,
+ IN CPU_FEATURE_INITIALIZE InitializeFunc OPTIONAL,
...
)
{
- EFI_STATUS Status;
- VA_LIST Marker;
- UINT32 Feature;
- CPU_FEATURES_ENTRY *CpuFeature;
- UINT8 *FeatureMask;
- UINT8 *ThreadBeforeFeatureBitMask;
- UINT8 *ThreadAfterFeatureBitMask;
- UINT8 *CoreBeforeFeatureBitMask;
- UINT8 *CoreAfterFeatureBitMask;
- UINT8 *PackageBeforeFeatureBitMask;
- UINT8 *PackageAfterFeatureBitMask;
- BOOLEAN BeforeAll;
- BOOLEAN AfterAll;
- CPU_FEATURES_DATA *CpuFeaturesData;
+ EFI_STATUS Status;
+ VA_LIST Marker;
+ UINT32 Feature;
+ CPU_FEATURES_ENTRY *CpuFeature;
+ UINT8 *FeatureMask;
+ UINT8 *ThreadBeforeFeatureBitMask;
+ UINT8 *ThreadAfterFeatureBitMask;
+ UINT8 *CoreBeforeFeatureBitMask;
+ UINT8 *CoreAfterFeatureBitMask;
+ UINT8 *PackageBeforeFeatureBitMask;
+ UINT8 *PackageAfterFeatureBitMask;
+ BOOLEAN BeforeAll;
+ BOOLEAN AfterAll;
+ CPU_FEATURES_DATA *CpuFeaturesData;
FeatureMask = NULL;
ThreadBeforeFeatureBitMask = NULL;
@@ -832,8 +867,8 @@ RegisterCpuFeature (
CoreAfterFeatureBitMask = NULL;
PackageBeforeFeatureBitMask = NULL;
PackageAfterFeatureBitMask = NULL;
- BeforeAll = FALSE;
- AfterAll = FALSE;
+ BeforeAll = FALSE;
+ AfterAll = FALSE;
CpuFeaturesData = GetCpuFeaturesData ();
if (CpuFeaturesData->FeaturesCount == 0) {
@@ -844,7 +879,7 @@ RegisterCpuFeature (
//
ASSERT (PcdGetSize (PcdCpuFeaturesSetting) == PcdGetSize (PcdCpuFeaturesCapability));
ASSERT (PcdGetSize (PcdCpuFeaturesSetting) == PcdGetSize (PcdCpuFeaturesSupport));
- CpuFeaturesData->BitMaskSize = (UINT32) PcdGetSize (PcdCpuFeaturesSetting);
+ CpuFeaturesData->BitMaskSize = (UINT32)PcdGetSize (PcdCpuFeaturesSetting);
}
VA_START (Marker, InitializeFunc);
@@ -853,19 +888,27 @@ RegisterCpuFeature (
//
// It's invalid to require a feature is before AND after all other features.
//
- ASSERT ((Feature & (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL))
- != (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL));
+ ASSERT (
+ (Feature & (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL))
+ != (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL)
+ );
//
// It's invalid to require feature A is before AND after before feature B,
// either in thread level, core level or package level.
//
- ASSERT ((Feature & (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER))
- != (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER));
- ASSERT ((Feature & (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER))
- != (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER));
- ASSERT ((Feature & (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER))
- != (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER));
+ ASSERT (
+ (Feature & (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER))
+ != (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER)
+ );
+ ASSERT (
+ (Feature & (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER))
+ != (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER)
+ );
+ ASSERT (
+ (Feature & (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER))
+ != (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER)
+ );
if (Feature < CPU_FEATURE_THREAD_BEFORE) {
BeforeAll = ((Feature & CPU_FEATURE_BEFORE_ALL) != 0) ? TRUE : FALSE;
AfterAll = ((Feature & CPU_FEATURE_AFTER_ALL) != 0) ? TRUE : FALSE;
@@ -885,8 +928,10 @@ RegisterCpuFeature (
} else if ((Feature & CPU_FEATURE_PACKAGE_AFTER) != 0) {
SetCpuFeaturesBitMask (&PackageAfterFeatureBitMask, Feature & ~CPU_FEATURE_PACKAGE_AFTER, CpuFeaturesData->BitMaskSize);
}
+
Feature = VA_ARG (Marker, UINT32);
}
+
VA_END (Marker);
CpuFeature = AllocateZeroPool (sizeof (CPU_FEATURES_ENTRY));
@@ -905,7 +950,7 @@ RegisterCpuFeature (
CpuFeature->SupportFunc = SupportFunc;
CpuFeature->InitializeFunc = InitializeFunc;
if (FeatureName != NULL) {
- CpuFeature->FeatureName = AllocatePool (CPU_FEATURE_NAME_SIZE);
+ CpuFeature->FeatureName = AllocatePool (CPU_FEATURE_NAME_SIZE);
ASSERT (CpuFeature->FeatureName != NULL);
Status = AsciiStrCpyS (CpuFeature->FeatureName, CPU_FEATURE_NAME_SIZE, FeatureName);
ASSERT_EFI_ERROR (Status);
@@ -927,18 +972,18 @@ GetAcpiCpuData (
VOID
)
{
- EFI_STATUS Status;
- UINTN NumberOfCpus;
- UINTN NumberOfEnabledProcessors;
- ACPI_CPU_DATA *AcpiCpuData;
- UINTN TableSize;
- CPU_REGISTER_TABLE *RegisterTable;
- UINTN Index;
- EFI_PROCESSOR_INFORMATION ProcessorInfoBuffer;
-
- AcpiCpuData = (ACPI_CPU_DATA *) (UINTN) PcdGet64 (PcdCpuS3DataAddress);
+ EFI_STATUS Status;
+ UINTN NumberOfCpus;
+ UINTN NumberOfEnabledProcessors;
+ ACPI_CPU_DATA *AcpiCpuData;
+ UINTN TableSize;
+ CPU_REGISTER_TABLE *RegisterTable;
+ UINTN Index;
+ EFI_PROCESSOR_INFORMATION ProcessorInfoBuffer;
+
+ AcpiCpuData = (ACPI_CPU_DATA *)(UINTN)PcdGet64 (PcdCpuS3DataAddress);
if (AcpiCpuData == NULL) {
- AcpiCpuData = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (ACPI_CPU_DATA)));
+ AcpiCpuData = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (ACPI_CPU_DATA)));
ASSERT (AcpiCpuData != NULL);
ZeroMem (AcpiCpuData, sizeof (ACPI_CPU_DATA));
@@ -952,14 +997,15 @@ GetAcpiCpuData (
AcpiCpuData->NumberOfCpus = (UINT32)NumberOfCpus;
}
- if (AcpiCpuData->CpuFeatureInitData.RegisterTable == 0 ||
- AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable == 0) {
+ if ((AcpiCpuData->CpuFeatureInitData.RegisterTable == 0) ||
+ (AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable == 0))
+ {
//
// Allocate buffer for empty RegisterTable and PreSmmInitRegisterTable for all CPUs
//
- NumberOfCpus = AcpiCpuData->NumberOfCpus;
- TableSize = 2 * NumberOfCpus * sizeof (CPU_REGISTER_TABLE);
- RegisterTable = AllocatePages (EFI_SIZE_TO_PAGES (TableSize));
+ NumberOfCpus = AcpiCpuData->NumberOfCpus;
+ TableSize = 2 * NumberOfCpus * sizeof (CPU_REGISTER_TABLE);
+ RegisterTable = AllocatePages (EFI_SIZE_TO_PAGES (TableSize));
ASSERT (RegisterTable != NULL);
for (Index = 0; Index < NumberOfCpus; Index++) {
@@ -976,9 +1022,11 @@ GetAcpiCpuData (
RegisterTable[NumberOfCpus + Index].AllocatedSize = 0;
RegisterTable[NumberOfCpus + Index].RegisterTableEntry = 0;
}
+
if (AcpiCpuData->CpuFeatureInitData.RegisterTable == 0) {
AcpiCpuData->CpuFeatureInitData.RegisterTable = (EFI_PHYSICAL_ADDRESS)(UINTN)RegisterTable;
}
+
if (AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable == 0) {
AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable = (EFI_PHYSICAL_ADDRESS)(UINTN)(RegisterTable + NumberOfCpus);
}
@@ -995,14 +1043,14 @@ GetAcpiCpuData (
STATIC
VOID
EnlargeRegisterTable (
- IN OUT CPU_REGISTER_TABLE *RegisterTable
+ IN OUT CPU_REGISTER_TABLE *RegisterTable
)
{
EFI_PHYSICAL_ADDRESS Address;
UINTN UsedPages;
UsedPages = RegisterTable->AllocatedSize / EFI_PAGE_SIZE;
- Address = (UINTN)AllocatePages (UsedPages + 1);
+ Address = (UINTN)AllocatePages (UsedPages + 1);
ASSERT (Address != 0);
//
@@ -1011,8 +1059,8 @@ EnlargeRegisterTable (
//
if (RegisterTable->AllocatedSize > 0) {
CopyMem (
- (VOID *) (UINTN) Address,
- (VOID *) (UINTN) RegisterTable->RegisterTableEntry,
+ (VOID *)(UINTN)Address,
+ (VOID *)(UINTN)RegisterTable->RegisterTableEntry,
RegisterTable->AllocatedSize
);
@@ -1045,27 +1093,27 @@ EnlargeRegisterTable (
**/
VOID
CpuRegisterTableWriteWorker (
- IN BOOLEAN PreSmmFlag,
- IN UINTN ProcessorNumber,
- IN REGISTER_TYPE RegisterType,
- IN UINT64 Index,
- IN UINT8 ValidBitStart,
- IN UINT8 ValidBitLength,
- IN UINT64 Value,
- IN BOOLEAN TestThenWrite
+ IN BOOLEAN PreSmmFlag,
+ IN UINTN ProcessorNumber,
+ IN REGISTER_TYPE RegisterType,
+ IN UINT64 Index,
+ IN UINT8 ValidBitStart,
+ IN UINT8 ValidBitLength,
+ IN UINT64 Value,
+ IN BOOLEAN TestThenWrite
)
{
- CPU_FEATURES_DATA *CpuFeaturesData;
- ACPI_CPU_DATA *AcpiCpuData;
- CPU_REGISTER_TABLE *RegisterTable;
- CPU_REGISTER_TABLE_ENTRY *RegisterTableEntry;
+ CPU_FEATURES_DATA *CpuFeaturesData;
+ ACPI_CPU_DATA *AcpiCpuData;
+ CPU_REGISTER_TABLE *RegisterTable;
+ CPU_REGISTER_TABLE_ENTRY *RegisterTableEntry;
CpuFeaturesData = GetCpuFeaturesData ();
if (CpuFeaturesData->RegisterTable == NULL) {
AcpiCpuData = GetAcpiCpuData ();
ASSERT ((AcpiCpuData != NULL) && (AcpiCpuData->CpuFeatureInitData.RegisterTable != 0));
- CpuFeaturesData->RegisterTable = (CPU_REGISTER_TABLE *) (UINTN) AcpiCpuData->CpuFeatureInitData.RegisterTable;
- CpuFeaturesData->PreSmmRegisterTable = (CPU_REGISTER_TABLE *) (UINTN) AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable;
+ CpuFeaturesData->RegisterTable = (CPU_REGISTER_TABLE *)(UINTN)AcpiCpuData->CpuFeatureInitData.RegisterTable;
+ CpuFeaturesData->PreSmmRegisterTable = (CPU_REGISTER_TABLE *)(UINTN)AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable;
}
if (PreSmmFlag) {
@@ -1081,10 +1129,10 @@ CpuRegisterTableWriteWorker (
//
// Append entry in the register table.
//
- RegisterTableEntry = (CPU_REGISTER_TABLE_ENTRY *) (UINTN) RegisterTable->RegisterTableEntry;
+ RegisterTableEntry = (CPU_REGISTER_TABLE_ENTRY *)(UINTN)RegisterTable->RegisterTableEntry;
RegisterTableEntry[RegisterTable->TableLength].RegisterType = RegisterType;
- RegisterTableEntry[RegisterTable->TableLength].Index = (UINT32) Index;
- RegisterTableEntry[RegisterTable->TableLength].HighIndex = (UINT32) RShiftU64 (Index, 32);
+ RegisterTableEntry[RegisterTable->TableLength].Index = (UINT32)Index;
+ RegisterTableEntry[RegisterTable->TableLength].HighIndex = (UINT32)RShiftU64 (Index, 32);
RegisterTableEntry[RegisterTable->TableLength].ValidBitStart = ValidBitStart;
RegisterTableEntry[RegisterTable->TableLength].ValidBitLength = ValidBitLength;
RegisterTableEntry[RegisterTable->TableLength].Value = Value;
@@ -1110,18 +1158,18 @@ CpuRegisterTableWriteWorker (
VOID
EFIAPI
CpuRegisterTableWrite (
- IN UINTN ProcessorNumber,
- IN REGISTER_TYPE RegisterType,
- IN UINT64 Index,
- IN UINT64 ValueMask,
- IN UINT64 Value
+ IN UINTN ProcessorNumber,
+ IN REGISTER_TYPE RegisterType,
+ IN UINT64 Index,
+ IN UINT64 ValueMask,
+ IN UINT64 Value
)
{
- UINT8 Start;
- UINT8 End;
- UINT8 Length;
+ UINT8 Start;
+ UINT8 End;
+ UINT8 Length;
- Start = (UINT8)LowBitSet64 (ValueMask);
+ Start = (UINT8)LowBitSet64 (ValueMask);
End = (UINT8)HighBitSet64 (ValueMask);
Length = End - Start + 1;
CpuRegisterTableWriteWorker (FALSE, ProcessorNumber, RegisterType, Index, Start, Length, Value, FALSE);
@@ -1144,18 +1192,18 @@ CpuRegisterTableWrite (
VOID
EFIAPI
CpuRegisterTableTestThenWrite (
- IN UINTN ProcessorNumber,
- IN REGISTER_TYPE RegisterType,
- IN UINT64 Index,
- IN UINT64 ValueMask,
- IN UINT64 Value
+ IN UINTN ProcessorNumber,
+ IN REGISTER_TYPE RegisterType,
+ IN UINT64 Index,
+ IN UINT64 ValueMask,
+ IN UINT64 Value
)
{
- UINT8 Start;
- UINT8 End;
- UINT8 Length;
+ UINT8 Start;
+ UINT8 End;
+ UINT8 Length;
- Start = (UINT8)LowBitSet64 (ValueMask);
+ Start = (UINT8)LowBitSet64 (ValueMask);
End = (UINT8)HighBitSet64 (ValueMask);
Length = End - Start + 1;
CpuRegisterTableWriteWorker (FALSE, ProcessorNumber, RegisterType, Index, Start, Length, Value, TRUE);
@@ -1178,18 +1226,18 @@ CpuRegisterTableTestThenWrite (
VOID
EFIAPI
PreSmmCpuRegisterTableWrite (
- IN UINTN ProcessorNumber,
- IN REGISTER_TYPE RegisterType,
- IN UINT64 Index,
- IN UINT64 ValueMask,
- IN UINT64 Value
+ IN UINTN ProcessorNumber,
+ IN REGISTER_TYPE RegisterType,
+ IN UINT64 Index,
+ IN UINT64 ValueMask,
+ IN UINT64 Value
)
{
UINT8 Start;
UINT8 End;
UINT8 Length;
- Start = (UINT8)LowBitSet64 (ValueMask);
+ Start = (UINT8)LowBitSet64 (ValueMask);
End = (UINT8)HighBitSet64 (ValueMask);
Length = End - Start + 1;
CpuRegisterTableWriteWorker (TRUE, ProcessorNumber, RegisterType, Index, Start, Length, Value, FALSE);
@@ -1208,14 +1256,15 @@ PreSmmCpuRegisterTableWrite (
**/
BOOLEAN
IsCpuFeatureSetInCpuPcd (
- IN UINT8 *CpuBitMask,
- IN UINTN CpuBitMaskSize,
- IN UINT32 Feature
+ IN UINT8 *CpuBitMask,
+ IN UINTN CpuBitMaskSize,
+ IN UINT32 Feature
)
{
if ((Feature >> 3) >= CpuBitMaskSize) {
return FALSE;
}
+
return ((*(CpuBitMask + (Feature >> 3)) & (1 << (Feature & 0x07))) != 0);
}
@@ -1236,7 +1285,7 @@ IsCpuFeatureSetInCpuPcd (
BOOLEAN
EFIAPI
IsCpuFeatureSupported (
- IN UINT32 Feature
+ IN UINT32 Feature
)
{
return IsCpuFeatureSetInCpuPcd (
@@ -1260,7 +1309,7 @@ IsCpuFeatureSupported (
BOOLEAN
EFIAPI
IsCpuFeatureInSetting (
- IN UINT32 Feature
+ IN UINT32 Feature
)
{
return IsCpuFeatureSetInCpuPcd (
@@ -1280,11 +1329,11 @@ IsCpuFeatureInSetting (
VOID
EFIAPI
SwitchBspAfterFeaturesInitialize (
- IN UINTN ProcessorNumber
+ IN UINTN ProcessorNumber
)
{
- CPU_FEATURES_DATA *CpuFeaturesData;
+ CPU_FEATURES_DATA *CpuFeaturesData;
- CpuFeaturesData = GetCpuFeaturesData ();
+ CpuFeaturesData = GetCpuFeaturesData ();
CpuFeaturesData->BspNumber = ProcessorNumber;
}