diff options
| author | Dave Airlie <airlied@redhat.com> | 2022-07-13 10:54:56 +1000 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2022-07-13 10:54:56 +1000 |
| commit | e23a5e14aa278858c2e3d81ec34e83aa9a4177c5 (patch) | |
| tree | 8b662fca8f0643d2b7ef0836da91835408075208 /drivers/base/core.c | |
| parent | 5e4cb0afe21e4e744ed808de1169a62ab35a57f5 (diff) | |
| parent | 32346491ddf24599decca06190ebca03ff9de7f8 (diff) | |
Backmerge tag 'v5.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next
Backmerge in rc6 so I can merge msm next easier.
Linux 5.19-rc6
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/base/core.c')
| -rw-r--r-- | drivers/base/core.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c index 7cd789c4985d..460d6f163e41 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -486,7 +486,18 @@ static void device_link_release_fn(struct work_struct *work) /* Ensure that all references to the link object have been dropped. */ device_link_synchronize_removal(); - pm_runtime_release_supplier(link, true); + pm_runtime_release_supplier(link); + /* + * If supplier_preactivated is set, the link has been dropped between + * the pm_runtime_get_suppliers() and pm_runtime_put_suppliers() calls + * in __driver_probe_device(). In that case, drop the supplier's + * PM-runtime usage counter to remove the reference taken by + * pm_runtime_get_suppliers(). + */ + if (link->supplier_preactivated) + pm_runtime_put_noidle(link->supplier); + + pm_request_idle(link->supplier); put_device(link->consumer); put_device(link->supplier); |