All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Linux PM <linux-pm@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Lukas Wunner <lukas@wunner.de>,
	Saravana Kannan <saravanak@google.com>,
	Xiang Chen <chenxiang66@hisilicon.com>
Subject: [PATCH 0/3] PM: runtime: Fixes related to device links management
Date: Wed, 21 Oct 2020 21:10:08 +0200	[thread overview]
Message-ID: <6543936.FbWAdBN1tG@kreacher> (raw)

Hi Greg & all,

Commit d12544fb2aa9 ("PM: runtime: Remove link state checks in
rpm_get/put_supplier()") merged recently introduced a weakness
in the handling of device links in the runtime PM framework that
may be confusing and even harmful.

Namely, the checks removed by that commit prevented PM-runtime from
getting or dropping references to the supplier device whose driver
was going away via its links to consumers, which specifically allowed
the pm_runtime_clean_up_links() called from __device_release_driver()
to run without interfering with runtime suspend/resume of consumer
devices (which still might happen even though the drivers had been
unbound from them by that time).

After the above commit, calling pm_runtime_clean_up_links() from
__device_release_driver() makes a little sense and it may be interfering
destructively with regular PM-runtime suspend/resume control flows, so
it needs to be either fixed or dropped altogether.  I prefer the latter,
because among other things this removes an arbitrary difference in the
handling of managed device links with respect to the stateless ones,
so patch [2/3] is doing just that.

However, in some rare cases pm_runtime_clean_up_links() may help to clean
up leftover PM-runtime references, so if that function goes away, they
need to be cleaned up elsewhere.  That's why patch [1/3] modifies
__device_link_del() to drop them upon device link removal (which also
needs to be done for stateless device links and that's why I'm regarding
this patch as a fix).

Finally, to avoid pointless overhead related to suspending and resuming
the target device for multiple times in a row in __device_release_driver(),
it is better to resume it upfront before checking its links to consumers,
which is done by patch [3/3].

While this series touches the driver core, it really is mostly related to
runtime PM, so I can apply it if that's OK.

Thanks!




             reply	other threads:[~2020-10-21 19:14 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-21 19:10 Rafael J. Wysocki [this message]
2020-10-21 19:12 ` [PATCH 1/3] PM: runtime: Drop runtime PM references to supplier on link removal Rafael J. Wysocki
2020-10-21 19:13 ` [PATCH 2/3] PM: runtime: Drop pm_runtime_clean_up_links() Rafael J. Wysocki
2020-10-21 19:14 ` [PATCH 3/3] PM: runtime: Resume the device earlier in __device_release_driver() Rafael J. Wysocki
2020-10-22 13:40   ` chenxiang (M)
2020-10-22 14:16     ` Rafael J. Wysocki
2020-10-22 15:38   ` [PATCH update " Rafael J. Wysocki
     [not found] ` <7ebacb82-dc0c-3938-660d-52810607ac00@hisilicon.com>
2020-10-23 15:06   ` [PATCH 0/3] PM: runtime: Fixes related to device links management Rafael J. Wysocki
2020-10-30 16:38 ` Rafael J. Wysocki
2020-11-01  9:36 ` Greg Kroah-Hartman

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=6543936.FbWAdBN1tG@kreacher \
    --to=rjw@rjwysocki.net \
    --cc=chenxiang66@hisilicon.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=saravanak@google.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.