IntelSiliconPkg IntelVTdPmrPei: Use HostAddressWidth in DMAR correctly
authorStar Zeng <star.zeng@intel.com>
Tue, 16 Jan 2018 10:48:52 +0000 (18:48 +0800)
committerStar Zeng <star.zeng@intel.com>
Wed, 17 Jan 2018 02:48:57 +0000 (10:48 +0800)
According to VTd spec, HostAddressWidth + 1 should be used as the real
host address width value.

Host Address Width:
This field indicates the maximum DMA physical
addressability supported by this platform. The
system address map reported by the BIOS
indicates what portions of this addresses are
populated.
The Host Address Width (HAW) of the platform is
computed as (N+1), where N is the value
reported in this field. For example, for a platform
supporting 40 bits of physical addressability, the
value of 100111b is reported in this field.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
IntelSiliconPkg/Feature/VTd/IntelVTdPmrPei/IntelVTdPmrPei.c

index 8f86d4cd15c0c128a0a7d7f56f037a27c1d8597a..bb7ace4ca5579b7f850751a764f2d2fd330f0f77 100644 (file)
@@ -677,7 +677,7 @@ InitVTdPmrForAll (
   LowBottom = 0;\r
   LowTop = 0;\r
   HighBottom = 0;\r
-  HighTop = LShiftU64 (1, VTdInfo->HostAddressWidth);\r
+  HighTop = LShiftU64 (1, VTdInfo->HostAddressWidth + 1);\r
 \r
   Status = SetDmaProtectedRange (\r
              VTdInfo,\r