linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] PM: runtime: Update behaviour for no callbacks
@ 2021-06-08  9:02 Ulf Hansson
  2021-06-08  9:02 ` [PATCH v2 1/3] PM: runtime: Improve path in rpm_idle() when no callback Ulf Hansson
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: Ulf Hansson @ 2021-06-08  9:02 UTC (permalink / raw)
  To: Rafael J . Wysocki, linux-pm
  Cc: Ulf Hansson, Saravana Kannan, Alan Stern, Adrian Hunter,
	Tony Lindgren, Kevin Hilman, Geert Uytterhoeven,
	linux-arm-kernel, linux-kernel

While reviewing a patch on the mmc-list, I ended up inspecting the behaviour of
how we deal with the no callback case for runtime PM.

A couple of observations:

*) When pm_runtime_no_callbacks() have been called, it allows the PM core to
takes a quicker path, but at the same time, consumer/supplier device links are
being skipped in rpm_resume|suspend().

**) Calling pm_runtime_no_callbacks() to avoid boiler plate code (assigning
empty functions to ->runtime_suspend|resume()), doesn't work if there could be
consumer/supplier device link being used or a platform dependent PM domain that
could get attached to the device.

Therefore, this series suggests to change the behaviour in the PM core, to
allow the ->runtime_suspend|resume() callbacks to be unassigned. This is already
supported for ->runtime_idle() callbacks, so it would also move things into a
more consistent behaviour.

I have looked at various error paths, in the kernel of callers of
pm_runtime_get_sync(). I couldn't find anyone that made sense, that looked for
the special error code, -ENOSYS, which is the error code getting returned when a
callback is missing. Whether that is sufficient proof that these changes are
100% safe, I can't guarantee, but I think it would be worth a try as the
benefits of avoiding boilerplate code and the corresponding additional code
paths are quite nice, if you ask me.

Kind regards
Ulf Hansson


Ulf Hansson (3):
  PM: runtime: Improve path in rpm_idle() when no callback
  PM: runtime: Allow unassigned ->runtime_suspend|resume callbacks
  PM: runtime: Clarify documentation when callbacks are unassigned

 Documentation/power/runtime_pm.rst |  8 ++++++++
 drivers/base/power/runtime.c       | 18 ++++++++----------
 2 files changed, 16 insertions(+), 10 deletions(-)

-- 
2.25.1


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

end of thread, other threads:[~2021-06-09  9:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-08  9:02 [PATCH v2 0/3] PM: runtime: Update behaviour for no callbacks Ulf Hansson
2021-06-08  9:02 ` [PATCH v2 1/3] PM: runtime: Improve path in rpm_idle() when no callback Ulf Hansson
2021-06-08  9:02 ` [PATCH v2 2/3] PM: runtime: Allow unassigned ->runtime_suspend|resume callbacks Ulf Hansson
2021-06-08  9:02 ` [PATCH v2 3/3] PM: runtime: Clarify documentation when callbacks are unassigned Ulf Hansson
2021-06-08 14:23   ` Alan Stern
2021-06-08 14:30     ` Ulf Hansson
2021-06-08 14:49       ` Alan Stern
2021-06-09  9:45         ` Ulf Hansson
2021-06-08 14:24 ` [PATCH v2 0/3] PM: runtime: Update behaviour for no callbacks Alan Stern

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).