summaryrefslogtreecommitdiff
path: root/Core/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
diff options
context:
space:
mode:
Diffstat (limited to 'Core/UefiCpuPkg/Library/MtrrLib/MtrrLib.c')
-rw-r--r--Core/UefiCpuPkg/Library/MtrrLib/MtrrLib.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/Core/UefiCpuPkg/Library/MtrrLib/MtrrLib.c b/Core/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
index 9d1927262a..cf1af29936 100644
--- a/Core/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
+++ b/Core/UefiCpuPkg/Library/MtrrLib/MtrrLib.c
@@ -851,6 +851,8 @@ MtrrLibGetMtrrNumber (
UINT64 SubtractiveLength;
UINT64 BaseAlignment;
UINT32 Index;
+ UINT64 OriginalBaseAddress;
+ UINT64 OriginalLength;
*SubLeft = 0;
*SubRight = 0;
@@ -861,6 +863,9 @@ MtrrLibGetMtrrNumber (
// Get the optimal left subtraction solution.
//
if (BaseAddress != 0) {
+
+ OriginalBaseAddress = BaseAddress;
+ OriginalLength = Length;
SubtractiveBaseAddress = 0;
SubtractiveLength = 0;
//
@@ -915,7 +920,10 @@ MtrrLibGetMtrrNumber (
//
if (*SubLeft != 0) {
BaseAddress = SubtractiveBaseAddress;
- Length = SubtractiveLength;
+ Length = SubtractiveLength;
+ } else {
+ BaseAddress = OriginalBaseAddress;
+ Length = OriginalLength;
}
}