Messages in this thread Patch in this message | | | From | Jacob Pan <> | Subject | [PATCH v2] iommu/vt-d: respect max guest address width in agaw | Date | Tue, 6 Nov 2018 14:47:15 -0800 |
| |
Supported guest address witdh (SGAW) only indicates what the iommu's capabilities are wrt page table levels for second level page-tables. IOMMU should pick the right level depending on the Maximum Guest Address Width (MGAW).
For pass-through translation type, address width must be programmed with the largest AGAW supported by the HW.
Reported-by: Ramos Falcon, Ernesto R <ernesto.r.ramos.falcon@intel.com> Signed-off-by: Ashok Raj <ashok.raj@intel.com> Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> --- drivers/iommu/intel-iommu.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 140d6ab..f16db3b 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -719,7 +719,11 @@ int iommu_calculate_max_sagaw(struct intel_iommu *iommu) */ int iommu_calculate_agaw(struct intel_iommu *iommu) { - return __iommu_calculate_agaw(iommu, DEFAULT_DOMAIN_ADDRESS_WIDTH); + unsigned long mgaw; + + /* Respect Max Guest Address Width */ + mgaw = min(cap_mgaw(iommu->cap), DEFAULT_DOMAIN_ADDRESS_WIDTH); + return __iommu_calculate_agaw(iommu, mgaw); } /* This functionin only returns single iommu in a domain */ -- 2.7.4
| |