[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 0/2] spapr/irq: remove the XICS offset adjustment fo
Cédric Le Goater
[Qemu-devel] [PATCH 0/2] spapr/irq: remove the XICS offset adjustment for the dual machine
Wed, 13 Feb 2019 22:07:54 +0100
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
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.
Cédric Le Goater (2):
spapr/irq: add an 'nr_irq' parameter to initialize the backend.
spapr/irq: remove the XICS offset adjustment
include/hw/ppc/spapr_irq.h | 2 +-
hw/ppc/spapr_irq.c | 45 ++++++++++----------------------------
2 files changed, 12 insertions(+), 35 deletions(-)
- [Qemu-devel] [PATCH 0/2] spapr/irq: remove the XICS offset adjustment for the dual machine,
Cédric Le Goater <=