[PATCH v3 02/11] of/irq: Set FWNODE_FLAG_BEST_EFFORT for the interrupt controller DT nodes

Saravana Kannan saravanak at google.com
Fri Jun 9 14:17:21 PDT 2023


On Fri, Jun 9, 2023 at 4:40 AM Anup Patel <apatel at ventanamicro.com> wrote:
>
> On Fri, Jun 9, 2023 at 1:35 AM Saravana Kannan <saravanak at google.com> wrote:
> >
> > On Thu, Jun 8, 2023 at 11:28 AM Rob Herring <robh at kernel.org> wrote:
> > >
> > > +Saravana
> > >
> > > On Mon, May 08, 2023 at 07:58:33PM +0530, Anup Patel wrote:
> > > > The RISC-V APLIC interrupt controller driver is a regular platform
> > > > driver so we need to ensure that it is probed as soon as possible.
> > > > To achieve this, we mark the interrupt controller device nodes with
> > > > FWNODE_FLAG_BEST_EFFORT (just like console DT node).
> > > >
> > > > Fixes: 8f486cab263c ("driver core: fw_devlink: Allow firmware to mark devices as best effort")
> > >
> > > It is good practice to Cc the commit author of what you are fixing.
> > >
> > > > Signed-off-by: Anup Patel <apatel at ventanamicro.com>
> > > > ---
> > > >  drivers/of/irq.c | 10 ++++++++++
> > > >  1 file changed, 10 insertions(+)
> > > >
> > > > diff --git a/drivers/of/irq.c b/drivers/of/irq.c
> > > > index 174900072c18..94e1d9245cff 100644
> > > > --- a/drivers/of/irq.c
> > > > +++ b/drivers/of/irq.c
> > > > @@ -535,6 +535,16 @@ void __init of_irq_init(const struct of_device_id *matches)
> > > >       INIT_LIST_HEAD(&intc_desc_list);
> > > >       INIT_LIST_HEAD(&intc_parent_list);
> > > >
> > > > +     /*
> > > > +      * We need interrupt controller platform drivers to work as soon
> > >
> > > If it's platform drivers/devices you care about, then perhaps this
> > > should be done when platform devices are created.
> > >
> > > > +      * as possible so mark the interrupt controller device nodes with
> > > > +      * FWNODE_FLAG_BEST_EFFORT so that fw_delink knows not to delay
> > > > +      * the probe of the interrupt controller device for suppliers
> > > > +      * without drivers.
> > > > +      */
> > > > +     for_each_node_with_property(np, "interrupt-controller")
> > >
> > > This function only operates on nodes matching 'matches', but this
> > > operates on everything.
> > >
> > > It does make sense that if we init an interrupt controller here, then we
> > > will surely want to probe its driver later on. So maybe just move
> > > setting FWNODE_FLAG_BEST_EFFORT within
> > > for_each_matching_node_and_match() below.
> > >
> > > > +             np->fwnode.flags |= FWNODE_FLAG_BEST_EFFORT;
> > > > +
> >
> > Definite Nack. You are pretty much disabling fw_devlink for all
> > interrupt controllers. There are plenty of examples of the IRQ drivers
> > being needed very early on and still probing properly without the need
> > for this flag. Please fix your driver/DT.
>
> Okay, I will try to set FWNODE_FLAG_BEST_EFFORT only for
> APLIC device_node via IRQCHIP_DECLARE().

No, my point is that you very likely don't need to use that flag.

What exactly is the problem you are facing? Point to an example RISC-V
dts (not dtsi) in upstream and give specifics please.

-Saravana



More information about the linux-riscv mailing list