On 2/14/19 1:49 AM, David Gibson wrote: > On Wed, Feb 13, 2019 at 10:07:54PM +0100, Cédric Le Goater wrote: >> Hello, >> >> When using the 'dual' interrupt mode, the source numbers of both sPAPR >> IRQ backends are aligned to share a common IRQ number space and to use >> a similar mapping of the machine qemu_irq array which is indexed by >> the source number. >> >> The XICS IRQ number range initially being [ 0x1000 - 0x2000 ], this >> requires to change the XICS ICSState offset to 0 and to provision for >> an extra 4K of source numbers and qemu_irqs which will never be used >> by the machine when running under the XICS interrupt mode. This is not >> an optimal solution. >> >> Moreover, the KVM support for the 'dual' interrupt mode will require >> some adjustments. The XICS KVM device considers that the IRQ numbers >> start at XICS_IRQ_BASE (0x1000) and we have no way to inform KVM of >> the offset change. We will need to ignore the lower 4K numbers when >> capturing or restoring the source states from the XICS KVM device. >> >> The first patch allocates an IRQ number space of the expected size for
s/IRQ number space/source numbers/ There is still some confusion in the way I use the terms "IRQ number" and "source number". These are two different number spaces. I should pay more attention. >> the XICS sPAPR IRQ backend. The overall IRQ number space size and the >> qemu_irq array size is still the one required by the 'dual' sPAPR IRQ >> backend, that is, in sync with XIVE. The second patch removes the >> ICSState offset adjustment. This last change adds some benefits as it >> simplifies greatly the qirq() method of the 'dual' sPAPR IRQ >> backend. > > Ah, much nicer. Applied to ppc-for-4.0, thanks. I will just drop patch "spapr/xics: ignore the lower 4K in the IRQ number space" Thanks, C.