[Qemu-devel] [PATCH v2 0/3] spapr: introduce a fixed IRQ number space

Cédric Le Goater posted 3 patches 5 years, 10 months ago
Failed in applying to current master (apply log)
include/hw/ppc/spapr.h     |  12 ++++--
include/hw/ppc/spapr_irq.h |  30 ++++++++++++++
hw/ppc/spapr.c             | 101 +++++++++++++++++++++++----------------------
hw/ppc/spapr_events.c      |  26 ++++++++++--
hw/ppc/spapr_irq.c         |  56 +++++++++++++++++++++++++
hw/ppc/spapr_pci.c         |  39 +++++++++++++++--
hw/ppc/spapr_vio.c         |  21 +++++++++-
hw/ppc/Makefile.objs       |   2 +-
8 files changed, 225 insertions(+), 62 deletions(-)
create mode 100644 include/hw/ppc/spapr_irq.h
create mode 100644 hw/ppc/spapr_irq.c
[Qemu-devel] [PATCH v2 0/3] spapr: introduce a fixed IRQ number space
Posted by Cédric Le Goater 5 years, 10 months ago
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 'xics_legacy' flag.

These are just the basics preparing ground for the new XIVE
controller. I would also like to introduce a structure like below to
abstract the IRQ controller in the sPAPR machine :
  
  typedef struct sPAPRIrq {
      uint32_t    nr_irqs;
      uint8_t     ov5;
  
      void (*init)(sPAPRMachineState *spapr, uint32_t nr_servers, Error **errp);
      int (*claim)(sPAPRMachineState *spapr, uint32_t irq, bool lsi, Error **errp);
      void (*free)(sPAPRMachineState *spapr, int irq, int num, Error **errp);
      qemu_irq (*qirq)(sPAPRMachineState *spapr, int irq);
      void (*print_info)(sPAPRMachineState *spapr, Monitor *mon);
      void (*dt_populate)(sPAPRMachineState *spapr, uint32_t nr_servers,
                          void *fdt, uint32_t phandle);
      Object *(*cpu_intc_create)(sPAPRMachineState *spapr, Object *cpu,
                                 Error **errp);
      void (*post_load)(sPAPRMachineState *spapr);
  } sPAPRIrq;

Thanks,

C.

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: split the IRQ allocation sequence
  spapr: remove unused spapr_irq routines
  spapr: introduce a fixed IRQ number space

 include/hw/ppc/spapr.h     |  12 ++++--
 include/hw/ppc/spapr_irq.h |  30 ++++++++++++++
 hw/ppc/spapr.c             | 101 +++++++++++++++++++++++----------------------
 hw/ppc/spapr_events.c      |  26 ++++++++++--
 hw/ppc/spapr_irq.c         |  56 +++++++++++++++++++++++++
 hw/ppc/spapr_pci.c         |  39 +++++++++++++++--
 hw/ppc/spapr_vio.c         |  21 +++++++++-
 hw/ppc/Makefile.objs       |   2 +-
 8 files changed, 225 insertions(+), 62 deletions(-)
 create mode 100644 include/hw/ppc/spapr_irq.h
 create mode 100644 hw/ppc/spapr_irq.c

-- 
2.13.6