Joerg Roedel 69c0de
From: Eric Auger <eric.auger@redhat.com>
Joerg Roedel 69c0de
Date: Mon, 3 Jun 2019 08:53:34 +0200
Joerg Roedel 69c0de
Subject: iommu/vt-d: Handle PCI bridge RMRR device scopes in
Joerg Roedel 69c0de
 intel_iommu_get_resv_regions
Joerg Roedel 69c0de
Git-commit: 3855ba2d834d8f7727b7f992ff781fa66cc09f96
Joerg Roedel 69c0de
Patch-mainline: v5.3-rc1
Joerg Roedel 69c0de
References: bsc#1140960
Joerg Roedel 69c0de
Joerg Roedel 69c0de
In the case the RMRR device scope is a PCI-PCI bridge, let's check
Joerg Roedel 69c0de
the device belongs to the PCI sub-hierarchy.
Joerg Roedel 69c0de
Joerg Roedel 69c0de
Fixes: 0659b8dc45a6 ("iommu/vt-d: Implement reserved region get/put callbacks")
Joerg Roedel 69c0de
Joerg Roedel 69c0de
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Joerg Roedel 69c0de
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Joerg Roedel 69c0de
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Joerg Roedel 69c0de
---
Joerg Roedel 69c0de
 drivers/iommu/intel-iommu.c | 3 ++-
Joerg Roedel 69c0de
 1 file changed, 2 insertions(+), 1 deletion(-)
Joerg Roedel 69c0de
Joerg Roedel 69c0de
--- a/drivers/iommu/intel-iommu.c
Joerg Roedel 69c0de
+++ b/drivers/iommu/intel-iommu.c
Joerg Roedel 69c0de
@@ -5313,7 +5313,8 @@ static void intel_iommu_get_resv_regions
Joerg Roedel 69c0de
 			struct iommu_resv_region *resv;
Joerg Roedel 69c0de
 			size_t length;
Joerg Roedel 69c0de
 
Joerg Roedel 69c0de
-			if (i_dev != device)
Joerg Roedel 69c0de
+			if (i_dev != device &&
Joerg Roedel 69c0de
+			    !is_downstream_to_pci_bridge(device, i_dev))
Joerg Roedel 69c0de
 				continue;
Joerg Roedel 69c0de
 
Joerg Roedel 69c0de
 			length = rmrr->end_address - rmrr->base_address + 1;
Joerg Roedel 69c0de