]> git.baikalelectronics.ru Git - kernel.git/commitdiff
iommu/vt-d: Enable ATS only if the device uses page aligned address.
authorKuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Tue, 19 Feb 2019 19:06:10 +0000 (11:06 -0800)
committerJoerg Roedel <jroedel@suse.de>
Tue, 26 Feb 2019 10:08:07 +0000 (11:08 +0100)
As per Intel vt-d specification, Rev 3.0 (section 7.5.1.1, title "Page
Request Descriptor"), Intel IOMMU page request descriptor only uses
bits[63:12] of the page address. Hence Intel IOMMU driver would only
permit devices that advertise they would only send Page Aligned Requests
to participate in ATS service.

Cc: Ashok Raj <ashok.raj@intel.com>
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: Keith Busch <keith.busch@intel.com>
Suggested-by: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel-iommu.c

index a341927d95367e80b2e0cc41051e3a77088eea88..00f46021d6908c27aaf2a5e1d41f3eca02b8d6b3 100644 (file)
@@ -1408,6 +1408,7 @@ static void iommu_enable_dev_iotlb(struct device_domain_info *info)
                info->pri_enabled = 1;
 #endif
        if (!pdev->untrusted && info->ats_supported &&
+           pci_ats_page_aligned(pdev) &&
            !pci_enable_ats(pdev, VTD_PAGE_SHIFT)) {
                info->ats_enabled = 1;
                domain_update_iotlb(info->domain);