Messages in this thread | | | From | "Rafael J. Wysocki" <> | Subject | Re: [PATCH] PM / runtime: Drop usage count for suppliers at device link removal | Date | Tue, 29 May 2018 10:40:51 +0200 |
| |
On Sunday, May 27, 2018 12:18:05 PM CEST Rafael J. Wysocki wrote: > On Thu, May 24, 2018 at 10:33 AM, Ulf Hansson <ulf.hansson@linaro.org> wrote: > > In the case consumer device is runtime resumed, while the link to the > > supplier is removed, the earlier call to pm_runtime_get_sync() made from > > rpm_get_suppliers() does not get properly balanced with a corresponding > > call to pm_runtime_put(). This leads to that suppliers remains to be > > runtime resumed forever, while they don't need to. > > > > Let's fix the behaviour by calling rpm_put_suppliers() when dropping a > > device link. Not that, since rpm_put_suppliers() checks the > > link->rpm_active flag, we can correctly avoid to call pm_runtime_put() in > > cases when we shouldn't. > > > > Reported-by: Todor Tomov <todor.tomov@linaro.org> > > Fixes: 21d5c57b3726 ("PM / runtime: Use device links") > > Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> > > --- > > > > Rafael, I am not sure if this is safe from locking point of view. The device > > link write lock has been taken when pm_runtime_drop_link() is called, hence I > > assume calling rpm_put_suppliers() should be fine!? If not, can you please > > advise how to change? > > Holding the lock should be sufficient for the list to be stable, so > AFAICS it is OK.
So the patch has been applied, thanks!
| |