On Mon, 2014-04-21 at 10:25 +0800, Wei Yang wrote: > 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).
But in that case, is the group still set ? Alexey, is that correct ? Cheers, Ben. > 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, _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev