UINTN RangeCount;\r
UINT64 MtrrValidBitsMask;\r
UINT64 MtrrValidAddressMask;\r
+ UINT32 VariableMtrrCount;\r
MTRR_MEMORY_RANGE Ranges[\r
ARRAY_SIZE (mMtrrLibFixedMtrrTable) * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1\r
];\r
return;\r
}\r
\r
+ VariableMtrrCount = GetVariableMtrrCountWorker ();\r
+\r
if (MtrrSetting != NULL) {\r
Mtrrs = MtrrSetting;\r
} else {\r
DEBUG((DEBUG_CACHE, "Fixed MTRR[%02d] : %016lx\n", Index, Mtrrs->Fixed.Mtrr[Index]));\r
}\r
\r
- for (Index = 0; Index < ARRAY_SIZE (Mtrrs->Variables.Mtrr); Index++) {\r
+ for (Index = 0; Index < VariableMtrrCount; Index++) {\r
if (((MSR_IA32_MTRR_PHYSMASK_REGISTER *)&Mtrrs->Variables.Mtrr[Index].Mask)->Bits.V == 0) {\r
//\r
// If mask is not valid, then do not display range\r
RangeCount = 1;\r
\r
MtrrLibGetRawVariableRanges (\r
- &Mtrrs->Variables, ARRAY_SIZE (Mtrrs->Variables.Mtrr),\r
+ &Mtrrs->Variables, VariableMtrrCount,\r
MtrrValidBitsMask, MtrrValidAddressMask, RawVariableRanges\r
);\r
MtrrLibApplyVariableMtrrs (\r
- RawVariableRanges, ARRAY_SIZE (RawVariableRanges),\r
+ RawVariableRanges, VariableMtrrCount,\r
Ranges, ARRAY_SIZE (Ranges), &RangeCount\r
);\r
\r