On 1/17/19 6:14 PM, Greg Kurz wrote: > PHB hotplug will need to set the type of all LSIs at machine init. > Prepare for that by calling xive_source_irq_set() in the callers > of spapr_xive_irq_claim(). > > Signed-off-by: Greg Kurz <gr...@kaod.org>
Reviewed-by: Cédric Le Goater <c...@kaod.org> Thanks, C. > --- > hw/intc/spapr_xive.c | 5 +---- > hw/ppc/spapr_irq.c | 6 ++++-- > include/hw/ppc/spapr_xive.h | 2 +- > 3 files changed, 6 insertions(+), 7 deletions(-) > > diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c > index d391177ab81f..aab63cfd1178 100644 > --- a/hw/intc/spapr_xive.c > +++ b/hw/intc/spapr_xive.c > @@ -471,16 +471,13 @@ static void spapr_xive_register_types(void) > > type_init(spapr_xive_register_types) > > -bool spapr_xive_irq_claim(sPAPRXive *xive, uint32_t lisn, bool lsi) > +bool spapr_xive_irq_claim(sPAPRXive *xive, uint32_t lisn) > { > - XiveSource *xsrc = &xive->source; > - > if (lisn >= xive->nr_irqs) { > return false; > } > > xive->eat[lisn].w |= cpu_to_be64(EAS_VALID); > - xive_source_irq_set(xsrc, lisn, lsi); > return true; > } > > diff --git a/hw/ppc/spapr_irq.c b/hw/ppc/spapr_irq.c > index 86c712d15382..bcd816c5a5fb 100644 > --- a/hw/ppc/spapr_irq.c > +++ b/hw/ppc/spapr_irq.c > @@ -285,7 +285,8 @@ static void spapr_irq_init_xive(sPAPRMachineState *spapr, > Error **errp) > > /* Enable the CPU IPIs */ > for (i = 0; i < nr_servers; ++i) { > - spapr_xive_irq_claim(spapr->xive, SPAPR_IRQ_IPI + i, false); > + spapr_xive_irq_claim(spapr->xive, SPAPR_IRQ_IPI + i); > + xive_source_irq_set(&spapr->xive->source, SPAPR_IRQ_IPI + i, false); > } > > spapr_xive_hcall_init(spapr); > @@ -294,10 +295,11 @@ static void spapr_irq_init_xive(sPAPRMachineState > *spapr, Error **errp) > static int spapr_irq_claim_xive(sPAPRMachineState *spapr, int irq, bool lsi, > Error **errp) > { > - if (!spapr_xive_irq_claim(spapr->xive, irq, lsi)) { > + if (!spapr_xive_irq_claim(spapr->xive, irq)) { > error_setg(errp, "IRQ %d is invalid", irq); > return -1; > } > + xive_source_irq_set(&spapr->xive->source, irq, lsi); > return 0; > } > > diff --git a/include/hw/ppc/spapr_xive.h b/include/hw/ppc/spapr_xive.h > index 7fdc25057420..f8854a4a6a18 100644 > --- a/include/hw/ppc/spapr_xive.h > +++ b/include/hw/ppc/spapr_xive.h > @@ -37,7 +37,7 @@ typedef struct sPAPRXive { > MemoryRegion tm_mmio; > } sPAPRXive; > > -bool spapr_xive_irq_claim(sPAPRXive *xive, uint32_t lisn, bool lsi); > +bool spapr_xive_irq_claim(sPAPRXive *xive, uint32_t lisn); > bool spapr_xive_irq_free(sPAPRXive *xive, uint32_t lisn); > void spapr_xive_pic_print_info(sPAPRXive *xive, Monitor *mon); > >