]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Library/MtrrLib/MtrrLib.c
UefiCpuPkg/MtrrLib: Handle one setting request covering all memory
[mirror_edk2.git] / UefiCpuPkg / Library / MtrrLib / MtrrLib.c
index 1f85ac7e65232bd1294cf2f9a9e1f1b4dd4bc909..333341f7be4d5aceb72c4ec26c3230ae807d509f 100644 (file)
@@ -2270,8 +2270,13 @@ MtrrSetMemoryAttributesInMtrrSettings (
       goto Exit;\r
     }\r
     if (((Ranges[Index].BaseAddress & ~MtrrValidAddressMask) != 0) ||\r
-        ((Ranges[Index].Length & ~MtrrValidAddressMask) != 0)\r
+        ((((Ranges[Index].BaseAddress + Ranges[Index].Length) & ~MtrrValidAddressMask) != 0) &&\r
+          (Ranges[Index].BaseAddress + Ranges[Index].Length) != MtrrValidBitsMask + 1)\r
         ) {\r
+      //\r
+      // Either the BaseAddress or the Limit doesn't follow the alignment requirement.\r
+      // Note: It's still valid if Limit doesn't follow the alignment requirement but equals to MAX Address.\r
+      //\r
       Status = RETURN_UNSUPPORTED;\r
       goto Exit;\r
     }\r