Re: [PATCH v2 3/3] PM / EM: Skip inefficient OPPs

From: Lukasz Luba
Date: Tue May 25 2021 - 07:05:06 EST

On 5/25/21 10:46 AM, Vincent Donnefort wrote:
On Tue, May 25, 2021 at 09:33:01AM +0000, Quentin Perret wrote:
On Friday 21 May 2021 at 17:54:24 (+0100), Vincent Donnefort wrote:
@@ -161,6 +162,8 @@ static int em_create_perf_table(struct device *dev, struct em_perf_domain *pd,
table[i].cost = div64_u64(fmax * table[i].power,
if (table[i].cost >= prev_cost) {
+ table[i].flags = EM_PERF_STATE_INEFFICIENT;

If we're looking for micro-optimizations, then perhaps you could store
the index of the next efficient OPP (which would be 'i' if the current
OPP is already efficient), so you can jump to it directly when doing the

Wouldn't add any new field compared to this version so yeah might be an
interesting improvement.

That's a few more instructions to parse the 'flags' filed. I'm not sure
if that brings speed improvements vs. if we not parse and have bool
filed with a simple looping. The out-of-order core might even suffer
from this parsing and loop index manipulations...