2019-10-10 10:34:11

by Viresh Kumar

[permalink] [raw]
Subject: [PATCH] opp: of: drop incorrect lockdep_assert_held()

_find_opp_of_np() doesn't traverse the list of OPP tables but instead
just the entries within an OPP table and so only requires to lock the
OPP table itself.

The lockdep_assert_held() was added there by mistake and isn't really
required.

Fixes: 5d6d106fa455 ("OPP: Populate required opp tables from "required-opps" property")
Cc: v5.0+ <[email protected]> # v5.0+
Reported-by: Niklas Cassel <[email protected]>
Signed-off-by: Viresh Kumar <[email protected]>
---
drivers/opp/of.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/opp/of.c b/drivers/opp/of.c
index 1813f5ad5fa2..6dc41faf74b5 100644
--- a/drivers/opp/of.c
+++ b/drivers/opp/of.c
@@ -77,8 +77,6 @@ static struct dev_pm_opp *_find_opp_of_np(struct opp_table *opp_table,
{
struct dev_pm_opp *opp;

- lockdep_assert_held(&opp_table_lock);
-
mutex_lock(&opp_table->lock);

list_for_each_entry(opp, &opp_table->opp_list, node) {
--
2.21.0.rc0.269.g1a574e7a288b


2019-10-23 05:57:27

by Viresh Kumar

[permalink] [raw]
Subject: Re: [PATCH] opp: of: drop incorrect lockdep_assert_held()

On 10-10-19, 16:00, Viresh Kumar wrote:
> _find_opp_of_np() doesn't traverse the list of OPP tables but instead
> just the entries within an OPP table and so only requires to lock the
> OPP table itself.
>
> The lockdep_assert_held() was added there by mistake and isn't really
> required.
>
> Fixes: 5d6d106fa455 ("OPP: Populate required opp tables from "required-opps" property")
> Cc: v5.0+ <[email protected]> # v5.0+
> Reported-by: Niklas Cassel <[email protected]>
> Signed-off-by: Viresh Kumar <[email protected]>
> ---
> drivers/opp/of.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/drivers/opp/of.c b/drivers/opp/of.c
> index 1813f5ad5fa2..6dc41faf74b5 100644
> --- a/drivers/opp/of.c
> +++ b/drivers/opp/of.c
> @@ -77,8 +77,6 @@ static struct dev_pm_opp *_find_opp_of_np(struct opp_table *opp_table,
> {
> struct dev_pm_opp *opp;
>
> - lockdep_assert_held(&opp_table_lock);
> -
> mutex_lock(&opp_table->lock);
>
> list_for_each_entry(opp, &opp_table->opp_list, node) {

@Niklas, any inputs from your side here would be appreciated :)

--
viresh

2019-10-23 13:14:22

by Niklas Cassel

[permalink] [raw]
Subject: Re: [PATCH] opp: of: drop incorrect lockdep_assert_held()

On Wed, Oct 23, 2019 at 11:00:05AM +0530, Viresh Kumar wrote:
> On 10-10-19, 16:00, Viresh Kumar wrote:
> > _find_opp_of_np() doesn't traverse the list of OPP tables but instead
> > just the entries within an OPP table and so only requires to lock the
> > OPP table itself.
> >
> > The lockdep_assert_held() was added there by mistake and isn't really
> > required.
> >
> > Fixes: 5d6d106fa455 ("OPP: Populate required opp tables from "required-opps" property")
> > Cc: v5.0+ <[email protected]> # v5.0+
> > Reported-by: Niklas Cassel <[email protected]>
> > Signed-off-by: Viresh Kumar <[email protected]>
> > ---
> > drivers/opp/of.c | 2 --
> > 1 file changed, 2 deletions(-)
> >
> > diff --git a/drivers/opp/of.c b/drivers/opp/of.c
> > index 1813f5ad5fa2..6dc41faf74b5 100644
> > --- a/drivers/opp/of.c
> > +++ b/drivers/opp/of.c
> > @@ -77,8 +77,6 @@ static struct dev_pm_opp *_find_opp_of_np(struct opp_table *opp_table,
> > {
> > struct dev_pm_opp *opp;
> >
> > - lockdep_assert_held(&opp_table_lock);
> > -
> > mutex_lock(&opp_table->lock);
> >
> > list_for_each_entry(opp, &opp_table->opp_list, node) {
>
> @Niklas, any inputs from your side here would be appreciated :)

Tested-by: Niklas Cassel <[email protected]>

After this patch, there is still a single lockdep_assert_held()
left, inside _find_table_of_opp_np(), since you kept this,
I assume that that one is still needed?

Kind regards,
Niklas

2019-10-24 19:03:24

by Viresh Kumar

[permalink] [raw]
Subject: Re: [PATCH] opp: of: drop incorrect lockdep_assert_held()

On 23-10-19, 14:01, Niklas Cassel wrote:
> On Wed, Oct 23, 2019 at 11:00:05AM +0530, Viresh Kumar wrote:
> > On 10-10-19, 16:00, Viresh Kumar wrote:
> > > _find_opp_of_np() doesn't traverse the list of OPP tables but instead
> > > just the entries within an OPP table and so only requires to lock the
> > > OPP table itself.
> > >
> > > The lockdep_assert_held() was added there by mistake and isn't really
> > > required.
> > >
> > > Fixes: 5d6d106fa455 ("OPP: Populate required opp tables from "required-opps" property")
> > > Cc: v5.0+ <[email protected]> # v5.0+
> > > Reported-by: Niklas Cassel <[email protected]>
> > > Signed-off-by: Viresh Kumar <[email protected]>
> > > ---
> > > drivers/opp/of.c | 2 --
> > > 1 file changed, 2 deletions(-)
> > >
> > > diff --git a/drivers/opp/of.c b/drivers/opp/of.c
> > > index 1813f5ad5fa2..6dc41faf74b5 100644
> > > --- a/drivers/opp/of.c
> > > +++ b/drivers/opp/of.c
> > > @@ -77,8 +77,6 @@ static struct dev_pm_opp *_find_opp_of_np(struct opp_table *opp_table,
> > > {
> > > struct dev_pm_opp *opp;
> > >
> > > - lockdep_assert_held(&opp_table_lock);
> > > -
> > > mutex_lock(&opp_table->lock);
> > >
> > > list_for_each_entry(opp, &opp_table->opp_list, node) {
> >
> > @Niklas, any inputs from your side here would be appreciated :)
>
> Tested-by: Niklas Cassel <[email protected]>
>
> After this patch, there is still a single lockdep_assert_held()
> left, inside _find_table_of_opp_np(), since you kept this,
> I assume that that one is still needed?

Yeah, that one is required as we are traversing the list of OPP tables
there.

--
viresh