From: sboyd@codeaurora.org (Stephen Boyd)
To: cocci@systeme.lip6.fr
Subject: [Cocci] [PATCH v13 3/6] clk: Make clk API return per-user struct clk instances
Date: Wed, 04 Feb 2015 15:26:19 -0800 [thread overview]
Message-ID: <54D2AA9B.7010800@codeaurora.org> (raw)
In-Reply-To: <54D0F179.1040906@gmail.com>
On 02/03/15 08:04, Quentin Lambert wrote:
> Hello,
> Julia asked me to have a look and see if I can help.
>
> I have found these three cases using Coccinnelle in the mach-omap2
> directory.
>
>
>
> ./arch/arm/mach-omap2/clkt_clksel.c
> @@ -67,7 +67,6 @@ static const struct clksel *_get_clksel_
> return NULL;
>
> for (clks = clk->clksel; clks->parent; clks++)
> if (clks->parent == src_clk)
This probably needs to compare hw pointers again given that it's in the
clk-provider code. It would be nice if we could use indices instead though.
> break; /* Found the requested parent */
>
> if (!clks->parent) {
> ./arch/arm/mach-omap2/dpll3xxx.c
> @@ -551,7 +549,6 @@ int omap3_noncore_dpll_set_rate(struct c
> if (!dd)
> return -EINVAL;
>
> if (__clk_get_parent(hw->clk) != dd->clk_ref)
This one is what this thread has started on about. Comparing hw pointers
is ok for now...
> return -EINVAL;
>
> if (dd->last_rounded_rate == 0)
> ./arch/arm/mach-omap2/timer.c
> @@ -298,7 +298,6 @@ static int __init omap_dm_timer_init_one
> if (IS_ERR(src))
> return PTR_ERR(src);
>
> if (clk_get_parent(timer->fclk) != src) {
This one looks like an optimization. We can just always try to set the
parent and if it's already the current parent then the core should bail
out early without an error. So the fix would be to just remove the if
condition.
> r = clk_set_parent(timer->fclk, src);
> if (r < 0) {
> pr_warn("%s: %s cannot set source\n", __func__,
>
>
> Are they instances of your issue?
Yes these all look like instances of the problem.
> If you want me to I can enlarge the search to other directories.
Yes please do. And if you could share the coccinelle patch that would be
great. Thanks.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Boyd <sboyd@codeaurora.org>
To: Quentin Lambert <lambert.quentin@gmail.com>,
Mike Turquette <mturquette@linaro.org>,
Julia Lawall <julia.lawall@lip6.fr>
Cc: Paul Walmsley <paul@pwsan.com>,
Tomeu Vizoso <tomeu.vizoso@collabora.com>,
Tony Lindgren <tony@atomide.com>,
linux-kernel@vger.kernel.org, t-kristo@ti.com,
linux-omap@vger.kernel.org, cocci@systeme.lip6.fr,
linux-arm-kernel@lists.infradead.org
Subject: Re: [Cocci] [PATCH v13 3/6] clk: Make clk API return per-user struct clk instances
Date: Wed, 04 Feb 2015 15:26:19 -0800 [thread overview]
Message-ID: <54D2AA9B.7010800@codeaurora.org> (raw)
In-Reply-To: <54D0F179.1040906@gmail.com>
On 02/03/15 08:04, Quentin Lambert wrote:
> Hello,
> Julia asked me to have a look and see if I can help.
>
> I have found these three cases using Coccinnelle in the mach-omap2
> directory.
>
>
>
> ./arch/arm/mach-omap2/clkt_clksel.c
> @@ -67,7 +67,6 @@ static const struct clksel *_get_clksel_
> return NULL;
>
> for (clks = clk->clksel; clks->parent; clks++)
> if (clks->parent == src_clk)
This probably needs to compare hw pointers again given that it's in the
clk-provider code. It would be nice if we could use indices instead though.
> break; /* Found the requested parent */
>
> if (!clks->parent) {
> ./arch/arm/mach-omap2/dpll3xxx.c
> @@ -551,7 +549,6 @@ int omap3_noncore_dpll_set_rate(struct c
> if (!dd)
> return -EINVAL;
>
> if (__clk_get_parent(hw->clk) != dd->clk_ref)
This one is what this thread has started on about. Comparing hw pointers
is ok for now...
> return -EINVAL;
>
> if (dd->last_rounded_rate == 0)
> ./arch/arm/mach-omap2/timer.c
> @@ -298,7 +298,6 @@ static int __init omap_dm_timer_init_one
> if (IS_ERR(src))
> return PTR_ERR(src);
>
> if (clk_get_parent(timer->fclk) != src) {
This one looks like an optimization. We can just always try to set the
parent and if it's already the current parent then the core should bail
out early without an error. So the fix would be to just remove the if
condition.
> r = clk_set_parent(timer->fclk, src);
> if (r < 0) {
> pr_warn("%s: %s cannot set source\n", __func__,
>
>
> Are they instances of your issue?
Yes these all look like instances of the problem.
> If you want me to I can enlarge the search to other directories.
Yes please do. And if you could share the coccinelle patch that would be
great. Thanks.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [Cocci] [PATCH v13 3/6] clk: Make clk API return per-user struct clk instances
Date: Wed, 04 Feb 2015 15:26:19 -0800 [thread overview]
Message-ID: <54D2AA9B.7010800@codeaurora.org> (raw)
In-Reply-To: <54D0F179.1040906@gmail.com>
On 02/03/15 08:04, Quentin Lambert wrote:
> Hello,
> Julia asked me to have a look and see if I can help.
>
> I have found these three cases using Coccinnelle in the mach-omap2
> directory.
>
>
>
> ./arch/arm/mach-omap2/clkt_clksel.c
> @@ -67,7 +67,6 @@ static const struct clksel *_get_clksel_
> return NULL;
>
> for (clks = clk->clksel; clks->parent; clks++)
> if (clks->parent == src_clk)
This probably needs to compare hw pointers again given that it's in the
clk-provider code. It would be nice if we could use indices instead though.
> break; /* Found the requested parent */
>
> if (!clks->parent) {
> ./arch/arm/mach-omap2/dpll3xxx.c
> @@ -551,7 +549,6 @@ int omap3_noncore_dpll_set_rate(struct c
> if (!dd)
> return -EINVAL;
>
> if (__clk_get_parent(hw->clk) != dd->clk_ref)
This one is what this thread has started on about. Comparing hw pointers
is ok for now...
> return -EINVAL;
>
> if (dd->last_rounded_rate == 0)
> ./arch/arm/mach-omap2/timer.c
> @@ -298,7 +298,6 @@ static int __init omap_dm_timer_init_one
> if (IS_ERR(src))
> return PTR_ERR(src);
>
> if (clk_get_parent(timer->fclk) != src) {
This one looks like an optimization. We can just always try to set the
parent and if it's already the current parent then the core should bail
out early without an error. So the fix would be to just remove the if
condition.
> r = clk_set_parent(timer->fclk, src);
> if (r < 0) {
> pr_warn("%s: %s cannot set source\n", __func__,
>
>
> Are they instances of your issue?
Yes these all look like instances of the problem.
> If you want me to I can enlarge the search to other directories.
Yes please do. And if you could share the coccinelle patch that would be
great. Thanks.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2015-02-04 23:26 UTC|newest]
Thread overview: 177+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-23 11:03 [PATCH v13 0/6] Per-user clock constraints Tomeu Vizoso
2015-01-23 11:03 ` [PATCH v13 1/6] clk: Remove unneeded NULL checks Tomeu Vizoso
2015-01-23 11:03 ` [PATCH v13 2/6] clk: Remove __clk_register Tomeu Vizoso
2015-01-23 11:03 ` [PATCH v13 3/6] clk: Make clk API return per-user struct clk instances Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-02-01 21:24 ` Mike Turquette
2015-02-01 21:24 ` Mike Turquette
2015-02-01 21:24 ` Mike Turquette
2015-02-02 17:04 ` Tony Lindgren
2015-02-02 17:04 ` Tony Lindgren
2015-02-02 17:32 ` Mike Turquette
2015-02-02 17:32 ` Mike Turquette
2015-02-02 19:32 ` Tero Kristo
2015-02-02 19:32 ` Tero Kristo
2015-02-02 19:32 ` Tero Kristo
2015-02-02 20:44 ` Tony Lindgren
2015-02-02 20:44 ` Tony Lindgren
2015-02-02 22:48 ` Mike Turquette
2015-02-02 22:48 ` Mike Turquette
2015-02-02 23:11 ` Tony Lindgren
2015-02-02 23:11 ` Tony Lindgren
2015-02-02 22:41 ` Mike Turquette
2015-02-02 22:41 ` Mike Turquette
2015-02-02 22:52 ` Stephen Boyd
2015-02-02 22:52 ` Stephen Boyd
2015-02-03 7:03 ` Tomeu Vizoso
2015-02-03 7:03 ` Tomeu Vizoso
2015-02-03 8:46 ` Tero Kristo
2015-02-03 8:46 ` Tero Kristo
2015-02-03 8:46 ` Tero Kristo
2015-02-03 15:22 ` Tony Lindgren
2015-02-03 15:22 ` Tony Lindgren
2015-02-02 20:45 ` [Cocci] " Stephen Boyd
2015-02-02 20:45 ` Stephen Boyd
2015-02-02 20:45 ` Stephen Boyd
2015-02-02 21:31 ` [Cocci] " Julia Lawall
2015-02-02 21:31 ` Julia Lawall
2015-02-02 21:31 ` Julia Lawall
2015-02-02 22:35 ` [Cocci] " Stephen Boyd
2015-02-02 22:35 ` Stephen Boyd
2015-02-02 22:35 ` Stephen Boyd
2015-02-02 22:50 ` [Cocci] " Mike Turquette
2015-02-02 22:50 ` Mike Turquette
2015-02-02 22:50 ` Mike Turquette
2015-02-03 16:04 ` [Cocci] " Quentin Lambert
2015-02-03 16:04 ` Quentin Lambert
2015-02-03 16:04 ` Quentin Lambert
2015-02-04 23:26 ` Stephen Boyd [this message]
2015-02-04 23:26 ` Stephen Boyd
2015-02-04 23:26 ` Stephen Boyd
2015-02-05 15:45 ` Quentin Lambert
2015-02-05 15:45 ` Quentin Lambert
2015-02-05 15:45 ` Quentin Lambert
2015-02-05 16:02 ` Quentin Lambert
2015-02-05 16:02 ` Quentin Lambert
2015-02-05 16:02 ` Quentin Lambert
2015-02-06 1:49 ` Stephen Boyd
2015-02-06 1:49 ` Stephen Boyd
2015-02-06 1:49 ` Stephen Boyd
2015-02-06 2:15 ` Stephen Boyd
2015-02-06 2:15 ` Stephen Boyd
2015-02-06 2:15 ` Stephen Boyd
2015-02-06 9:01 ` Quentin Lambert
2015-02-06 9:01 ` Quentin Lambert
2015-02-06 9:01 ` Quentin Lambert
2015-02-06 9:12 ` Julia Lawall
2015-02-06 9:12 ` Julia Lawall
2015-02-06 9:12 ` Julia Lawall
2015-02-06 17:15 ` Stephen Boyd
2015-02-06 17:15 ` Stephen Boyd
2015-02-06 17:15 ` Stephen Boyd
2015-02-17 22:01 ` Stephen Boyd
2015-02-17 22:01 ` Stephen Boyd
2015-02-17 22:01 ` Stephen Boyd
2015-03-12 17:20 ` Sebastian Andrzej Siewior
2015-03-12 17:20 ` Sebastian Andrzej Siewior
2015-03-12 17:20 ` Sebastian Andrzej Siewior
2015-03-12 19:43 ` Stephen Boyd
2015-03-12 19:43 ` Stephen Boyd
2015-03-12 19:43 ` Stephen Boyd
2015-03-13 3:29 ` Shawn Guo
2015-03-13 3:29 ` Shawn Guo
2015-03-13 3:29 ` Shawn Guo
2015-03-13 8:20 ` Sebastian Andrzej Siewior
2015-03-13 8:20 ` Sebastian Andrzej Siewior
2015-03-13 8:20 ` Sebastian Andrzej Siewior
2015-03-13 13:42 ` Shawn Guo
2015-03-13 13:42 ` Shawn Guo
2015-03-13 13:42 ` Shawn Guo
2015-03-13 17:42 ` Stephen Boyd
2015-03-13 17:42 ` Stephen Boyd
2015-03-13 17:42 ` Stephen Boyd
2015-02-05 19:44 ` Sylwester Nawrocki
2015-02-05 19:44 ` Sylwester Nawrocki
2015-02-05 20:06 ` Sylwester Nawrocki
2015-02-05 20:06 ` Sylwester Nawrocki
2015-02-05 20:07 ` Stephen Boyd
2015-02-05 20:07 ` Stephen Boyd
2015-02-05 22:14 ` Stephen Boyd
2015-02-05 22:14 ` Stephen Boyd
2015-02-06 0:42 ` Russell King - ARM Linux
2015-02-06 0:42 ` Russell King - ARM Linux
2015-02-06 1:35 ` Stephen Boyd
2015-02-06 1:35 ` Stephen Boyd
2015-02-06 13:39 ` Russell King - ARM Linux
2015-02-06 13:39 ` Russell King - ARM Linux
2015-02-06 19:30 ` Stephen Boyd
2015-02-06 19:30 ` Stephen Boyd
2015-02-06 19:37 ` Russell King - ARM Linux
2015-02-06 19:37 ` Russell King - ARM Linux
2015-02-06 19:41 ` Stephen Boyd
2015-02-06 19:41 ` Stephen Boyd
2015-02-19 21:32 ` Mike Turquette
2015-02-19 21:32 ` Mike Turquette
2015-02-24 14:08 ` Russell King - ARM Linux
2015-02-24 14:08 ` Russell King - ARM Linux
2015-02-25 2:18 ` Mike Turquette
2015-02-25 2:18 ` Mike Turquette
2015-01-23 11:03 ` [PATCH v13 4/6] clk: Add rate constraints to clocks Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 13:31 ` Geert Uytterhoeven
2015-01-29 19:13 ` Stephen Boyd
2015-01-29 19:13 ` Stephen Boyd
2015-01-29 19:13 ` Stephen Boyd
2015-01-29 19:13 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 1:31 ` Stephen Boyd
2015-01-31 18:36 ` Tomeu Vizoso
2015-01-31 18:36 ` Tomeu Vizoso
2015-01-31 18:36 ` Tomeu Vizoso
2015-01-31 18:36 ` Tomeu Vizoso
2015-02-01 22:18 ` Mike Turquette
2015-02-01 22:18 ` Mike Turquette
2015-02-01 22:18 ` Mike Turquette
2015-02-01 22:18 ` Mike Turquette
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 7:59 ` Geert Uytterhoeven
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 16:12 ` Tony Lindgren
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:46 ` Mike Turquette
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 17:49 ` Russell King - ARM Linux
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 19:21 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-02-02 20:47 ` Tony Lindgren
2015-01-23 11:03 ` [PATCH v13 5/6] clkdev: Export clk_register_clkdev Tomeu Vizoso
2015-01-23 11:03 ` Tomeu Vizoso
2015-02-03 17:35 ` Andy Shevchenko
2015-02-03 17:35 ` Andy Shevchenko
2015-02-03 17:43 ` Andy Shevchenko
2015-02-03 17:43 ` Andy Shevchenko
2015-01-23 11:03 ` [PATCH v13 6/6] clk: Add module for unit tests Tomeu Vizoso
2015-01-27 0:55 ` [PATCH v13 0/6] Per-user clock constraints Stephen Boyd
2015-01-27 6:29 ` Tomeu Vizoso
2015-01-28 6:59 ` Tomeu Vizoso
[not found] ` <20150129022633.22722.78592@quantum>
2015-01-29 6:41 ` Tomeu Vizoso
2015-01-29 14:29 ` Mike Turquette
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54D2AA9B.7010800@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=cocci@systeme.lip6.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.