public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: David Brownell <david-b@pacbell.net>
To: Oliver Neukum <oliver@neukum.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Pavel Machek <pavel@suse.cz>,
	Linux Kernel list <linux-kernel@vger.kernel.org>,
	Patrick Mochel <mochel@digitalimplant.org>
Subject: Re: Solving suspend-level confusion
Date: Sat, 31 Jul 2004 10:51:58 -0700	[thread overview]
Message-ID: <200407311051.58207.david-b@pacbell.net> (raw)
In-Reply-To: <200407311901.17390.oliver@neukum.org>

On Saturday 31 July 2004 10:01, Oliver Neukum wrote:
> 
> > So suspend-to-RAM more or less matches PCI D3hot, and
> > suspend-to-DISK matches PCI D3cold.  If those power states
> > were passed to the device suspend(), the disk driver could act
> > appropriately.  In my observation, D3cold was never passed
> > down, it was always D3hot.
> 
> Maybe a better approach would be to describe the required features to
> the drivers rather than encoding them in a single integer. Rather
> like passing a request that states "lowest power level with device state
> retained, must not do DMA, enable remote wake up"

For PCI devices this is mostly defined by the parameter that says
what PCI power state to enter.  Even still-common "legacy" PCI
devices can basically fit into those definitions (though they may
not handle "low power" states other than "off").

Enabling remote wakeup is somewhat orthogonal.  Network
drivers have separate Wake-On-LAN calls, but that stuff should
arguably be part of the driver model PM framework.  Much of
the Linux PM work seems to be limited to "suspend when laptop
lid shuts, resume when it opens" ... which is a necessary start (one
that doesn't work universally yet either!) but not sufficient.


> [..]
> > Though the PM core doesn't cooperate at all there.  Neither the
> > suspend nor the resume codepaths cope well with disconnect
> > (and hence device removal), the PM core self-deadlocks since
> > suspend/resume outcalls are done while holding the semaphore
> > that device_pm_remove() needs, ugh.
> 
> Shouldn't we deal with this like a failed resume?

That was the first place I kept running into the deadlocks,
and I had to rewrite chunks of the OHCI driver to avoid
them.  The problem is that PM core uses a semaphore to
protect list membership, rather than a spinlock, and
that the semaphore is also trying to protect against more
than one thing at a a time.

- Dave


  reply	other threads:[~2004-07-31 17:55 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-07-30 16:44 Solving suspend-level confusion Pavel Machek
2004-07-30 22:39 ` Benjamin Herrenschmidt
2004-07-30 23:06   ` Pavel Machek
2004-07-31  4:02 ` David Brownell
2004-07-31  4:36   ` Pavel Machek
2004-07-31  5:49   ` Benjamin Herrenschmidt
2004-07-31 14:23     ` David Brownell
2004-07-31 17:01       ` Oliver Neukum
2004-07-31 17:51         ` David Brownell [this message]
2004-08-01  0:41         ` David Brownell
2004-08-01  1:34           ` Benjamin Herrenschmidt
2004-08-02 16:38             ` David Brownell
2004-08-03  0:38               ` Benjamin Herrenschmidt
2004-08-04  2:28                 ` David Brownell
2004-08-04  2:26                   ` Nigel Cunningham
2004-08-04  2:53                     ` Benjamin Herrenschmidt
2004-08-04  2:52                       ` Nigel Cunningham
2004-08-04  4:14                         ` Benjamin Herrenschmidt
2004-08-04  4:25                           ` Nigel Cunningham
2004-08-04  4:52                             ` Benjamin Herrenschmidt
2004-08-04  4:54                               ` Nigel Cunningham
2004-08-04  5:03                                 ` Benjamin Herrenschmidt
2004-08-04  5:05                                   ` Nigel Cunningham
2004-08-05 10:05                                   ` Nigel Cunningham
2004-08-05 22:31                                   ` Nigel Cunningham
2004-08-06  0:39                                     ` Benjamin Herrenschmidt
2004-08-06 21:30                                     ` Pavel Machek
2004-08-06 21:29                           ` Pavel Machek
2004-08-06 22:27                             ` Benjamin Herrenschmidt
2004-08-06 22:37                               ` Pavel Machek
2004-08-06 21:26                         ` Pavel Machek
2004-08-05  1:29                     ` David Brownell
2004-08-05 10:19                       ` Nigel Cunningham
2004-08-06  0:32                         ` David Brownell
     [not found]                           ` <1091772799.2532.50.camel@laptop.cunninghams>
2004-08-07 22:24                             ` David Brownell
2004-08-04  2:56                   ` Benjamin Herrenschmidt
2004-08-04  3:30                     ` David Brownell
2004-08-04  4:19                       ` Benjamin Herrenschmidt
2004-08-04  4:47                       ` What PM should be and do (Was Re: Solving suspend-level confusion) Nigel Cunningham
2004-08-04  4:53                         ` Benjamin Herrenschmidt
2004-08-04  4:59                           ` Nigel Cunningham
2004-08-08 16:54                             ` Pavel Machek
2004-08-08 21:55                               ` Nigel Cunningham
2004-08-09  8:42                                 ` Pavel Machek
2004-08-05 18:19                         ` Greg KH
2004-08-05 22:14                           ` Nigel Cunningham
2004-08-07  0:08                             `  Éric Brunet
2004-08-08 19:48                               ` Pavel Machek
2004-08-11 21:23                             ` Greg KH
2004-08-08  0:54                         ` David Brownell
2004-08-06 21:21               ` Solving suspend-level confusion Pavel Machek
2004-07-31 21:09       ` Benjamin Herrenschmidt
2004-08-02 16:40         ` David Brownell
2004-08-03  0:50           ` Benjamin Herrenschmidt
2004-08-07 23:30             ` David Brownell
2004-08-06 21:10           ` Pavel Machek
2004-08-07 23:23             ` David Brownell
2004-08-08 17:16               ` Pavel Machek
2004-08-06 20:04       ` Pavel Machek
2004-08-07 22:14         ` David Brownell
2004-08-07 23:53           ` Benjamin Herrenschmidt

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=200407311051.58207.david-b@pacbell.net \
    --to=david-b@pacbell.net \
    --cc=benh@kernel.crashing.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mochel@digitalimplant.org \
    --cc=oliver@neukum.org \
    --cc=pavel@suse.cz \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox