This is a first batch of a number of cleanups to the handling of IRQs in spapr. It includes some cleanups to both the XICS and XIVE interrupt controller backends, as well as more to the common spapr irq handling infrastructure.
These are first steps towards even more cleanups that should make the "dual" irq model less confusing. David Gibson (20): xics: Use incomplete type for XICSFabric xics: Eliminate 'reject', 'resend' and 'eoi' class hooks xics: Rename misleading ics_simple_*() functions xics: Eliminate reset hook xics: Merge TYPE_ICS_BASE and TYPE_ICS_SIMPLE classes xics: Create sPAPR specific ICS subtype spapr: Fold spapr_phb_lsi_qirq() into its single caller spapr: Replace spapr_vio_qirq() helper with spapr_vio_irq_pulse() helper spapr: Clarify and fix handling of nr_irqs spapr: Eliminate nr_irqs parameter to SpaprIrq::init spapr: Fix indexing of XICS irqs spapr: Simplify spapr_qirq() handling spapr: Eliminate SpaprIrq:get_nodename method spapr: Remove unhelpful tracepoints from spapr_irq_free_xics() spapr: Handle freeing of multiple irqs in frontend only spapr, xics, xive: Better use of assert()s on irq claim/free paths spapr: Remove unused return value in claim path xive: Improve irq claim/free path spapr: Use less cryptic representation of which irq backends are supported spapr: Eliminate SpaprIrq::init hook hw/char/spapr_vty.c | 3 +- hw/intc/spapr_xive.c | 23 ++- hw/intc/trace-events | 10 +- hw/intc/xics.c | 210 ++++++++-------------- hw/intc/xics_spapr.c | 46 ++++- hw/net/spapr_llan.c | 3 +- hw/ppc/pnv_psi.c | 6 +- hw/ppc/spapr.c | 15 +- hw/ppc/spapr_hcall.c | 6 +- hw/ppc/spapr_irq.c | 342 ++++++++++++++---------------------- hw/ppc/spapr_pci.c | 3 +- hw/ppc/spapr_vio.c | 3 +- hw/ppc/trace-events | 4 - include/hw/pci-host/spapr.h | 7 - include/hw/ppc/spapr_irq.h | 31 ++-- include/hw/ppc/spapr_vio.h | 5 +- include/hw/ppc/spapr_xive.h | 5 +- include/hw/ppc/xics.h | 31 ++-- include/hw/ppc/xics_spapr.h | 5 +- 19 files changed, 320 insertions(+), 438 deletions(-) -- 2.21.0