Re: [PATCH] base: fix a missing check of clk_prepare
On Tue 2019-01-01 22:05:39, Rafael J. Wysocki wrote: > On Tue, Jan 1, 2019 at 9:21 PM Pavel Machek wrote: > > > > On Tue 2019-01-01 21:13:01, Rafael J. Wysocki wrote: > > > On Mon, Dec 31, 2018 at 6:25 PM Pavel Machek wrote: > > > > > > > > On Wed 2018-12-26 10:37:54, Rafael J. Wysocki wrote: > > > > > On Wed, Dec 26, 2018 at 3:47 AM Kangjie Lu wrote: > > > > > > > > > > > > clk_prepare() could fail, so let's check its status, and if it > > > > > > fails, > > > > > > issue an error message. > > > > > > > > > > > > Signed-off-by: Kangjie Lu > > > > > > --- > > > > > > drivers/base/power/clock_ops.c | 4 +++- > > > > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > > > > > > > diff --git a/drivers/base/power/clock_ops.c > > > > > > b/drivers/base/power/clock_ops.c > > > > > > index 5a42ae4078c2..cb6144fb24e2 100644 > > > > > > --- a/drivers/base/power/clock_ops.c > > > > > > +++ b/drivers/base/power/clock_ops.c > > > > > > @@ -65,7 +65,9 @@ static void pm_clk_acquire(struct device *dev, > > > > > > struct pm_clock_entry *ce) > > > > > > if (IS_ERR(ce->clk)) { > > > > > > ce->status = PCE_STATUS_ERROR; > > > > > > } else { > > > > > > - clk_prepare(ce->clk); > > > > > > + if (clk_prepare(ce->clk)) > > > > > > + dev_err(dev, "clk_prepare failed.\n"); > > > > > > > > > > I'm not sure that this is useful. The code continues regardless of > > > > > the error anyway and it should at least set ce->status to > > > > > PCE_STATUS_ERROR in the failing case. > > > > > > > > Maybe this is not complete fix, but dev_err() is preferable to silent > > > > failure. > > > > > > Preferable to you I suppose? > > > > Preferable to the poor person trying to figure out why his machine > > does not work? > > Not really, unless that person knows what the message means. > > Honestly, what would you do if you saw that message? Grep it in the kernel sources. Having something to grep for (vs. machine that fails to work properly) is quite important. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html signature.asc Description: Digital signature
Re: [PATCH] base: fix a missing check of clk_prepare
On Tue, Jan 1, 2019 at 9:21 PM Pavel Machek wrote: > > On Tue 2019-01-01 21:13:01, Rafael J. Wysocki wrote: > > On Mon, Dec 31, 2018 at 6:25 PM Pavel Machek wrote: > > > > > > On Wed 2018-12-26 10:37:54, Rafael J. Wysocki wrote: > > > > On Wed, Dec 26, 2018 at 3:47 AM Kangjie Lu wrote: > > > > > > > > > > clk_prepare() could fail, so let's check its status, and if it fails, > > > > > issue an error message. > > > > > > > > > > Signed-off-by: Kangjie Lu > > > > > --- > > > > > drivers/base/power/clock_ops.c | 4 +++- > > > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > > > > > diff --git a/drivers/base/power/clock_ops.c > > > > > b/drivers/base/power/clock_ops.c > > > > > index 5a42ae4078c2..cb6144fb24e2 100644 > > > > > --- a/drivers/base/power/clock_ops.c > > > > > +++ b/drivers/base/power/clock_ops.c > > > > > @@ -65,7 +65,9 @@ static void pm_clk_acquire(struct device *dev, > > > > > struct pm_clock_entry *ce) > > > > > if (IS_ERR(ce->clk)) { > > > > > ce->status = PCE_STATUS_ERROR; > > > > > } else { > > > > > - clk_prepare(ce->clk); > > > > > + if (clk_prepare(ce->clk)) > > > > > + dev_err(dev, "clk_prepare failed.\n"); > > > > > > > > I'm not sure that this is useful. The code continues regardless of > > > > the error anyway and it should at least set ce->status to > > > > PCE_STATUS_ERROR in the failing case. > > > > > > Maybe this is not complete fix, but dev_err() is preferable to silent > > > failure. > > > > Preferable to you I suppose? > > Preferable to the poor person trying to figure out why his machine > does not work? Not really, unless that person knows what the message means. Honestly, what would you do if you saw that message?
Re: [PATCH] base: fix a missing check of clk_prepare
On Tue 2019-01-01 21:13:01, Rafael J. Wysocki wrote: > On Mon, Dec 31, 2018 at 6:25 PM Pavel Machek wrote: > > > > On Wed 2018-12-26 10:37:54, Rafael J. Wysocki wrote: > > > On Wed, Dec 26, 2018 at 3:47 AM Kangjie Lu wrote: > > > > > > > > clk_prepare() could fail, so let's check its status, and if it fails, > > > > issue an error message. > > > > > > > > Signed-off-by: Kangjie Lu > > > > --- > > > > drivers/base/power/clock_ops.c | 4 +++- > > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > > > diff --git a/drivers/base/power/clock_ops.c > > > > b/drivers/base/power/clock_ops.c > > > > index 5a42ae4078c2..cb6144fb24e2 100644 > > > > --- a/drivers/base/power/clock_ops.c > > > > +++ b/drivers/base/power/clock_ops.c > > > > @@ -65,7 +65,9 @@ static void pm_clk_acquire(struct device *dev, struct > > > > pm_clock_entry *ce) > > > > if (IS_ERR(ce->clk)) { > > > > ce->status = PCE_STATUS_ERROR; > > > > } else { > > > > - clk_prepare(ce->clk); > > > > + if (clk_prepare(ce->clk)) > > > > + dev_err(dev, "clk_prepare failed.\n"); > > > > > > I'm not sure that this is useful. The code continues regardless of > > > the error anyway and it should at least set ce->status to > > > PCE_STATUS_ERROR in the failing case. > > > > Maybe this is not complete fix, but dev_err() is preferable to silent > > failure. > > Preferable to you I suppose? Preferable to the poor person trying to figure out why his machine does not work? Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html signature.asc Description: Digital signature
Re: [PATCH] base: fix a missing check of clk_prepare
On Mon, Dec 31, 2018 at 6:25 PM Pavel Machek wrote: > > On Wed 2018-12-26 10:37:54, Rafael J. Wysocki wrote: > > On Wed, Dec 26, 2018 at 3:47 AM Kangjie Lu wrote: > > > > > > clk_prepare() could fail, so let's check its status, and if it fails, > > > issue an error message. > > > > > > Signed-off-by: Kangjie Lu > > > --- > > > drivers/base/power/clock_ops.c | 4 +++- > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > diff --git a/drivers/base/power/clock_ops.c > > > b/drivers/base/power/clock_ops.c > > > index 5a42ae4078c2..cb6144fb24e2 100644 > > > --- a/drivers/base/power/clock_ops.c > > > +++ b/drivers/base/power/clock_ops.c > > > @@ -65,7 +65,9 @@ static void pm_clk_acquire(struct device *dev, struct > > > pm_clock_entry *ce) > > > if (IS_ERR(ce->clk)) { > > > ce->status = PCE_STATUS_ERROR; > > > } else { > > > - clk_prepare(ce->clk); > > > + if (clk_prepare(ce->clk)) > > > + dev_err(dev, "clk_prepare failed.\n"); > > > > I'm not sure that this is useful. The code continues regardless of > > the error anyway and it should at least set ce->status to > > PCE_STATUS_ERROR in the failing case. > > Maybe this is not complete fix, but dev_err() is preferable to silent > failure. Preferable to you I suppose?
Re: [PATCH] base: fix a missing check of clk_prepare
On Wed 2018-12-26 10:37:54, Rafael J. Wysocki wrote: > On Wed, Dec 26, 2018 at 3:47 AM Kangjie Lu wrote: > > > > clk_prepare() could fail, so let's check its status, and if it fails, > > issue an error message. > > > > Signed-off-by: Kangjie Lu > > --- > > drivers/base/power/clock_ops.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/base/power/clock_ops.c b/drivers/base/power/clock_ops.c > > index 5a42ae4078c2..cb6144fb24e2 100644 > > --- a/drivers/base/power/clock_ops.c > > +++ b/drivers/base/power/clock_ops.c > > @@ -65,7 +65,9 @@ static void pm_clk_acquire(struct device *dev, struct > > pm_clock_entry *ce) > > if (IS_ERR(ce->clk)) { > > ce->status = PCE_STATUS_ERROR; > > } else { > > - clk_prepare(ce->clk); > > + if (clk_prepare(ce->clk)) > > + dev_err(dev, "clk_prepare failed.\n"); > > I'm not sure that this is useful. The code continues regardless of > the error anyway and it should at least set ce->status to > PCE_STATUS_ERROR in the failing case. Maybe this is not complete fix, but dev_err() is preferable to silent failure. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html signature.asc Description: Digital signature
Re: [PATCH] base: fix a missing check of clk_prepare
On Wed, Dec 26, 2018 at 3:47 AM Kangjie Lu wrote: > > clk_prepare() could fail, so let's check its status, and if it fails, > issue an error message. > > Signed-off-by: Kangjie Lu > --- > drivers/base/power/clock_ops.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/base/power/clock_ops.c b/drivers/base/power/clock_ops.c > index 5a42ae4078c2..cb6144fb24e2 100644 > --- a/drivers/base/power/clock_ops.c > +++ b/drivers/base/power/clock_ops.c > @@ -65,7 +65,9 @@ static void pm_clk_acquire(struct device *dev, struct > pm_clock_entry *ce) > if (IS_ERR(ce->clk)) { > ce->status = PCE_STATUS_ERROR; > } else { > - clk_prepare(ce->clk); > + if (clk_prepare(ce->clk)) > + dev_err(dev, "clk_prepare failed.\n"); I'm not sure that this is useful. The code continues regardless of the error anyway and it should at least set ce->status to PCE_STATUS_ERROR in the failing case. Have you seen a failure in this particular spot in practice? > + > ce->status = PCE_STATUS_ACQUIRED; > dev_dbg(dev, "Clock %pC con_id %s managed by runtime PM.\n", > ce->clk, ce->con_id); > -- > 2.17.2 (Apple Git-113) >
[PATCH] base: fix a missing check of clk_prepare
clk_prepare() could fail, so let's check its status, and if it fails, issue an error message. Signed-off-by: Kangjie Lu --- drivers/base/power/clock_ops.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/base/power/clock_ops.c b/drivers/base/power/clock_ops.c index 5a42ae4078c2..cb6144fb24e2 100644 --- a/drivers/base/power/clock_ops.c +++ b/drivers/base/power/clock_ops.c @@ -65,7 +65,9 @@ static void pm_clk_acquire(struct device *dev, struct pm_clock_entry *ce) if (IS_ERR(ce->clk)) { ce->status = PCE_STATUS_ERROR; } else { - clk_prepare(ce->clk); + if (clk_prepare(ce->clk)) + dev_err(dev, "clk_prepare failed.\n"); + ce->status = PCE_STATUS_ACQUIRED; dev_dbg(dev, "Clock %pC con_id %s managed by runtime PM.\n", ce->clk, ce->con_id); -- 2.17.2 (Apple Git-113)