Messages in this thread Patch in this message | | | Date | Thu, 14 Feb 2019 11:07:41 -0800 | From | Matthias Kaehlcke <> | Subject | Re: [PATCH 4/4] PM / devfreq: Handle monitor start/stop in the devfreq core |
| |
Hi Lukasz,
On Thu, Feb 14, 2019 at 07:01:36PM +0100, Lukasz Luba wrote: > Hi Matthias, > > I have compiled and run your changes on Odroid xu3 and v5.0-rc6. > There are kernel warnings because of mutex not held in function > devfreq_monitor_[start|stop]() in use cases: > 1) a few times during registration of new devices devfreq_add_device() > 2) poking the device from sysfs
Thanks testing!
I messed up carrying over changes from my v4.19 device kernel to the tree used for upstreaming :(
Do you still see warnings with the below patch?
Thanks
Matthias
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index a42c37543c190..866fe711b43ca 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -440,7 +440,6 @@ static void devfreq_monitor_stop(struct devfreq *devfreq)
mutex_lock(&devfreq->lock); devfreq->monitor_state = DEVFREQ_MONITOR_STOPPED; - mutex_unlock(&devfreq->lock); }
/** @@ -596,7 +595,9 @@ static int governor_start(struct devfreq *devfreq) return err; }
+ mutex_lock(&devfreq->lock); devfreq_monitor_start(devfreq); + mutex_unlock(&devfreq->lock);
return 0; } @@ -614,7 +615,9 @@ static int governor_stop(struct devfreq *devfreq) "mutex must *not* be held by the caller\n")) return -EINVAL;
+ mutex_lock(&devfreq->lock); devfreq_monitor_stop(devfreq); + mutex_unlock(&devfreq->lock);
err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_STOP, NULL); if (err) {
| |