• NoXPhasma@lemmy.world
    link
    fedilink
    arrow-up
    9
    ·
    edit-2
    1 year ago

    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.

    • Olissipo@programming.dev
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      1 year ago

      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?

      • NoXPhasma@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        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.