iommu/vt-d: Use second level for GPA->HPA translation
authorLu Baolu <baolu.lu@linux.intel.com>
Thu, 14 Oct 2021 05:38:35 +0000 (13:38 +0800)
committerJoerg Roedel <jroedel@suse.de>
Mon, 18 Oct 2021 10:31:48 +0000 (12:31 +0200)
commit032c5ee40e9fc68ed650a3f86f23259376ec93fc
tree86946d89d8b94c94cbccdf841df333c565947664
parent7afd7f6aa21a2929aff3a059b741933ee1819c6b
iommu/vt-d: Use second level for GPA->HPA translation

The IOMMU VT-d implementation uses the first level for GPA->HPA translation
by default. Although both the first level and the second level could handle
the DMA translation, they're different in some way. For example, the second
level translation has separate controls for the Access/Dirty page tracking.
With the first level translation, there's no such control. On the other
hand, the second level translation has the page-level control for forcing
snoop, but the first level only has global control with pasid granularity.

This uses the second level for GPA->HPA translation so that we can provide
a consistent hardware interface for use cases like dirty page tracking for
live migration.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Link: https://lore.kernel.org/r/20210926114535.923263-1-baolu.lu@linux.intel.com
Link: https://lore.kernel.org/r/20211014053839.727419-6-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel/iommu.c