aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2015-06-05 02:34:53 -0400
committerMichael Ellerman <mpe@ellerman.id.au>2015-06-11 01:14:54 -0400
commitea30e99e8eccb684490f40d011ea534ecd937e98 (patch)
tree4d578185e3d2f964fc516918f6c588be7ec6a70e /arch/powerpc/kernel
parent1cbb4a1c433a1ca054ef5363f4e6597b43d208cc (diff)
powerpc/eeh/ioda2: Use device::iommu_group to check IOMMU group
This relies on the fact that a PCI device always has an IOMMU table which may not be the case when we get dynamic DMA windows so let's use more reliable check for IOMMU group here. As we do not rely on the table presence here, remove the workaround from pnv_pci_ioda2_set_bypass(); also remove the @add_to_iommu_group parameter from pnv_ioda_setup_bus_dma(). Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Acked-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r--arch/powerpc/kernel/eeh.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index 51dcdf66e9e6..af9b597b10af 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -1410,13 +1410,11 @@ static int dev_has_iommu_table(struct device *dev, void *data)
1410{ 1410{
1411 struct pci_dev *pdev = to_pci_dev(dev); 1411 struct pci_dev *pdev = to_pci_dev(dev);
1412 struct pci_dev **ppdev = data; 1412 struct pci_dev **ppdev = data;
1413 struct iommu_table *tbl;
1414 1413
1415 if (!dev) 1414 if (!dev)
1416 return 0; 1415 return 0;
1417 1416
1418 tbl = get_iommu_table_base(dev); 1417 if (dev->iommu_group) {
1419 if (tbl && tbl->it_group) {
1420 *ppdev = pdev; 1418 *ppdev = pdev;
1421 return 1; 1419 return 1;
1422 } 1420 }