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

Cédric Le Goater posted 3 patches 5 years, 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180615115303.31125-1-clg@kaod.org
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test s390x passed
include/hw/ppc/spapr.h     |  11 +++--
include/hw/ppc/spapr_irq.h |  30 ++++++++++++
hw/ppc/spapr.c             | 115 ++++++++++++++++++++++++++-------------------
hw/ppc/spapr_events.c      |  26 ++++++++--
hw/ppc/spapr_irq.c         |  57 ++++++++++++++++++++++
hw/ppc/spapr_pci.c         |  35 ++++++++++++--
hw/ppc/spapr_vio.c         |  17 ++++++-
hw/ppc/Makefile.objs       |   2 +-
8 files changed, 232 insertions(+), 61 deletions(-)
create mode 100644 include/hw/ppc/spapr_irq.h
create mode 100644 hw/ppc/spapr_irq.c
[Qemu-devel] [PATCH 0/3] introduce a fixed IRQ number space
Posted by Cédric Le Goater 5 years, 9 months ago
Hello,

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 range, uint32_t irq,
                  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;


Let's discuss !

Cheers,

C.

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     |  11 +++--
 include/hw/ppc/spapr_irq.h |  30 ++++++++++++
 hw/ppc/spapr.c             | 115 ++++++++++++++++++++++++++-------------------
 hw/ppc/spapr_events.c      |  26 ++++++++--
 hw/ppc/spapr_irq.c         |  57 ++++++++++++++++++++++
 hw/ppc/spapr_pci.c         |  35 ++++++++++++--
 hw/ppc/spapr_vio.c         |  17 ++++++-
 hw/ppc/Makefile.objs       |   2 +-
 8 files changed, 232 insertions(+), 61 deletions(-)
 create mode 100644 include/hw/ppc/spapr_irq.h
 create mode 100644 hw/ppc/spapr_irq.c

-- 
2.13.6