diff options
author | Jonathan Corbet <corbet@lwn.net> | 2018-07-02 11:14:50 -0600 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2018-07-02 11:14:50 -0600 |
commit | 5f6654094ff35a7a92eb76667788ef633595e4ea (patch) | |
tree | 8404c5fb245cddbc6877b97a9bf53139c95da852 /drivers/base/core.c | |
parent | 5105730fbf6789ff9e20837bdefe32e8ba133595 (diff) | |
parent | 021c91791a5e7e85c567452f1be3e4c2c6cb6063 (diff) | |
download | kernel_replicant_linux-5f6654094ff35a7a92eb76667788ef633595e4ea.tar.gz kernel_replicant_linux-5f6654094ff35a7a92eb76667788ef633595e4ea.tar.bz2 kernel_replicant_linux-5f6654094ff35a7a92eb76667788ef633595e4ea.zip |
Merge tag 'v4.18-rc3' into docs-next
-rc1 broke the docs build due to changes in the e100/e1000 drivers; -rc3
got the fixes via the networking tree. Pull in -rc3 so that the docs tree
can actually build the docs again.
Diffstat (limited to 'drivers/base/core.c')
-rw-r--r-- | drivers/base/core.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index 36622b52e419..df3e1a44707a 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -236,6 +236,13 @@ struct device_link *device_link_add(struct device *consumer, link->rpm_active = true; } pm_runtime_new_link(consumer); + /* + * If the link is being added by the consumer driver at probe + * time, balance the decrementation of the supplier's runtime PM + * usage counter after consumer probe in driver_probe_device(). + */ + if (consumer->links.status == DL_DEV_PROBING) + pm_runtime_get_noresume(supplier); } get_device(supplier); link->supplier = supplier; @@ -255,12 +262,12 @@ struct device_link *device_link_add(struct device *consumer, switch (consumer->links.status) { case DL_DEV_PROBING: /* - * Balance the decrementation of the supplier's - * runtime PM usage counter after consumer probe - * in driver_probe_device(). + * Some callers expect the link creation during + * consumer driver probe to resume the supplier + * even without DL_FLAG_RPM_ACTIVE. */ if (flags & DL_FLAG_PM_RUNTIME) - pm_runtime_get_sync(supplier); + pm_runtime_resume(supplier); link->status = DL_STATE_CONSUMER_PROBE; break; |