I don’t know if we’re discussing semantics.
A performance score is attributed, and before the fix their scores were all 166. It doesn’t work, as you said.
So the consequence is the preferred core being “random”, isn’t it?
I don’t know if it’s random, the CPU scheduler still decides what thread to use. It will have its own semantics, but I don’t know on what those are based.
It’s not just random, it simply does not even work. Because they set this:
+/*Preferred Core featue is supported*/ +static bool prefcore = true;
And later in the code they do the if condition wrong:
+ if (prefcore) + WRITE_ONCE(cpudata->highest_perf, AMD_PSTATE_PREFCORE_THRESHOLD); + else + WRITE_ONCE(cpudata->highest_perf, AMD_CPPC_HIGHEST_PERF(cap1));
if should look like this:
+ if (prefcore) + WRITE_ONCE(cpudata->highest_perf, AMD_CPPC_HIGHEST_PERF(cap1)); + else + WRITE_ONCE(cpudata->highest_perf, AMD_PSTATE_PREFCORE_THRESHOLD);
There is probably even more wrong, looking at the code quality, but this at least makes the preferred core work.
I don’t know if we’re discussing semantics. A performance score is attributed, and before the fix their scores were all 166. It doesn’t work, as you said. So the consequence is the preferred core being “random”, isn’t it?
I don’t know if it’s random, the CPU scheduler still decides what thread to use. It will have its own semantics, but I don’t know on what those are based.