mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-27 07:34:06 +02:00
UefiCpuPkg/MtrrLib: Avoid running unnecessary code
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
parent
17c3dc1939
commit
c9b4492133
@ -1536,6 +1536,7 @@ MtrrLibAddVariableMtrr (
|
|||||||
|
|
||||||
MTRR_LIB_ASSERT_ALIGNED (BaseAddress, Length);
|
MTRR_LIB_ASSERT_ALIGNED (BaseAddress, Length);
|
||||||
if (Type == CacheInvalid) {
|
if (Type == CacheInvalid) {
|
||||||
|
ASSERT (Ranges != NULL);
|
||||||
for (Index = 0; Index < RangeCount; Index++) {
|
for (Index = 0; Index < RangeCount; Index++) {
|
||||||
if (Ranges[Index].BaseAddress <= BaseAddress && BaseAddress < Ranges[Index].BaseAddress + Ranges[Index].Length) {
|
if (Ranges[Index].BaseAddress <= BaseAddress && BaseAddress < Ranges[Index].BaseAddress + Ranges[Index].Length) {
|
||||||
|
|
||||||
@ -2027,25 +2028,27 @@ MtrrSetMemoryAttributeWorker (
|
|||||||
ASSERT (OriginalVariableMtrrCount - FreeVariableMtrrCount <= FirmwareVariableMtrrCount);
|
ASSERT (OriginalVariableMtrrCount - FreeVariableMtrrCount <= FirmwareVariableMtrrCount);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Move MTRRs after the FirmwraeVariableMtrrCount position to beginning
|
// Move MTRRs after the FirmwareVariableMtrrCount position to beginning
|
||||||
//
|
//
|
||||||
WorkingIndex = FirmwareVariableMtrrCount;
|
if (FirmwareVariableMtrrCount < OriginalVariableMtrrCount) {
|
||||||
for (Index = 0; Index < FirmwareVariableMtrrCount; Index++) {
|
WorkingIndex = FirmwareVariableMtrrCount;
|
||||||
if (!OriginalVariableMtrr[Index].Valid) {
|
for (Index = 0; Index < FirmwareVariableMtrrCount; Index++) {
|
||||||
//
|
if (!OriginalVariableMtrr[Index].Valid) {
|
||||||
// Found an empty MTRR in WorkingIndex position
|
//
|
||||||
//
|
// Found an empty MTRR in WorkingIndex position
|
||||||
for (; WorkingIndex < OriginalVariableMtrrCount; WorkingIndex++) {
|
//
|
||||||
if (OriginalVariableMtrr[WorkingIndex].Valid) {
|
for (; WorkingIndex < OriginalVariableMtrrCount; WorkingIndex++) {
|
||||||
break;
|
if (OriginalVariableMtrr[WorkingIndex].Valid) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (WorkingIndex != OriginalVariableMtrrCount) {
|
if (WorkingIndex != OriginalVariableMtrrCount) {
|
||||||
CopyMem (&OriginalVariableMtrr[Index], &OriginalVariableMtrr[WorkingIndex], sizeof (VARIABLE_MTRR));
|
CopyMem (&OriginalVariableMtrr[Index], &OriginalVariableMtrr[WorkingIndex], sizeof (VARIABLE_MTRR));
|
||||||
VariableSettingModified[Index] = TRUE;
|
VariableSettingModified[Index] = TRUE;
|
||||||
VariableSettingModified[WorkingIndex] = TRUE;
|
VariableSettingModified[WorkingIndex] = TRUE;
|
||||||
OriginalVariableMtrr[WorkingIndex].Valid = FALSE;
|
OriginalVariableMtrr[WorkingIndex].Valid = FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user