The patchset includes minimal support for PHB3. Initially, flag "PNV_PHB_IODA2" is introduced to differentiate IODA2 compliant PHB3 from other types of PHBs and do initialization accordingly for PHB3. Besides, variable IODA2 tables reside in system memory and we allocate them in kernel, then pass them to f/w and enable the corresponding BARs through OPAL API. The P/Q bits of IVE should be handled on PHB3 by software and the patchset intends to cover that as well.
NOTE: The first patch comes from Ben. v3 -> v4 * Remove the patch to retrieve IODA2 table address/length since it's useless now * Introduce IRQ chip for individual PHB and patch the handlers during MSI interrupt setup time according to Ben's suggestion * Pass HW IRQ to opal_pci_msi_eoi() * Remove "sysdata" from IOMMU table v2 -> v3 * Remove the unnecessary quirk. That's only useful with simics * Do MSI EOI in single OPAL API opal_pci_msi_eoi() * Use explicit branch to fully utilize CPU's prefetching engine while doing TCE invalidation * Add one patch to fix invalid IOMMU table for PCI devices v1 -> v2 * Introduce CONFIG_POWERNV_MSI, which is similiar to CONFIG_PSERIES_MSI * Enable CONFIG_PPC_MSI_BITMAP while selecting CONFIG_POWERNV_MSI * Eleminate (struct pnv_phb::msi_count) since it has been removed in linux-next * Replace (CONFIG_PPC_POWERNV && CONFIG_PCI_MSI) with CONFIG_POWERNV_MSI * Move declaration of pnv_pci_msi_eoi() to asm/xics.h * Remove unnecessary "#ifdef ... #endif" in icp-native.c * Add support to invalidate TCE * Let the IODA2 table allocated by firmware and kernel to retrieve them through device-tree --- arch/powerpc/include/asm/opal.h | 7 +- arch/powerpc/include/asm/xics.h | 1 + arch/powerpc/platforms/powernv/Kconfig | 5 + arch/powerpc/platforms/powernv/opal-wrappers.S | 1 + arch/powerpc/platforms/powernv/pci-ioda.c | 330 ++++++++++++++++++++---- arch/powerpc/platforms/powernv/pci-p5ioc2.c | 4 +- arch/powerpc/platforms/powernv/pci.c | 56 +---- arch/powerpc/platforms/powernv/pci.h | 35 ++- arch/powerpc/sysdev/Kconfig | 1 + arch/powerpc/sysdev/xics/icp-native.c | 2 +- 10 files changed, 332 insertions(+), 110 deletions(-) Thanks, Gavin _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev