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 8f86d4c..bb7ace4 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