iommu/vt-d: Handle PCI bridge RMRR device scopes in intel_iommu_get_resv_regions
authorEric Auger <eric.auger@redhat.com>
Mon, 3 Jun 2019 06:53:34 +0000 (08:53 +0200)
committerJoerg Roedel <jroedel@suse.de>
Wed, 12 Jun 2019 08:32:59 +0000 (10:32 +0200)
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>
drivers/iommu/intel-iommu.c

index 0d7d177673ddab2081ab5528e1b92de343a64bd0..5de48ed1f76327cac360a99f4a1a597af4566b9f 100644 (file)
@@ -5426,7 +5426,8 @@ static void intel_iommu_get_resv_regions(struct device *device,
                        struct iommu_resv_region *resv;
                        size_t length;
 
-                       if (i_dev != device)
+                       if (i_dev != device &&
+                           !is_downstream_to_pci_bridge(device, i_dev))
                                continue;
 
                        length = rmrr->end_address - rmrr->base_address + 1;