Here is a proposal for a new IRQ number space layout using static numbers and a bitmap allocator for the MSIs. The previous layout is kept for compatibly in machines raising the 'legacy_irq_allocation' flag.
The patchset also introduces a sPAPR IRQ interface which offers the possibility to provide different IRQ controller backend to the sPAPR machine. This is preparing ground for the new XIVE controller. Thanks, C. Changes since v2 : - renamed 'xics_legacy' to 'legacy_irq_allocation' - introduced the sPAPR IRQ backend interface - increase the size of the IRQ number space for newer machines Changes since v1 : - removed block allocation - spaced the IRQ offsets - check for overlaps when allocating VIO irqs - removed 'Error *' arg from spapr_irq_msi_init() Cédric Le Goater (3): spapr: introduce a fixed IRQ number space spapr: introduce a IRQ controller backend to the machine spapr: increase the size of the IRQ number space include/hw/ppc/spapr.h | 14 +-- include/hw/ppc/spapr_irq.h | 55 +++++++++ hw/ppc/spapr.c | 201 +++++------------------------- hw/ppc/spapr_events.c | 12 +- hw/ppc/spapr_irq.c | 297 +++++++++++++++++++++++++++++++++++++++++++++ hw/ppc/spapr_pci.c | 29 ++++- hw/ppc/spapr_vio.c | 19 ++- hw/ppc/Makefile.objs | 2 +- 8 files changed, 438 insertions(+), 191 deletions(-) create mode 100644 include/hw/ppc/spapr_irq.h create mode 100644 hw/ppc/spapr_irq.c -- 2.13.6