On 27/05/2020 11:58, Lukasz Luba wrote: > Add support for other devices than CPUs. The registration function > does not require a valid cpumask pointer and is ready to handle new > devices. Some of the internal structures has been reorganized in order to > keep consistent view (like removing per_cpu pd pointers). > > Signed-off-by: Lukasz Luba <lukasz.luba@xxxxxxx> > --- [ ... ] > } > EXPORT_SYMBOL_GPL(em_register_perf_domain); > + > +/** > + * em_dev_unregister_perf_domain() - Unregister Energy Model (EM) for a device > + * @dev : Device for which the EM is registered > + * > + * Try to unregister the EM for the specified device (but not a CPU). > + */ > +void em_dev_unregister_perf_domain(struct device *dev) > +{ > + if (IS_ERR_OR_NULL(dev) || !dev->em_pd) > + return; > + > + if (_is_cpu_device(dev)) > + return; > + > + mutex_lock(&em_pd_mutex); Is the mutex really needed? If this function is called that means there is no more user of the em_pd, no? > + em_debug_remove_pd(dev); > + > + kfree(dev->em_pd->table); > + kfree(dev->em_pd); > + dev->em_pd = NULL; > + mutex_unlock(&em_pd_mutex); > +} > +EXPORT_SYMBOL_GPL(em_dev_unregister_perf_domain); > -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog