On Mon, Apr 21, 2014 at 01:37:32PM +1000, Benjamin Herrenschmidt wrote: >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 ?
I think so. iommu_add_device() will be invoked when device_add() notify the pci bus. > >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, > -- Richard Yang Help you, Help me _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev