From: Eric Auger Date: Mon, 3 Jun 2019 06:53:33 +0000 (+0200) Subject: iommu/vt-d: Handle RMRR with PCI bridge device scopes X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e143fd4598ddf7401d3699957cd59ceb5426d53d;p=openwrt%2Fstaging%2Fblogic.git iommu/vt-d: Handle RMRR with PCI bridge device scopes When reading the vtd specification and especially the Reserved Memory Region Reporting Structure chapter, it is not obvious a device scope element cannot be a PCI-PCI bridge, in which case all downstream ports are likely to access the reserved memory region. Let's handle this case in device_has_rmrr. Fixes: ea2447f700ca ("intel-iommu: Prevent devices with RMRRs from being placed into SI Domain") Signed-off-by: Eric Auger Reviewed-by: Lu Baolu Signed-off-by: Joerg Roedel --- diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c index 6747fec46cfb..0d7d177673dd 100644 --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -2880,7 +2880,8 @@ static bool device_has_rmrr(struct device *dev) */ for_each_active_dev_scope(rmrr->devices, rmrr->devices_cnt, i, tmp) - if (tmp == dev) { + if (tmp == dev || + is_downstream_to_pci_bridge(dev, tmp)) { rcu_read_unlock(); return true; }