On Wed, Dec 19, 2018 at 08:15:36PM +0100, Cédric Le Goater wrote: > [ ... ] > > >>> +static qemu_irq spapr_qirq_dual(sPAPRMachineState *spapr, int irq) > >>> +{ > >>> + return spapr_irq_current(spapr)->qirq(spapr, irq); > >>> +} > >> > >> This still makes me really nervous - I'd really prefer to have qirqs > >> independent of the backend, rather than relying on *every* irq using > >> device never looking up qirqs in advance. > > > > I will take a look. This is a large rework I won't have time to address > > this year. I have removed the dual machine from v9. > > > > You would move the qirq array at the machine level ? > > I took a look today and did a few changes : > > - move the qirq array at the machine level > - introduced a 'set_irq' method to sPAPR IRQ > - adapted the 'qirq' method of sPAPR IRQ. We still need to perform some > checks and to handle the IRQ number offset. > > It falls well in place, a part for the ICS source of the PnvPSI model > which does not have any qirq anymore. For PSI, I am thinking of moving > the qirq array under PnvPSI model, like I did for the machine. > > Would that be ok ? That sounds reasonable. I'd been thinking of having a qirq array at the machine level which dispatched to other qirq arrays at the ICS or XiveSource levels, but if you don't need that, that's ok too. > > I think there are a couple more possible cleanups on the different ICS > models to do if these changes are acceptable. > > C. > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson