audk/UefiCpuPkg/Library/MtrrLib
Ruiyu Ni 3654c4623c UefiCpuPkg/MtrrLib: Don't report OutOfResource when MTRR is enough
The MTRR calculation algorithm contains a bug that when left
subtraction cannot produce better MTRR solution, it forgets
to restore the BaseAddress/Length so that MtrrLibGetMtrrNumber()
returns bigger value of actual required MTRR numbers.
As a result, the MtrrLib reports OutOfResource but actually the
MTRR is enough.

MEMORY_RANGE mC[] = {
  0, 0x100000, CacheUncacheable,
  0x100000, 0x89F00000, CacheWriteBack,
  0x8A000000, 0x75000000, CacheUncacheable,
  0xFF000000, 0x01000000, CacheWriteProtected,
  0x100000000, 0x7F00000000, CacheUncacheable,
  0xFC240000, 0x2000, CacheWriteCombining // <-- trigger the error
};

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jeff Fan <jeff.fan@intel.com>
2017-05-08 13:35:25 +08:00
..
MtrrLib.c UefiCpuPkg/MtrrLib: Don't report OutOfResource when MTRR is enough 2017-05-08 13:35:25 +08:00
MtrrLib.inf UefiCpuPkg/MtrrLib: Add PCD PcdCpuNumberOfReservedVariableMtrrs 2015-12-08 05:19:34 +00:00
MtrrLib.uni UefiCpuPkg: Convert all .uni files to utf-8 2015-12-15 04:59:14 +00:00