Messages in this thread | | | Subject | Re: [PATCH v6 04/10] PM / EM: add support for other devices than CPUs in Energy Model | From | Lukasz Luba <> | Date | Thu, 23 Apr 2020 17:57:45 +0100 |
| |
On 4/23/20 4:12 PM, Daniel Lezcano wrote: > On Fri, Apr 10, 2020 at 09:42:04AM +0100, Lukasz Luba wrote: >> Add support for other devices that 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). To track usage >> of the Energy Model structures, they are protected with kref. > > Why not add the energy model structure in the struct device directly?
Do you mean this structure? https://elixir.bootlin.com/linux/latest/source/include/linux/device.h#L537
and to put something like: struct device { ... struct dev_pm_domain *pm_domain; #ifdef CONFIG_ENERGY_MODEL struct em_perf_domain *em_pd; #endif ... };
> > For instance for the em_cpu_get() function, the cpu id allows to retrieve the > cpu device and then from there, the energy model instead of browsing another > list. The em_device life cycle will be tied to the struct device.
That would be perfect.
> > Then when the struct device and the em_device are connected, add the debugfs > with a struct device list for those which are energy aware, so you end up with > a structure: > > struct em_device { > struct device *dev; > struct list_head em_dev_list; > }; > > (a global single dentry for debugfs to do a recursive delete is enough). > > Locks when inspecting and add/removal called from the struct device release > function. So no need of an extra refcounting. > > Does it make sense? >
Indeed it looks much cleaner/simpler.
I will try to address this idea and get rid of refcounting.
This should be doable in this patch (4/10). In the v7 I will keep your ACKs for other patches that you have already commented.
Thank you for your suggestions and review.
Regards, Lukasz
| |