summaryrefslogtreecommitdiffstats
path: root/drivers/iommu/intel-iommu.c
diff options
context:
space:
mode:
authorEric Auger <eric.auger@redhat.com>2019-06-03 02:53:34 -0400
committerJoerg Roedel <jroedel@suse.de>2019-06-12 04:32:59 -0400
commit3855ba2d834d8f7727b7f992ff781fa66cc09f96 (patch)
treeb60b0250fb1f7d1a656fe4709b5f4e898d1e5c02 /drivers/iommu/intel-iommu.c
parente143fd4598ddf7401d3699957cd59ceb5426d53d (diff)
iommu/vt-d: Handle PCI bridge RMRR device scopes in intel_iommu_get_resv_regions
In the case the RMRR device scope is a PCI-PCI bridge, let's check the device belongs to the PCI sub-hierarchy. Fixes: 0659b8dc45a6 ("iommu/vt-d: Implement reserved region get/put callbacks") Signed-off-by: Eric Auger <eric.auger@redhat.com> Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/intel-iommu.c')
-rw-r--r--drivers/iommu/intel-iommu.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 0d7d177673dd..5de48ed1f763 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -5426,7 +5426,8 @@ static void intel_iommu_get_resv_regions(struct device *device,
5426 struct iommu_resv_region *resv; 5426 struct iommu_resv_region *resv;
5427 size_t length; 5427 size_t length;
5428 5428
5429 if (i_dev != device) 5429 if (i_dev != device &&
5430 !is_downstream_to_pci_bridge(device, i_dev))
5430 continue; 5431 continue;
5431 5432
5432 length = rmrr->end_address - rmrr->base_address + 1; 5433 length = rmrr->end_address - rmrr->base_address + 1;