From: Grygorii Strashko <grygorii.strashko@ti.com>
To: balbi@ti.com
Cc: Wolfram Sang <wsa@the-dreams.de>,
Tony Lindgren <tony@atomide.com>,
linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
linux-i2c@vger.kernel.org, Kevin Hilman <khilman@linaro.org>
Subject: Re: [PATCH 2/5] i2c: omap: add runtime check in isr to be sure that i2c is enabled
Date: Wed, 19 Jun 2013 21:42:25 +0300 [thread overview]
Message-ID: <51C1FB91.1000006@ti.com> (raw)
In-Reply-To: <20130607190206.GC15295@arwen.pp.htv.fi>
Hi Felipe,
On 06/07/2013 10:02 PM, Felipe Balbi wrote:
> Hi,
>
> On Fri, Jun 07, 2013 at 09:46:05PM +0300, Grygorii Strashko wrote:
>> Add runtime check at the beginning of omap_i2c_isr/omap_i2c_isr_thread
>> to be sure that i2c is enabled, before performing IRQ handling and accessing
>> I2C IP registers:
>> if (pm_runtime_suspended(dev->dev)) {
>> WARN_ONCE(true, "We should never be here!\n");
>> return IRQ_NONE;
>> }
>>
>> Produce warning in case if ISR called when i2c is disabled
>>
>> CC: Kevin Hilman <khilman@linaro.org>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>> drivers/i2c/busses/i2c-omap.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
>> index 97844ff..2dac598 100644
>> --- a/drivers/i2c/busses/i2c-omap.c
>> +++ b/drivers/i2c/busses/i2c-omap.c
>> @@ -885,6 +885,11 @@ omap_i2c_isr(int irq, void *dev_id)
>> u16 stat;
>>
>> spin_lock(&dev->lock);
>> + if (pm_runtime_suspended(dev->dev)) {
>> + WARN_ONCE(true, "We should never be here!\n");
>> + return IRQ_NONE;
>> + }
> returning IRQ_NONE is not what you want to do in this case. You want to
> setup a flag so that your runtime_resume() knows that there are pending
> events to be handled and you handle those in runtime_resume time.
I don't want to handle this IRQ - we should never be here.
Will be changed to IRQ_HANDLED.
>
> But to be frank, I don't see how this can trigger since we're calling
> pm_runtime_get_sync() from omap_i2c_xfer() which means by the time
> pm_runtime_get_sync() returns, assuming no errors, i2c module should be
> fully resumed and ready to go. Perhaps you have found a bug somewhere
> else ?
May be it's better to revert this patch:
e3a36b207f76364c281aeecaf14c1b22a7247278
i2c: omap: remove unnecessary pm_runtime_suspended check
which doesn't cover case when transfer is *finished*.
Please, see https://patchwork.kernel.org/patch/2689211/ and
cover-latter.
>
> Also, your 'We should never be here' message isn't helpfull at all.
>
>> @@ -905,6 +910,11 @@ omap_i2c_isr_thread(int this_irq, void *dev_id)
>> u16 stat;
>> int err = 0, count = 0;
>>
>> + if (pm_runtime_suspended(dev->dev)) {
>> + WARN_ONCE(true, "We should never be here!\n");
>> + return IRQ_NONE;
>> + }
> because of IRQF_ONESHOT I can't see how this would *ever* be a valid
> check.
>
Please, see https://patchwork.kernel.org/patch/2689211/ and
cover-latter.
Sorry, for delayed reply - I've had problems with my e-mail.
- grygorii
WARNING: multiple messages have this Message-ID (diff)
From: Grygorii Strashko <grygorii.strashko@ti.com>
To: <balbi@ti.com>
Cc: Wolfram Sang <wsa@the-dreams.de>,
Tony Lindgren <tony@atomide.com>, <linux-kernel@vger.kernel.org>,
<linux-omap@vger.kernel.org>, <linux-i2c@vger.kernel.org>,
Kevin Hilman <khilman@linaro.org>
Subject: Re: [PATCH 2/5] i2c: omap: add runtime check in isr to be sure that i2c is enabled
Date: Wed, 19 Jun 2013 21:42:25 +0300 [thread overview]
Message-ID: <51C1FB91.1000006@ti.com> (raw)
In-Reply-To: <20130607190206.GC15295@arwen.pp.htv.fi>
Hi Felipe,
On 06/07/2013 10:02 PM, Felipe Balbi wrote:
> Hi,
>
> On Fri, Jun 07, 2013 at 09:46:05PM +0300, Grygorii Strashko wrote:
>> Add runtime check at the beginning of omap_i2c_isr/omap_i2c_isr_thread
>> to be sure that i2c is enabled, before performing IRQ handling and accessing
>> I2C IP registers:
>> if (pm_runtime_suspended(dev->dev)) {
>> WARN_ONCE(true, "We should never be here!\n");
>> return IRQ_NONE;
>> }
>>
>> Produce warning in case if ISR called when i2c is disabled
>>
>> CC: Kevin Hilman <khilman@linaro.org>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>> ---
>> drivers/i2c/busses/i2c-omap.c | 10 ++++++++++
>> 1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
>> index 97844ff..2dac598 100644
>> --- a/drivers/i2c/busses/i2c-omap.c
>> +++ b/drivers/i2c/busses/i2c-omap.c
>> @@ -885,6 +885,11 @@ omap_i2c_isr(int irq, void *dev_id)
>> u16 stat;
>>
>> spin_lock(&dev->lock);
>> + if (pm_runtime_suspended(dev->dev)) {
>> + WARN_ONCE(true, "We should never be here!\n");
>> + return IRQ_NONE;
>> + }
> returning IRQ_NONE is not what you want to do in this case. You want to
> setup a flag so that your runtime_resume() knows that there are pending
> events to be handled and you handle those in runtime_resume time.
I don't want to handle this IRQ - we should never be here.
Will be changed to IRQ_HANDLED.
>
> But to be frank, I don't see how this can trigger since we're calling
> pm_runtime_get_sync() from omap_i2c_xfer() which means by the time
> pm_runtime_get_sync() returns, assuming no errors, i2c module should be
> fully resumed and ready to go. Perhaps you have found a bug somewhere
> else ?
May be it's better to revert this patch:
e3a36b207f76364c281aeecaf14c1b22a7247278
i2c: omap: remove unnecessary pm_runtime_suspended check
which doesn't cover case when transfer is *finished*.
Please, see https://patchwork.kernel.org/patch/2689211/ and
cover-latter.
>
> Also, your 'We should never be here' message isn't helpfull at all.
>
>> @@ -905,6 +910,11 @@ omap_i2c_isr_thread(int this_irq, void *dev_id)
>> u16 stat;
>> int err = 0, count = 0;
>>
>> + if (pm_runtime_suspended(dev->dev)) {
>> + WARN_ONCE(true, "We should never be here!\n");
>> + return IRQ_NONE;
>> + }
> because of IRQF_ONESHOT I can't see how this would *ever* be a valid
> check.
>
Please, see https://patchwork.kernel.org/patch/2689211/ and
cover-latter.
Sorry, for delayed reply - I've had problems with my e-mail.
- grygorii
next prev parent reply other threads:[~2013-06-19 18:42 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-07 18:46 [PATCH 0/5] v3.10-rc4: fix OMAP4 boot failure if CONFIG_SENSORS_LM75=y Grygorii Strashko
2013-06-07 18:46 ` Grygorii Strashko
2013-06-07 18:46 ` [PATCH 1/5] i2c: omap: fix spurious IRQs: disable/enable IRQ at INTC when idle Grygorii Strashko
2013-06-07 18:46 ` Grygorii Strashko
[not found] ` <1370630768-4077-2-git-send-email-grygorii.strashko-l0cyMroinI0@public.gmane.org>
2013-06-07 20:51 ` Kevin Hilman
2013-06-07 20:51 ` Kevin Hilman
2013-06-19 18:35 ` Grygorii Strashko
2013-06-19 18:35 ` Grygorii Strashko
[not found] ` <51C1F9FA.9000502-l0cyMroinI0@public.gmane.org>
2013-06-19 19:31 ` Felipe Balbi
2013-06-19 19:31 ` Felipe Balbi
[not found] ` <20130619193111.GD4779-S8G//mZuvNWo5Im9Ml3/Zg@public.gmane.org>
2013-06-19 20:01 ` Kevin Hilman
2013-06-19 20:01 ` Kevin Hilman
[not found] ` <878v257tuv.fsf-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2013-06-19 20:56 ` Felipe Balbi
2013-06-19 20:56 ` Felipe Balbi
2013-06-07 18:46 ` [PATCH 2/5] i2c: omap: add runtime check in isr to be sure that i2c is enabled Grygorii Strashko
2013-06-07 18:46 ` Grygorii Strashko
[not found] ` <1370630768-4077-3-git-send-email-grygorii.strashko-l0cyMroinI0@public.gmane.org>
2013-06-07 19:02 ` Felipe Balbi
2013-06-07 19:02 ` Felipe Balbi
2013-06-19 18:42 ` Grygorii Strashko [this message]
2013-06-19 18:42 ` Grygorii Strashko
2013-06-19 19:39 ` Felipe Balbi
2013-06-19 19:39 ` Felipe Balbi
2013-06-07 18:46 ` [PATCH 3/5] i2c: omap: handle all irqs befor unblocking omap_i2c_xfer_msg() Grygorii Strashko
2013-06-07 18:46 ` Grygorii Strashko
2013-06-07 19:05 ` Felipe Balbi
2013-06-07 19:05 ` Felipe Balbi
2013-06-19 18:43 ` Grygorii Strashko
2013-06-19 18:43 ` Grygorii Strashko
2013-06-19 19:44 ` Felipe Balbi
2013-06-19 19:44 ` Felipe Balbi
2013-06-07 18:46 ` [PATCH 4/5] i2c: omap: query STP always when NACK is received Grygorii Strashko
2013-06-07 18:46 ` Grygorii Strashko
[not found] ` <1370630768-4077-5-git-send-email-grygorii.strashko-l0cyMroinI0@public.gmane.org>
2013-06-07 19:07 ` Felipe Balbi
2013-06-07 19:07 ` Felipe Balbi
2013-06-07 18:46 ` [PATCH 5/5] i2c: omap: remove omap_i2c_isr() hw irq handler Grygorii Strashko
2013-06-07 18:46 ` Grygorii Strashko
[not found] ` <1370630768-4077-6-git-send-email-grygorii.strashko-l0cyMroinI0@public.gmane.org>
2013-06-07 19:07 ` Felipe Balbi
2013-06-07 19:07 ` Felipe Balbi
2013-06-19 18:43 ` Grygorii Strashko
2013-06-19 18:43 ` Grygorii Strashko
[not found] ` <51C1FBC5.1030109-l0cyMroinI0@public.gmane.org>
2013-06-19 19:44 ` Felipe Balbi
2013-06-19 19:44 ` Felipe Balbi
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=51C1FB91.1000006@ti.com \
--to=grygorii.strashko@ti.com \
--cc=balbi@ti.com \
--cc=khilman@linaro.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=tony@atomide.com \
--cc=wsa@the-dreams.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.