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

Attachment: signature.asc
Description: PGP signature

Reply via email to