summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuanhaoXie <yuanhao.xie@intel.com>2023-09-13 11:33:12 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-10-09 08:22:02 +0000
commitc4fdec0a83d69bd0399b1b4351fa9c3af3c6fd65 (patch)
treebc8f52e2db649b89fd8ce25f4c5c3c4c8bd56809
parent4b7b32f846edbd2970f5b7c34041c2abe9d0724e (diff)
downloadedk2-c4fdec0a83d69bd0399b1b4351fa9c3af3c6fd65.tar.gz
edk2-c4fdec0a83d69bd0399b1b4351fa9c3af3c6fd65.tar.bz2
edk2-c4fdec0a83d69bd0399b1b4351fa9c3af3c6fd65.zip
UefiCpuPkg/MtrrLib: Improve MtrrDebugPrintAllMtrrsWorker.
Improve MtrrDebugPrintAllMtrrsWorker by making use of MtrrGetMemoryAttributesInMtrrSettings. Signed-off-by: Ray Ni <ray.ni@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
-rw-r--r--UefiCpuPkg/Library/MtrrLib/MtrrLib.c45
1 files changed, 10 insertions, 35 deletions
diff --git a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
index 96474f6f9b..4d4b52a4c3 100644
--- a/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
+++ b/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
@@ -3069,24 +3069,15 @@ MtrrDebugPrintAllMtrrsWorker (
)
{
DEBUG_CODE_BEGIN ();
+ UINT32 Index;
MTRR_SETTINGS LocalMtrrs;
MTRR_SETTINGS *Mtrrs;
- UINTN Index;
+ RETURN_STATUS Status;
UINTN RangeCount;
- UINT64 MtrrValidBitsMask;
- UINT64 MtrrValidAddressMask;
- UINT32 VariableMtrrCount;
BOOLEAN ContainVariableMtrr;
MTRR_MEMORY_RANGE Ranges[
ARRAY_SIZE (mMtrrLibFixedMtrrTable) * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1
];
- MTRR_MEMORY_RANGE RawVariableRanges[ARRAY_SIZE (Mtrrs->Variables.Mtrr)];
-
- if (!IsMtrrSupported ()) {
- return;
- }
-
- VariableMtrrCount = GetVariableMtrrCountWorker ();
if (MtrrSetting != NULL) {
Mtrrs = MtrrSetting;
@@ -3095,6 +3086,13 @@ MtrrDebugPrintAllMtrrsWorker (
Mtrrs = &LocalMtrrs;
}
+ RangeCount = ARRAY_SIZE (Ranges);
+ Status = MtrrGetMemoryAttributesInMtrrSettings (Mtrrs, Ranges, &RangeCount);
+ if (RETURN_ERROR (Status)) {
+ DEBUG ((DEBUG_CACHE, "MTRR is not enabled.\n"));
+ return;
+ }
+
//
// Dump RAW MTRR contents
//
@@ -3106,7 +3104,7 @@ MtrrDebugPrintAllMtrrsWorker (
}
ContainVariableMtrr = FALSE;
- for (Index = 0; Index < VariableMtrrCount; Index++) {
+ for (Index = 0; Index < ARRAY_SIZE (Mtrrs->Variables.Mtrr); Index++) {
if ((Mtrrs->Variables.Mtrr[Index].Mask & BIT11) == 0) {
//
// If mask is not valid, then do not display range
@@ -3135,29 +3133,6 @@ MtrrDebugPrintAllMtrrsWorker (
//
DEBUG ((DEBUG_CACHE, "Memory Ranges:\n"));
DEBUG ((DEBUG_CACHE, "====================================\n"));
- MtrrLibInitializeMtrrMask (&MtrrValidBitsMask, &MtrrValidAddressMask);
- Ranges[0].BaseAddress = 0;
- Ranges[0].Length = MtrrValidBitsMask + 1;
- Ranges[0].Type = MtrrGetDefaultMemoryTypeWorker (Mtrrs);
- RangeCount = 1;
-
- MtrrLibGetRawVariableRanges (
- &Mtrrs->Variables,
- VariableMtrrCount,
- MtrrValidBitsMask,
- MtrrValidAddressMask,
- RawVariableRanges
- );
- MtrrLibApplyVariableMtrrs (
- RawVariableRanges,
- VariableMtrrCount,
- Ranges,
- ARRAY_SIZE (Ranges),
- &RangeCount
- );
-
- MtrrLibApplyFixedMtrrs (&Mtrrs->Fixed, Ranges, ARRAY_SIZE (Ranges), &RangeCount);
-
for (Index = 0; Index < RangeCount; Index++) {
DEBUG ((
DEBUG_CACHE,