powerpc/powernv: Move pnv_pci_ioda_setup_opal_tce_kill() around
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Fri, 20 May 2016 06:41:28 +0000 (16:41 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 21 Jun 2016 05:30:53 +0000 (15:30 +1000)
pnv_pci_ioda_setup_opal_tce_kill() called by pnv_ioda_setup_dma()
to remap the TCE kill regiter. What's done in pnv_ioda_setup_dma()
will be covered in pcibios_setup_bridge() which is invoked on each
PCI bridge. It means we will possibly remap the TCE kill register
for multiple times and it's unnecessary.

This moves pnv_pci_ioda_setup_opal_tce_kill() to where the PHB is
initialized (pnv_pci_init_ioda_phb()) to avoid above issue.

Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/pci-ioda.c

index 2c0e09f..5bbee82 100644 (file)
@@ -2702,8 +2702,6 @@ static void pnv_ioda_setup_dma(struct pnv_phb *phb)
        pr_info("PCI: Domain %04x has %d available 32-bit DMA segments\n",
                hose->global_number, phb->ioda.dma32_count);
 
-       pnv_pci_ioda_setup_opal_tce_kill(phb);
-
        /* Walk our PE list and configure their DMA segments */
        list_for_each_entry(pe, &phb->ioda.pe_list, list) {
                weight = pnv_pci_ioda_pe_dma_weight(pe);
@@ -3482,6 +3480,9 @@ static void __init pnv_pci_init_ioda_phb(struct device_node *np,
        if (phb->regs == NULL)
                pr_err("  Failed to map registers !\n");
 
+       /* Initialize TCE kill register */
+       pnv_pci_ioda_setup_opal_tce_kill(phb);
+
        /* Initialize more IODA stuff */
        phb->ioda.total_pe_num = 1;
        prop32 = of_get_property(np, "ibm,opal-num-pes", NULL);