aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/pseries/pseries.h
diff options
context:
space:
mode:
authorCédric Le Goater <clg@kaod.org>2021-07-01 15:27:23 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2021-08-10 23:14:57 +1000
commita5f3d2c17b07e69166b93209f34a5fb8271a6810 (patch)
treedaf7e74b6c65ec016e20ff6c8322e416d16024a6 /arch/powerpc/platforms/pseries/pseries.h
parentpowerpc/xive: Ease debugging of xive_irq_set_affinity() (diff)
downloadlinux-dev-a5f3d2c17b07e69166b93209f34a5fb8271a6810.tar.xz
linux-dev-a5f3d2c17b07e69166b93209f34a5fb8271a6810.zip
powerpc/pseries/pci: Add MSI domains
Two IRQ domains are added on top of default machine IRQ domain. First, the top level "pSeries-PCI-MSI" domain deals with the MSI specificities. In this domain, the HW IRQ numbers are generated by the PCI MSI layer, they compose a unique ID for an MSI source with the PCI device identifier and the MSI vector number. These numbers can be quite large on a pSeries machine running under the IBM Hypervisor and /sys/kernel/irq/ and /proc/interrupts will require small fixes to show them correctly. Second domain is the in-the-middle "pSeries-MSI" domain which acts as a proxy between the PCI MSI subsystem and the machine IRQ subsystem. It usually allocate the MSI vector numbers but, on pSeries machines, this is done by the RTAS FW and RTAS returns IRQ numbers in the IRQ number space of the machine. This is why the in-the-middle "pSeries-MSI" domain has the same HW IRQ numbers as its parent domain. Only the XIVE (P9/P10) parent domain is supported for now. We still need to add support for IRQ domain hierarchy under XICS. Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210701132750.1475580-6-clg@kaod.org
Diffstat (limited to 'arch/powerpc/platforms/pseries/pseries.h')
-rw-r--r--arch/powerpc/platforms/pseries/pseries.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h
index 1f051a786fb3..d9280262588b 100644
--- a/arch/powerpc/platforms/pseries/pseries.h
+++ b/arch/powerpc/platforms/pseries/pseries.h
@@ -85,6 +85,7 @@ struct pci_host_bridge;
int pseries_root_bridge_prepare(struct pci_host_bridge *bridge);
extern struct pci_controller_ops pseries_pci_controller_ops;
+int pseries_msi_allocate_domains(struct pci_controller *phb);
unsigned long pseries_memory_block_size(void);