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