All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gururaja Hebbar <gururaja.hebbar@ti.com>
To: joelf@ti.com, Vaibhav Bedia <vaibhav.bedia@gmail.com>
Cc: Nishanth Menon <nm@ti.com>,
	balajitk@ti.com, s.neumann@raumfeld.com,
	Sekhar Nori <nsekhar@ti.com>, Daniel Mack <zonque@gmail.com>,
	Russ Dill <Russ.Dill@ti.com>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	Linux ARM Kernel List <linux-arm-kernel@lists.infradead.org>,
	Matt Porter <matt@ohporter.com>
Subject: Re: [PATCH v4] ARM: omap: edma: add suspend suspend/resume hooks
Date: Thu, 7 Nov 2013 19:00:11 +0530	[thread overview]
Message-ID: <527B95E3.9060802@ti.com> (raw)
In-Reply-To: <527A7E20.4040107@ti.com>

On Wednesday 06 November 2013 11:06 PM, Joel Fernandes wrote:
> Hi Vaibhav,
> 
> On 10/31/2013 05:25 PM, Vaibhav Bedia wrote:
>> Hi Daniel,
>>
>> On Wed, Oct 30, 2013 at 4:21 PM, Daniel Mack <zonque@gmail.com> wrote:
>> [...]
>>> +
>>> +static SIMPLE_DEV_PM_OPS(edma_pm_ops, edma_pm_suspend, edma_pm_resume);
>>> +
>>>  static struct platform_driver edma_driver = {
>>>         .driver = {
>>>                 .name   = "edma",
>>> +               .pm     = &edma_pm_ops,
>>>                 .of_match_table = edma_of_ids,
>>>         },
>>
>> A while back we discovered a nasty race condition here that had us move the EDMA
>> PM callbacks to the noirq phase. IIRC the MMC driver was resuming
>> before the EDMA
>> driver had a chance to run and that was leading to a deadlock. I am
>> not sure how to force
>> this scenario but i do remember spending time debugging this on a
>> random codebase.
>> Maybe some else has some better ideas on how to force this race condition...
> 
> I think you're talking about the patch at [1] which is not upstream. A quick
> question with my limited knowledge of suspend/resume- How can there be pending
> I/O operations between suspend/resume cycles? 

AFAIK, MMC framework started talking to cards immediately after resume.
Due to race condition, EDMA resume callback had not yet completed and
HSMMC driver had initiated a DMA operation. This resulted in Deadlock.

regards
Gururaja

> The sync is done before suspend,
> so I don't understand how one is receiving a response from the card after resume
> before EDMA can resume? I'd imagine that until all devices are resumed, there
> will be no I/O operation issued. Let me know your thoughts.
> 
> thanks,
> 
> -Joel
> 
> [1]
> https://www.gitorious.org/x0148406-public/linux-kernel/commit/b81bf04091986fa3893f31955564594567be3b61
> 

WARNING: multiple messages have this Message-ID (diff)
From: gururaja.hebbar@ti.com (Gururaja Hebbar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4] ARM: omap: edma: add suspend suspend/resume hooks
Date: Thu, 7 Nov 2013 19:00:11 +0530	[thread overview]
Message-ID: <527B95E3.9060802@ti.com> (raw)
In-Reply-To: <527A7E20.4040107@ti.com>

On Wednesday 06 November 2013 11:06 PM, Joel Fernandes wrote:
> Hi Vaibhav,
> 
> On 10/31/2013 05:25 PM, Vaibhav Bedia wrote:
>> Hi Daniel,
>>
>> On Wed, Oct 30, 2013 at 4:21 PM, Daniel Mack <zonque@gmail.com> wrote:
>> [...]
>>> +
>>> +static SIMPLE_DEV_PM_OPS(edma_pm_ops, edma_pm_suspend, edma_pm_resume);
>>> +
>>>  static struct platform_driver edma_driver = {
>>>         .driver = {
>>>                 .name   = "edma",
>>> +               .pm     = &edma_pm_ops,
>>>                 .of_match_table = edma_of_ids,
>>>         },
>>
>> A while back we discovered a nasty race condition here that had us move the EDMA
>> PM callbacks to the noirq phase. IIRC the MMC driver was resuming
>> before the EDMA
>> driver had a chance to run and that was leading to a deadlock. I am
>> not sure how to force
>> this scenario but i do remember spending time debugging this on a
>> random codebase.
>> Maybe some else has some better ideas on how to force this race condition...
> 
> I think you're talking about the patch at [1] which is not upstream. A quick
> question with my limited knowledge of suspend/resume- How can there be pending
> I/O operations between suspend/resume cycles? 

AFAIK, MMC framework started talking to cards immediately after resume.
Due to race condition, EDMA resume callback had not yet completed and
HSMMC driver had initiated a DMA operation. This resulted in Deadlock.

regards
Gururaja

> The sync is done before suspend,
> so I don't understand how one is receiving a response from the card after resume
> before EDMA can resume? I'd imagine that until all devices are resumed, there
> will be no I/O operation issued. Let me know your thoughts.
> 
> thanks,
> 
> -Joel
> 
> [1]
> https://www.gitorious.org/x0148406-public/linux-kernel/commit/b81bf04091986fa3893f31955564594567be3b61
> 

  reply	other threads:[~2013-11-07 13:30 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-30 20:21 [PATCH v4] ARM: omap: edma: add suspend suspend/resume hooks Daniel Mack
2013-10-30 20:21 ` Daniel Mack
2013-10-31 22:25 ` Vaibhav Bedia
2013-10-31 22:25   ` Vaibhav Bedia
2013-11-06 17:36   ` Joel Fernandes
2013-11-06 17:36     ` Joel Fernandes
2013-11-07 13:30     ` Gururaja Hebbar [this message]
2013-11-07 13:30       ` Gururaja Hebbar
2013-11-07 13:32       ` Daniel Mack
2013-11-07 13:32         ` Daniel Mack
2013-11-07 15:18         ` Nishanth Menon
2013-11-07 15:18           ` Nishanth Menon
2013-11-07 15:36           ` Daniel Mack
2013-11-07 15:36             ` Daniel Mack
2013-11-07 15:48             ` Nishanth Menon
2013-11-07 15:48               ` Nishanth Menon
2013-11-07 20:42               ` Vaibhav Bedia
2013-11-07 20:42                 ` Vaibhav Bedia
2013-11-15 14:39                 ` Nishanth Menon
2013-11-15 14:39                   ` Nishanth Menon
2013-11-17 22:09                   ` Daniel Mack
2013-11-17 22:09                     ` Daniel Mack
2013-11-07 20:34     ` Vaibhav Bedia
2013-11-07 20:34       ` Vaibhav Bedia
2013-11-07 15:34 ` Nishanth Menon
2013-11-07 15:34   ` Nishanth Menon
2013-11-07 16:27   ` Grygorii Strashko
2013-11-07 16:27     ` Grygorii Strashko
2013-11-07 20:46     ` Vaibhav Bedia
2013-11-07 20:46       ` Vaibhav Bedia
2013-11-07 16:34 ` Joel Fernandes
2013-11-07 16:34   ` Joel Fernandes
2013-11-07 16:49   ` Joel Fernandes
2013-11-07 16:49     ` Joel Fernandes
2013-11-07 17:37   ` Daniel Mack
2013-11-07 17:37     ` Daniel Mack
2013-11-07 21:39     ` Joel Fernandes
2013-11-07 21:39       ` Joel Fernandes
2013-11-08  4:07     ` Gururaja Hebbar
2013-11-08  4:07       ` Gururaja Hebbar
2013-11-08  7:51       ` Daniel Mack
2013-11-08  7:51         ` Daniel Mack

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=527B95E3.9060802@ti.com \
    --to=gururaja.hebbar@ti.com \
    --cc=Russ.Dill@ti.com \
    --cc=balajitk@ti.com \
    --cc=joelf@ti.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=matt@ohporter.com \
    --cc=nm@ti.com \
    --cc=nsekhar@ti.com \
    --cc=s.neumann@raumfeld.com \
    --cc=vaibhav.bedia@gmail.com \
    --cc=zonque@gmail.com \
    /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.