On 02/10/2019 08:40, David Gibson wrote:
> On Wed, Oct 02, 2019 at 08:13:55AM +0200, Cédric Le Goater wrote:
>>>> @@ -527,6 +471,30 @@ static int spapr_irq_check(SpaprMachineState *spapr, 
>>>> Error **errp)
>>>>  /*
>>>>   * sPAPR IRQ frontend routines for devices
>>>>   */
>>>> +#define ALL_INTCS(spapr_) \
>>>> +    { SPAPR_INTC((spapr_)->ics), SPAPR_INTC((spapr_)->xive), }
>>>
>>> I would have expected this array to be under the machine.
>>>
>>>> +int spapr_irq_cpu_intc_create(SpaprMachineState *spapr,
>>>> +                              PowerPCCPU *cpu, Error **errp)
>>>> +{
>>>> +    SpaprInterruptController *intcs[] = ALL_INTCS(spapr);
>>>> +    int i;
>>>> +    int rc;
>>>> +
>>>> +    for (i = 0; i < ARRAY_SIZE(intcs); i++) {
>>>
>>> but it would have been difficult to use ARRAY_SIZE. OK then.
>>>
>>>> +        SpaprInterruptController *intc = intcs[i];
>>>> +        if (intc) {
>>>
>>> Is that test needed ? 
>>
>> I understand now : spapr->ics and spapr->xive can be NULL. 
>>
>> I think using a list would be better.
> 
> Uh.. a list in what sense?

an interrupt controller list under the machine. 

when created, an interrupt controller would self register in that list.

C.

Reply via email to