RE: [tip: irq/msi] genirq/irqdomain: Remove the param count restriction from select()

From: Biju Das
Date: Mon Feb 19 2024 - 11:39:36 EST


Hi Marc Zyngier,

Thanks for the feedback.

> -----Original Message-----
> From: Marc Zyngier <maz@xxxxxxxxxx>
> Sent: Monday, February 19, 2024 3:57 PM
> Subject: Re: [tip: irq/msi] genirq/irqdomain: Remove the param count
> restriction from select()
>
> On Mon, 19 Feb 2024 15:50:36 +0000,
> Biju Das <biju.das.jz@xxxxxxxxxxxxxx> wrote:
> >
> > > Now that the GIC-v3 callback can handle invocation with a fwspec
> > > parameter count of 0 lift the restriction in the core code and
> > > invoke select() unconditionally when the domain provides it.
> >
> > This patch breaks on RZ/G2L SMARC EVK as of_phandle_args_to_fwspec
> > count() is called after irq_find_matching_fwspec() is causing
> > fwspec->param_count=0 and this results in boot failure as the patch
> removes the check.
> >
> > Maybe we need to revert this patch or fix the fundamental issue.
> >
> > Cheers,
> > Biju
> > ---
> > kernel/irq/irqdomain.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index
> > 0bdef4f..8fee379 100644
> > --- a/kernel/irq/irqdomain.c
> > +++ b/kernel/irq/irqdomain.c
> > @@ -448,7 +448,7 @@ struct irq_domain *irq_find_matching_fwspec(struct
> irq_fwspec *fwspec,
> > */
> > mutex_lock(&irq_domain_mutex);
> > list_for_each_entry(h, &irq_domain_list, link) {
> > - if (h->ops->select && fwspec->param_count)
> > + if (h->ops->select)
> > rc = h->ops->select(h, fwspec, bus_token);
> > else if (h->ops->match)
> > rc = h->ops->match(h, to_of_node(fwnode), bus_token);
> >
> >
>
> Dmitry posted his take on this at [1], and I have suggested another
> possible fix in my reply.
>
> Could you please give both patches a go?

I tested and confirm both the patches looks good.

Cheers,
Biju