powerpc/xive: Introduce XIVE_IPI_HW_IRQ
authorCédric Le Goater <clg@kaod.org>
Thu, 10 Dec 2020 17:14:40 +0000 (18:14 +0100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 10 Dec 2020 22:34:07 +0000 (09:34 +1100)
commite2cf43d59525477cfd030378c3c808187952c531
tree7793d17c0aa7435fea429775133fc12378c31998
parent4f1c3f7b08187e6b97701c7fb2dc6f3749566c62
powerpc/xive: Introduce XIVE_IPI_HW_IRQ

The XIVE driver deals with CPU IPIs in a peculiar way. Each CPU has
its own XIVE IPI interrupt allocated at the HW level, for PowerNV, or
at the hypervisor level for pSeries. In practice, these interrupts are
not always used. pSeries/PowerVM prefers local doorbells for local
threads since they are faster. On PowerNV, global doorbells are also
preferred for the same reason.

The mapping in the Linux is reduced to a single interrupt using HW
interrupt number 0 and a custom irq_chip to handle EOI. This can cause
performance issues in some benchmark (ipistorm) on multichip systems.

Clarify the use of the 0 value, it will help in improving multichip
support.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201210171450.1933725-4-clg@kaod.org
arch/powerpc/sysdev/xive/common.c
arch/powerpc/sysdev/xive/xive-internal.h