mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg/RegisterCpuFeaturesLib: Simplify PcdCpuFeaturesSupport.
PcdCpuFeaturesSupport used to specify the platform policy about what CPU features this platform supports. This PCD will be used in IsCpuFeatureSupported only. Now RegisterCpuFeaturesLib use this PCD as an template to Get the pcd size. Update the code logic to replace it with PcdCpuFeaturesSetting. BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=1375 Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
This commit is contained in:
parent
6214ffb410
commit
001c2c8033
|
@ -245,11 +245,6 @@ CpuInitDataInitialize (
|
|||
ASSERT (CpuFeaturesData->CpuFlags.CoreSemaphoreCount != NULL);
|
||||
CpuFeaturesData->CpuFlags.PackageSemaphoreCount = AllocateZeroPool (sizeof (UINT32) * CpuStatus->PackageCount * CpuStatus->MaxCoreCount * CpuStatus->MaxThreadCount);
|
||||
ASSERT (CpuFeaturesData->CpuFlags.PackageSemaphoreCount != NULL);
|
||||
|
||||
//
|
||||
// Get support and configuration PCDs
|
||||
//
|
||||
CpuFeaturesData->SupportPcd = GetSupportPcd ();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -269,7 +264,7 @@ SupportedMaskOr (
|
|||
UINT8 *Data1;
|
||||
UINT8 *Data2;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
Data1 = SupportedFeatureMask;
|
||||
Data2 = OrFeatureBitMask;
|
||||
for (Index = 0; Index < BitMaskSize; Index++) {
|
||||
|
@ -294,7 +289,7 @@ SupportedMaskAnd (
|
|||
UINT8 *Data1;
|
||||
CONST UINT8 *Data2;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
Data1 = SupportedFeatureMask;
|
||||
Data2 = AndFeatureBitMask;
|
||||
for (Index = 0; Index < BitMaskSize; Index++) {
|
||||
|
@ -319,7 +314,7 @@ SupportedMaskCleanBit (
|
|||
UINT8 *Data1;
|
||||
UINT8 *Data2;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
Data1 = SupportedFeatureMask;
|
||||
Data2 = AndFeatureBitMask;
|
||||
for (Index = 0; Index < BitMaskSize; Index++) {
|
||||
|
@ -350,7 +345,7 @@ IsBitMaskMatch (
|
|||
UINT8 *Data1;
|
||||
UINT8 *Data2;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
|
||||
Data1 = SupportedFeatureMask;
|
||||
Data2 = ComparedFeatureBitMask;
|
||||
|
@ -389,21 +384,19 @@ CollectProcessorData (
|
|||
Entry = GetFirstNode (&CpuFeaturesData->FeatureList);
|
||||
while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {
|
||||
CpuFeature = CPU_FEATURE_ENTRY_FROM_LINK (Entry);
|
||||
if (IsBitMaskMatch (CpuFeaturesData->SupportPcd, CpuFeature->FeatureMask)) {
|
||||
if (CpuFeature->SupportFunc == NULL) {
|
||||
//
|
||||
// If SupportFunc is NULL, then the feature is supported.
|
||||
//
|
||||
SupportedMaskOr (
|
||||
CpuFeaturesData->InitOrder[ProcessorNumber].FeaturesSupportedMask,
|
||||
CpuFeature->FeatureMask
|
||||
);
|
||||
} else if (CpuFeature->SupportFunc (ProcessorNumber, CpuInfo, CpuFeature->ConfigData)) {
|
||||
SupportedMaskOr (
|
||||
CpuFeaturesData->InitOrder[ProcessorNumber].FeaturesSupportedMask,
|
||||
CpuFeature->FeatureMask
|
||||
);
|
||||
}
|
||||
if (CpuFeature->SupportFunc == NULL) {
|
||||
//
|
||||
// If SupportFunc is NULL, then the feature is supported.
|
||||
//
|
||||
SupportedMaskOr (
|
||||
CpuFeaturesData->InitOrder[ProcessorNumber].FeaturesSupportedMask,
|
||||
CpuFeature->FeatureMask
|
||||
);
|
||||
} else if (CpuFeature->SupportFunc (ProcessorNumber, CpuInfo, CpuFeature->ConfigData)) {
|
||||
SupportedMaskOr (
|
||||
CpuFeaturesData->InitOrder[ProcessorNumber].FeaturesSupportedMask,
|
||||
CpuFeature->FeatureMask
|
||||
);
|
||||
}
|
||||
Entry = Entry->ForwardLink;
|
||||
}
|
||||
|
@ -596,8 +589,6 @@ AnalysisProcessorFeatures (
|
|||
DumpCpuFeature (CpuFeature);
|
||||
Entry = Entry->ForwardLink;
|
||||
}
|
||||
DEBUG ((DEBUG_INFO, "PcdCpuFeaturesSupport:\n"));
|
||||
DumpCpuFeatureMask (CpuFeaturesData->SupportPcd);
|
||||
DEBUG ((DEBUG_INFO, "PcdCpuFeaturesCapability:\n"));
|
||||
DumpCpuFeatureMask (CpuFeaturesData->CapabilityPcd);
|
||||
DEBUG ((DEBUG_INFO, "Origin PcdCpuFeaturesSetting:\n"));
|
||||
|
|
|
@ -81,7 +81,6 @@ typedef struct {
|
|||
LIST_ENTRY FeatureList;
|
||||
|
||||
CPU_FEATURES_INIT_ORDER *InitOrder;
|
||||
UINT8 *SupportPcd;
|
||||
UINT8 *CapabilityPcd;
|
||||
UINT8 *SettingPcd;
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ IsCpuFeatureMatch (
|
|||
{
|
||||
UINTN BitMaskSize;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
if (CompareMem (FirstFeatureMask, SecondFeatureMask, BitMaskSize) == 0) {
|
||||
return TRUE;
|
||||
} else {
|
||||
|
@ -53,7 +53,7 @@ DumpCpuFeatureMask (
|
|||
UINT8 *Data8;
|
||||
UINTN BitMaskSize;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
Data8 = (UINT8 *) FeatureMask;
|
||||
for (Index = 0; Index < BitMaskSize; Index++) {
|
||||
DEBUG ((DEBUG_INFO, " %02x ", *Data8++));
|
||||
|
@ -100,7 +100,7 @@ IsBitMaskMatchCheck (
|
|||
UINT8 *Data1;
|
||||
UINT8 *Data2;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
|
||||
Data1 = FeatureMask;
|
||||
Data2 = DependentBitMask;
|
||||
|
@ -656,7 +656,7 @@ RegisterCpuFeatureWorker (
|
|||
UINTN BitMaskSize;
|
||||
BOOLEAN FeatureExist;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
CpuFeaturesData = GetCpuFeaturesData ();
|
||||
if (CpuFeaturesData->FeaturesCount == 0) {
|
||||
InitializeListHead (&CpuFeaturesData->FeatureList);
|
||||
|
@ -870,7 +870,7 @@ RegisterCpuFeature (
|
|||
BeforeAll = FALSE;
|
||||
AfterAll = FALSE;
|
||||
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSupport);
|
||||
BitMaskSize = PcdGetSize (PcdCpuFeaturesSetting);
|
||||
|
||||
VA_START (Marker, InitializeFunc);
|
||||
Feature = VA_ARG (Marker, UINT32);
|
||||
|
|
Loading…
Reference in New Issue