2021-02-06 03:45:33

by Saravana Kannan

[permalink] [raw]
Subject: [PATCH v4 8/8] clk: Mark fwnodes when their clock provider is added/removed

This allows fw_devlink to recognize clock provider drivers that don't
use the device-driver model to initialize the device. fw_devlink will
use this information to make sure consumers of such clock providers
aren't indefinitely blocked from probing, waiting for the power domain
device to appear and bind to a driver.

Signed-off-by: Saravana Kannan <[email protected]>
---
drivers/clk/clk.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 8c1d04db990d..27ff90eacb1f 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -4555,6 +4555,8 @@ int of_clk_add_provider(struct device_node *np,
if (ret < 0)
of_clk_del_provider(np);

+ fwnode_dev_initialized(&np->fwnode, true);
+
return ret;
}
EXPORT_SYMBOL_GPL(of_clk_add_provider);
@@ -4672,6 +4674,7 @@ void of_clk_del_provider(struct device_node *np)
list_for_each_entry(cp, &of_clk_providers, link) {
if (cp->node == np) {
list_del(&cp->link);
+ fwnode_dev_initialized(&np->fwnode, false);
of_node_put(cp->node);
kfree(cp);
break;
--
2.30.0.478.g8a0d178c01-goog


2021-02-08 18:09:24

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v4 8/8] clk: Mark fwnodes when their clock provider is added/removed

On Fri, Feb 5, 2021 at 4:27 PM Saravana Kannan <[email protected]> wrote:
>
> This allows fw_devlink to recognize clock provider drivers that don't
> use the device-driver model to initialize the device. fw_devlink will
> use this information to make sure consumers of such clock providers
> aren't indefinitely blocked from probing, waiting for the power domain
> device to appear and bind to a driver.

Don't we have cases that are a mixture? IOW, a subset of the clock
provider is initialized early, then the full driver takes over. You'd
want consumers that are not a driver to succeed, but drivers to defer
until the full driver is up.

>
> Signed-off-by: Saravana Kannan <[email protected]>
> ---
> drivers/clk/clk.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
> index 8c1d04db990d..27ff90eacb1f 100644
> --- a/drivers/clk/clk.c
> +++ b/drivers/clk/clk.c
> @@ -4555,6 +4555,8 @@ int of_clk_add_provider(struct device_node *np,
> if (ret < 0)
> of_clk_del_provider(np);
>
> + fwnode_dev_initialized(&np->fwnode, true);
> +
> return ret;
> }
> EXPORT_SYMBOL_GPL(of_clk_add_provider);
> @@ -4672,6 +4674,7 @@ void of_clk_del_provider(struct device_node *np)
> list_for_each_entry(cp, &of_clk_providers, link) {
> if (cp->node == np) {
> list_del(&cp->link);
> + fwnode_dev_initialized(&np->fwnode, false);
> of_node_put(cp->node);
> kfree(cp);
> break;
> --
> 2.30.0.478.g8a0d178c01-goog
>

2021-02-08 23:38:05

by Saravana Kannan

[permalink] [raw]
Subject: Re: [PATCH v4 8/8] clk: Mark fwnodes when their clock provider is added/removed

On Mon, Feb 8, 2021 at 7:39 AM Rob Herring <[email protected]> wrote:
>
> On Fri, Feb 5, 2021 at 4:27 PM Saravana Kannan <[email protected]> wrote:
> >
> > This allows fw_devlink to recognize clock provider drivers that don't
> > use the device-driver model to initialize the device. fw_devlink will
> > use this information to make sure consumers of such clock providers
> > aren't indefinitely blocked from probing, waiting for the power domain
> > device to appear and bind to a driver.
>
> Don't we have cases that are a mixture? IOW, a subset of the clock
> provider is initialized early, then the full driver takes over. You'd
> want consumers that are not a driver to succeed, but drivers to defer
> until the full driver is up.

You probably just made a typo, but to clarify, this is about ignoring
suppliers that never bind. So, in your case the clock device is the
supplier.

To answer your question, consumer devices added after the full
supplier driver takes over will still have device links created to the
supplier clock device. But consumers added before the full driver
takes over won't. So, nothing is worse off with fw_devlink=on and we
get way more dependency tracking (device links) created than what we
have today.

-Saravana

2021-02-14 21:18:42

by Saravana Kannan

[permalink] [raw]
Subject: Re: [PATCH v4 8/8] clk: Mark fwnodes when their clock provider is added/removed

On Fri, Feb 12, 2021 at 4:39 PM Stephen Boyd <[email protected]> wrote:
>
> Quoting Saravana Kannan (2021-02-05 14:26:44)
> > This allows fw_devlink to recognize clock provider drivers that don't
> > use the device-driver model to initialize the device. fw_devlink will
> > use this information to make sure consumers of such clock providers
> > aren't indefinitely blocked from probing, waiting for the power domain
> > device to appear and bind to a driver.
>
> The "power domain" part of this commit text doesn't make any sense. Is
> it copy/pasted from some other patch? Should probably say "waiting for
> the clk providing device"?

Yeah, copy-pasta.

>
> >
> > Signed-off-by: Saravana Kannan <[email protected]>
> > ---
>
> Acked-by: Stephen Boyd <[email protected]>

Thanks,
Saravana