Here is a draft call flow: pci_device_add pcibios_add_device pci_dma_dev_setup pnv_pci_dma_dev_setup pnv_pci_ioda_dma_dev_setup set_iommu_table_base_and_group <--- here device_add
When set_iommu_table_base_and_group() is invoked int pnv_pci_ioda_dma_dev_setup(), the dev->kobj->sd is not initialized. The dev->kobj->sd is initialized in device_add(). After applying this patch, the error iommu_tce: 0003:05:00.0 has not been added, ret=-14 is cleared. This patch revert the change for pnv_pci_ioda_dma_dev_setup() from commit d905c5df(PPC: POWERNV: move iommu_add_device earlier). Signed-off-by: Wei Yang <weiy...@linux.vnet.ibm.com> --- arch/powerpc/platforms/powernv/pci-ioda.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c index fc4edda..b5d8f73 100644 --- a/arch/powerpc/platforms/powernv/pci-ioda.c +++ b/arch/powerpc/platforms/powernv/pci-ioda.c @@ -1425,7 +1425,7 @@ static void pnv_pci_ioda_dma_dev_setup(struct pnv_phb *phb, struct pci_dev *pdev pe = &phb->ioda.pe_array[pdn->pe_number]; WARN_ON(get_dma_ops(&pdev->dev) != &dma_iommu_ops); - set_iommu_table_base_and_group(&pdev->dev, &pe->tce32_table); + set_iommu_table_base(&pdev->dev, &pe->tce32_table); } static int pnv_pci_ioda_dma_set_mask(struct pnv_phb *phb, -- 1.7.9.5 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev