All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@deeprootsystems.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Linux PM list <linux-pm@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Jan-Matthias Braun <jan_braun@gmx.net>,
	Jiri Kosina <jkosina@suse.cz>,
	Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [Resend][PATCH] PM: Move disabling/enabling runtime PM to late suspend/early resume
Date: Fri, 21 Dec 2012 11:52:56 -0800	[thread overview]
Message-ID: <87d2y3dvxj.fsf@deeprootsystems.com> (raw)
In-Reply-To: <3307221.dy6xvn45xe@vostro.rjw.lan> (Rafael J. Wysocki's message of "Sat, 15 Dec 2012 01:25:58 +0100")

"Rafael J. Wysocki" <rjw@sisk.pl> writes:

> From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
>
> Currently, the PM core disables runtime PM for all devices right
> after executing subsystem/driver .suspend() callbacks for them
> and re-enables it right before executing subsystem/driver .resume()
> callbacks for them.  This may lead to problems when there are
> two devices such that the .suspend() callback executed for one of
> them depends on runtime PM working for the other.  In that case,
> if runtime PM has already been disabled for the second device,
> the first one's .suspend() won't work correctly (and analogously
> for resume).
>
> To make those issues go away, make the PM core disable runtime PM
> for devices right before executing subsystem/driver .suspend_late()
> callbacks for them and enable runtime PM for them right after
> executing subsystem/driver .resume_early() callbacks for them.  This
> way the potential conflitcs between .suspend_late()/.resume_early()
> and their runtime PM counterparts are still prevented from happening,
> but the subtle ordering issues related to disabling/enabling runtime
> PM for devices during system suspend/resume are much easier to avoid.
>
> Reported-and-tested-by: Jan-Matthias Braun <jan_braun@gmx.net>
> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Yes!  

Of course if there are dependencies between drivers late/early
callbacks, we'll still have the same problems, but those should be
*very* rare compared to the suspend/resume dependencies.  

I haven't been able to do any testing with this yet (I'm away from my
hardware for a bit), but I totally support this change.  

Reviewed-by: Kevin Hilman <khilman@deeprootsystems.com>

Thanks!

Kevin

  parent reply	other threads:[~2012-12-21 19:52 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-06 22:59 [PATCH] PM: Move disabling/enabling runtime PM to late suspend/early resume Rafael J. Wysocki
2012-12-15  0:25 ` [Resend][PATCH] " Rafael J. Wysocki
2012-12-15 21:16   ` Jiri Kosina
2012-12-16  1:30     ` Rafael J. Wysocki
2012-12-16 15:29       ` Alan Stern
2012-12-17 21:18         ` Ulf Hansson
2012-12-17 23:35           ` Rafael J. Wysocki
2012-12-21 19:52   ` Kevin Hilman [this message]
2012-12-21 22:09     ` Rafael J. Wysocki

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=87d2y3dvxj.fsf@deeprootsystems.com \
    --to=khilman@deeprootsystems.com \
    --cc=jan_braun@gmx.net \
    --cc=jkosina@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=stern@rowland.harvard.edu \
    /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.