Re: [PATCH v3 1/3] PM: domains: Make set_performance_state() callback optional
From: Viresh Kumar <viresh.kumar@linaro.org>
Date: 2021-01-19 03:49:32
Also in:
linux-tegra, lkml
From: Viresh Kumar <viresh.kumar@linaro.org>
Date: 2021-01-19 03:49:32
Also in:
linux-tegra, lkml
On 18-01-21, 13:46, Ulf Hansson wrote:
You seem to be worried about latency/overhead while doing the propagation upwards in the hierarchy. That seems like a reasonable concern to me, especially as the genpd lock is taken at each level.
I am not sure how many levels of domains we have normally, but unless the number is big it won't be a very big problem.
However, to mitigate this can be rather messy. In principle, we would need to walk the hierarchy upwards, each time a new subdomain is added in genpd_add_subdomain(). While doing this, we would also need to keep track on what level we set to continue the propagation of the performance states for. Even if this can be done in non-latency sensitive paths, I don't think it's worth it because of complexity (I haven't even thought of what happens when removing a subdomain).
What about a new field in the domain structure like 'can-handle-pstates', and then whenever sub-domain gets added it just needs to check its parent's field and set his own.
So, maybe we should simply just stick to the existing code, forcing the parent to have a ->set_performance() callback assigned if propagation should continue?
I think it would be better to fix the issue even if we aren't fully optimized and making the change to make sure we keep propagating is rather important. -- viresh