linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] PM / runtime: Allow drivers to override runtime PM behaviour on sleep
@ 2019-11-28 16:03 Thierry Reding
  2019-11-28 16:03 ` [PATCH 1/2] " Thierry Reding
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Thierry Reding @ 2019-11-28 16:03 UTC (permalink / raw)
  To: Rafael J . Wysocki, Thierry Reding
  Cc: Len Brown, Pavel Machek, Greg Kroah-Hartman, Dmitry Osipenko,
	linux-pm, dri-devel, linux-tegra

From: Thierry Reding <treding@nvidia.com>

This is a result of looking into a more formal way of doing what was
proposed here:

	http://patchwork.ozlabs.org/patch/1145363/

The Tegra DRM driver is written such that runtime PM controls all
aspects of bringing up and shutting down the hardware associated with a
display pipeline. This works very nicely with the DRM/KMS atomic mode-
setting framework that has very rigorous call sequences. There are also
suspend/resume helpers for system sleep that are built on top of these
generic helpers and that cause the same code sequences to be run as if
users had simply chosen to disable all display pipelines at normal
runtime.

The current behaviour of the PM core to disallow runtime suspend/resume
during system sleep gets in the way of this because the devices do not
in fact runtime suspend/resume during that time. Most of the time this
causes display outputs to malfunction upon resume.

Now, there are good reasons for preventing runtime suspend during system
sleep, as given in commit eea3fc0357eb ("PCI / PM: Detect early wakeup
in pci_pm_prepare()") that originally introduced this mechanism. There
can, however, also be cases, like the one described above, where it is
safe to allow this. Add a flag and a set of helpers to set or clear that
new flag so that drivers that know it will be safe to runtime suspend a
device at system sleep time can mark the device as such.

If a device has the flag set, the PM core will no longer take a runtime
PM reference for it, thus allowing the device to runtime suspend at the
expected time.

Thierry

Thierry Reding (2):
  PM / runtime: Allow drivers to override runtime PM behaviour on sleep
  drm/tegra: Allow runtime suspend on system sleep

 drivers/base/power/main.c    |  6 ++++--
 drivers/base/power/runtime.c | 16 ++++++++++++++++
 drivers/gpu/drm/tegra/dc.c   |  1 +
 drivers/gpu/drm/tegra/dsi.c  |  1 +
 drivers/gpu/drm/tegra/hdmi.c |  1 +
 drivers/gpu/drm/tegra/hub.c  |  1 +
 drivers/gpu/drm/tegra/sor.c  |  1 +
 include/linux/pm.h           |  1 +
 include/linux/pm_runtime.h   |  2 ++
 9 files changed, 28 insertions(+), 2 deletions(-)

-- 
2.23.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2019-12-04  0:02 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-28 16:03 [PATCH 0/2] PM / runtime: Allow drivers to override runtime PM behaviour on sleep Thierry Reding
2019-11-28 16:03 ` [PATCH 1/2] " Thierry Reding
2019-11-28 16:14   ` Rafael J. Wysocki
2019-11-28 16:50     ` Thierry Reding
2019-11-28 22:03       ` Rafael J. Wysocki
2019-11-28 22:20         ` Rafael J. Wysocki
2019-11-29 10:08           ` Thierry Reding
2019-11-29 10:22             ` Rafael J. Wysocki
2019-11-29 12:07               ` Thierry Reding
2019-11-29 20:27                 ` Daniel Vetter
2019-12-04  0:02                 ` Rafael J. Wysocki
2019-11-29  9:33         ` Thierry Reding
2019-11-29 10:09           ` Rafael J. Wysocki
2019-11-29 11:44             ` Thierry Reding
2019-11-28 16:03 ` [PATCH 2/2] drm/tegra: Allow runtime suspend on system sleep Thierry Reding
2019-11-28 16:47 ` [PATCH 0/2] PM / runtime: Allow drivers to override runtime PM behaviour on sleep Daniel Vetter
2019-11-28 17:04   ` Thierry Reding

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).