From: Shubhrajyoti <shubhrajyoti@ti.com>
To: Wolfram Sang <w.sang@pengutronix.de>
Cc: linux-omap@vger.kernel.org, linux-i2c@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, ben-linux@fluff.org,
tony@atomide.com
Subject: Re: [PATCHv8 07/10] I2C: OMAP: Handle error check for pm runtime
Date: Mon, 23 Apr 2012 22:56:44 +0530 [thread overview]
Message-ID: <4F9590D4.7070304@ti.com> (raw)
In-Reply-To: <20120423162008.GB27321@pengutronix.de>
On Monday 23 April 2012 09:50 PM, Wolfram Sang wrote:
> On Thu, Apr 19, 2012 at 06:58:18PM +0530, Shubhrajyoti D wrote:
>> If PM runtime get_sync fails return with the error
>> so that no further reads/writes goes through the interface.
>> This will avoid possible abort. Add a error message in case
>> of failure with the cause of the failure.
> I don't think the error message is especially helpful. You also use different
> string (probably typo).
Will correct and resend
>
>> Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
>> ---
>> drivers/i2c/busses/i2c-omap.c | 19 ++++++++++++++++---
>> 1 files changed, 16 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
>> index 44e8cfa..d555dcd 100644
>> --- a/drivers/i2c/busses/i2c-omap.c
>> +++ b/drivers/i2c/busses/i2c-omap.c
>> @@ -585,7 +585,11 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
>> int i;
>> int r;
>>
>> - pm_runtime_get_sync(dev->dev);
>> + r = pm_runtime_get_sync(dev->dev);
>> + if (r < 0) {
>> + dev_err(dev->dev, "pm_runtime_get_sync failed %d\n", r);
>> + return r;
>> + }
>>
>> r = omap_i2c_wait_for_bb(dev);
>> if (r < 0)
>> @@ -1011,7 +1015,11 @@ omap_i2c_probe(struct platform_device *pdev)
>> dev->regs = (u8 *)reg_map_ip_v1;
>>
>> pm_runtime_enable(dev->dev);
>> - pm_runtime_get_sync(dev->dev);
>> + r = pm_runtime_get_sync(dev->dev);
>> + if (r < 0) {
>> + dev_err(dev->dev, "pm_runtime_get_sync failed:%d\n", r);
>> + return r;
>> + }
> Smatch says:
>
> drivers/i2c/busses/i2c-omap.c:1021 omap_i2c_probe() warn: 'mem->start' was not released on error
>
> In fact, you are leaking quite more.
Ops will correct, thanks.
>
>> @@ -1103,12 +1111,17 @@ omap_i2c_remove(struct platform_device *pdev)
>> {
>> struct omap_i2c_dev *dev = platform_get_drvdata(pdev);
>> struct resource *mem;
>> + int ret;
>>
>> platform_set_drvdata(pdev, NULL);
>>
>> free_irq(dev->irq, dev);
>> i2c_del_adapter(&dev->adapter);
>> - pm_runtime_get_sync(&pdev->dev);
>> + ret = pm_runtime_get_sync(&pdev->dev);
>> + if (ret < 0) {
>> + dev_err(dev->dev, "pm_runtime_get_sync failed %d\n", ret);
>> + return ret;
>> + }
> I am no too familiar with runtime_pm. Is it really so bad to fail remove, when
> get_sync has an error? Why is it checked and e.g. pm_runtime_put later is not?
> Any pointers?
If the get_sync fails the clock were not enabled so checking to prevent
register access.
>
>> omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
>> pm_runtime_put(&pdev->dev);
>> pm_runtime_disable(&pdev->dev);
>> --
>> 1.7.5.4
>>
> Thanks,
>
> Wolfram
>
WARNING: multiple messages have this Message-ID (diff)
From: shubhrajyoti@ti.com (Shubhrajyoti)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv8 07/10] I2C: OMAP: Handle error check for pm runtime
Date: Mon, 23 Apr 2012 22:56:44 +0530 [thread overview]
Message-ID: <4F9590D4.7070304@ti.com> (raw)
In-Reply-To: <20120423162008.GB27321@pengutronix.de>
On Monday 23 April 2012 09:50 PM, Wolfram Sang wrote:
> On Thu, Apr 19, 2012 at 06:58:18PM +0530, Shubhrajyoti D wrote:
>> If PM runtime get_sync fails return with the error
>> so that no further reads/writes goes through the interface.
>> This will avoid possible abort. Add a error message in case
>> of failure with the cause of the failure.
> I don't think the error message is especially helpful. You also use different
> string (probably typo).
Will correct and resend
>
>> Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
>> ---
>> drivers/i2c/busses/i2c-omap.c | 19 ++++++++++++++++---
>> 1 files changed, 16 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
>> index 44e8cfa..d555dcd 100644
>> --- a/drivers/i2c/busses/i2c-omap.c
>> +++ b/drivers/i2c/busses/i2c-omap.c
>> @@ -585,7 +585,11 @@ omap_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
>> int i;
>> int r;
>>
>> - pm_runtime_get_sync(dev->dev);
>> + r = pm_runtime_get_sync(dev->dev);
>> + if (r < 0) {
>> + dev_err(dev->dev, "pm_runtime_get_sync failed %d\n", r);
>> + return r;
>> + }
>>
>> r = omap_i2c_wait_for_bb(dev);
>> if (r < 0)
>> @@ -1011,7 +1015,11 @@ omap_i2c_probe(struct platform_device *pdev)
>> dev->regs = (u8 *)reg_map_ip_v1;
>>
>> pm_runtime_enable(dev->dev);
>> - pm_runtime_get_sync(dev->dev);
>> + r = pm_runtime_get_sync(dev->dev);
>> + if (r < 0) {
>> + dev_err(dev->dev, "pm_runtime_get_sync failed:%d\n", r);
>> + return r;
>> + }
> Smatch says:
>
> drivers/i2c/busses/i2c-omap.c:1021 omap_i2c_probe() warn: 'mem->start' was not released on error
>
> In fact, you are leaking quite more.
Ops will correct, thanks.
>
>> @@ -1103,12 +1111,17 @@ omap_i2c_remove(struct platform_device *pdev)
>> {
>> struct omap_i2c_dev *dev = platform_get_drvdata(pdev);
>> struct resource *mem;
>> + int ret;
>>
>> platform_set_drvdata(pdev, NULL);
>>
>> free_irq(dev->irq, dev);
>> i2c_del_adapter(&dev->adapter);
>> - pm_runtime_get_sync(&pdev->dev);
>> + ret = pm_runtime_get_sync(&pdev->dev);
>> + if (ret < 0) {
>> + dev_err(dev->dev, "pm_runtime_get_sync failed %d\n", ret);
>> + return ret;
>> + }
> I am no too familiar with runtime_pm. Is it really so bad to fail remove, when
> get_sync has an error? Why is it checked and e.g. pm_runtime_put later is not?
> Any pointers?
If the get_sync fails the clock were not enabled so checking to prevent
register access.
>
>> omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
>> pm_runtime_put(&pdev->dev);
>> pm_runtime_disable(&pdev->dev);
>> --
>> 1.7.5.4
>>
> Thanks,
>
> Wolfram
>
next prev parent reply other threads:[~2012-04-23 17:26 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-19 13:28 [PATCHv8 00/10] I2C fixes Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
2012-04-19 13:28 ` [PATCHv8 01/10] I2C: OMAP: make omap_i2c_unidle/idle functions depend on CONFIG_PM_RUNTIME Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
[not found] ` <1334842101-20670-1-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
2012-04-19 13:28 ` [PATCHv8 02/10] I2C: OMAP: Fix the mismatch of pm_runtime enable and disable Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
2012-04-23 15:43 ` Wolfram Sang
2012-04-23 15:43 ` Wolfram Sang
2012-04-23 15:57 ` Datta, Shubhrajyoti
2012-04-23 15:57 ` Datta, Shubhrajyoti
2012-04-19 13:28 ` [PATCHv8 03/10] I2C: OMAP: Fix the interrupt clearing in OMAP4 Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
2012-04-19 13:28 ` [PATCHv8 04/10] I2C: OMAP: Fix the error handling Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
2012-04-23 17:10 ` Wolfram Sang
2012-04-23 17:10 ` Wolfram Sang
2012-04-19 13:28 ` [PATCHv8 06/10] I2C: OMAP: Fix the crash in i2c remove Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
[not found] ` <1334842101-20670-7-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
2012-04-23 16:49 ` Wolfram Sang
2012-04-23 16:49 ` Wolfram Sang
2012-04-24 18:14 ` Shubhrajyoti
2012-04-24 18:14 ` Shubhrajyoti
2012-04-24 18:18 ` Wolfram Sang
2012-04-24 18:18 ` Wolfram Sang
[not found] ` <20120424181806.GF9007-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-04-26 6:28 ` Shubhrajyoti
2012-04-26 6:28 ` Shubhrajyoti
2012-04-26 6:43 ` Shubhrajyoti
2012-04-26 6:43 ` Shubhrajyoti
2012-04-19 13:28 ` [PATCHv8 07/10] I2C: OMAP: Handle error check for pm runtime Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
[not found] ` <1334842101-20670-8-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
2012-04-23 16:20 ` Wolfram Sang
2012-04-23 16:20 ` Wolfram Sang
2012-04-23 17:26 ` Shubhrajyoti [this message]
2012-04-23 17:26 ` Shubhrajyoti
2012-04-19 13:28 ` [PATCHv8 05/10] I2C: OMAP: Don't check if wait_for_completion_timeout() returns less than zero Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
[not found] ` <1334842101-20670-6-git-send-email-shubhrajyoti-l0cyMroinI0@public.gmane.org>
2012-04-23 17:11 ` Wolfram Sang
2012-04-23 17:11 ` Wolfram Sang
2012-04-19 13:28 ` [PATCHv8 08/10] I2C: OMAP: fix missing handling of errata I2C_OMAP3_1P153 Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
2012-04-23 16:43 ` Wolfram Sang
2012-04-23 16:43 ` Wolfram Sang
2012-04-23 17:35 ` Shubhrajyoti
2012-04-23 17:35 ` Shubhrajyoti
2012-04-19 13:28 ` [PATCHv8 09/10] I2C: OMAP: Do not set the XUDF if the underflow is not reached Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
2012-04-23 16:42 ` Wolfram Sang
2012-04-23 16:42 ` Wolfram Sang
2012-04-23 17:29 ` Shubhrajyoti
2012-04-23 17:29 ` Shubhrajyoti
2012-04-19 13:28 ` [PATCHv8 10/10] I2C: OMAP: Rename the 1p153 to the erratum id i462 Shubhrajyoti D
2012-04-19 13:28 ` Shubhrajyoti D
2012-04-23 17:05 ` [PATCHv8 00/10] I2C fixes Wolfram Sang
2012-04-23 17:05 ` Wolfram Sang
[not found] ` <20120423170533.GH27321-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2012-04-23 17:41 ` Shubhrajyoti
2012-04-23 17:41 ` Shubhrajyoti
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=4F9590D4.7070304@ti.com \
--to=shubhrajyoti@ti.com \
--cc=ben-linux@fluff.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=tony@atomide.com \
--cc=w.sang@pengutronix.de \
/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.