powerpc/powernv: Discover IODA3 PHBs
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 8 Jul 2016 06:37:09 +0000 (16:37 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sun, 17 Jul 2016 06:42:45 +0000 (16:42 +1000)
We instanciate them as IODA2. We also change the MSI EOI hack
to only kick on PHB3 since it will not be needed on any new
implementation.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/pci-ioda.c
arch/powerpc/platforms/powernv/pci.c

index 530d4afbe2fd19265a05ec599dc28bae4f26e4d7..49de0816cf2b8a767438cb55179015ec61aea835 100644 (file)
@@ -2705,7 +2705,8 @@ void pnv_set_msi_irq_chip(struct pnv_phb *phb, unsigned int virq)
        struct irq_data *idata;
        struct irq_chip *ichip;
 
-       if (phb->type != PNV_PHB_IODA2)
+       /* The MSI EOI OPAL call is only needed on PHB3 */
+       if (phb->model != PNV_PHB_MODEL_PHB3)
                return;
 
        if (!phb->ioda.irq_chip_init) {
index 62c7637d4831f56511ba2402f4ecee8317e06a12..4617ea2218816b402a3c06eca87c139569f2c4a8 100644 (file)
@@ -932,6 +932,10 @@ void __init pnv_pci_init(void)
        for_each_compatible_node(np, NULL, "ibm,ioda2-phb")
                pnv_pci_init_ioda2_phb(np);
 
+       /* Look for ioda3 built-in PHB4's, we treat them as IODA2 */
+       for_each_compatible_node(np, NULL, "ibm,ioda3-phb")
+               pnv_pci_init_ioda2_phb(np);
+
        /* Look for NPU PHBs */
        for_each_compatible_node(np, NULL, "ibm,ioda2-npu-phb")
                pnv_pci_init_npu_phb(np);