It will make synchronisation easier with the XIVE interrupt mode when available. The 'irq' parameter refers to the global IRQ number space.
Signed-off-by: Cédric Le Goater <c...@kaod.org> Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> --- Changes since initial XIVE patchset: - s/spapr_irq_set/spapr_irq_set_lsi/ hw/ppc/spapr.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index f6e72f686c34..5e4192aee8fe 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -3579,6 +3579,14 @@ static int ics_find_free_block(ICSState *ics, int num, int alignnum) return -1; } +/* + * Allocate the IRQ number and set the IRQ type, LSI or MSI + */ +static void spapr_irq_set_lsi(sPAPRMachineState *spapr, int irq, bool lsi) +{ + ics_set_irq_type(spapr->ics, irq - spapr->ics->offset, lsi); +} + int spapr_irq_alloc(sPAPRMachineState *spapr, int irq_hint, bool lsi, Error **errp) { @@ -3603,7 +3611,7 @@ int spapr_irq_alloc(sPAPRMachineState *spapr, int irq_hint, bool lsi, irq += ics->offset; } - ics_set_irq_type(ics, irq - ics->offset, lsi); + spapr_irq_set_lsi(spapr, irq, lsi); trace_spapr_irq_alloc(irq); return irq; @@ -3642,10 +3650,10 @@ int spapr_irq_alloc_block(sPAPRMachineState *spapr, int num, bool lsi, return -1; } + first += ics->offset; for (i = first; i < first + num; ++i) { - ics_set_irq_type(ics, i, lsi); + spapr_irq_set_lsi(spapr, i, lsi); } - first += ics->offset; trace_spapr_irq_alloc_block(first, num, lsi, align); -- 2.13.6