There are only 3 CPU scaling governors on AMD Ryzen with acpi-cpufreq driver

Cores are running between. 1.59 and 1.60 right now.
I can’t paste the true output because it is fluctuating at every mili-second but it is all in that range.

Are your machine under load right now?
Could you try opening some YouTube videos, while checking the frequency to see whether they jumps up or not. If they stay at 1.6GHz, that might work.

I have to add that this desktop always boot at 50 degrees celsius after I login and the reading slowly goes down to 39 and 40 degrees celsius. I always wondered why, doing some work in graphics it shoots up to 64 degrees immediately. With the powersave I can see it down to 35, 37, 38 degrees celsius when not busy.

I am watching right now in youtube and too many open windows here and to be honest it is running at 1.59
edit:
temperature of cores are 37, 38, 39, 40

Wow, somehow the answer seems to pop up at the end of the day (for me personally).
Your solution actually might works. It seems like the scaling driver does support other governors, but they are not listed.
Thank you very much for your information.
Please keep in mind that using powersave is gonna affect your machine performance. But I guess you are already well informed about CPU frequency scaling on Linux.

I’m happy to contribute. Hope this will really work for you as well.
This is the output for all cores

cpupower -c all frequency-info
analyzing CPU 0:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.60 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
analyzing CPU 1:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.64 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
analyzing CPU 2:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 2
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.87 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
analyzing CPU 3:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 3
  CPUs which need to have their frequency coordinated by software: 3
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.63 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
analyzing CPU 4:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 4
  CPUs which need to have their frequency coordinated by software: 4
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.60 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
analyzing CPU 5:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 5
  CPUs which need to have their frequency coordinated by software: 5
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.74 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
analyzing CPU 6:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 6
  CPUs which need to have their frequency coordinated by software: 6
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 2.48 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores
analyzing CPU 7:
  driver: intel_cpufreq
  CPUs which run at the same hardware frequency: 7
  CPUs which need to have their frequency coordinated by software: 7
  maximum transition latency: 20.0 us
  hardware limits: 1.60 GHz - 3.90 GHz
  available cpufreq governors: ondemand performance schedutil
  current policy: frequency should be within 1.60 GHz and 3.90 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.64 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: yes
    25500 MHz max turbo 4 active cores
    25500 MHz max turbo 3 active cores
    25500 MHz max turbo 2 active cores
    25500 MHz max turbo 1 active cores

There’s an unreleased fix for TLP, see:

It’s advertised as a possible option for acpi-cpufreq:

If you need to use TLP you can file a bugzilla requesting a patch to be applied.

I followed this guide, md_pstate_epp_scaling_driver_available, and just added

amd_pstate=active

to the command line in /etc/default/grub. The bios on my Dell 3525 with an AMD Ryzen 7 5825U cpu doesn’t have the setting you mentioned, but the epp driver works without it. The guide mentions you can use

amd_pstate=passive

to get the older amd_pstate driver if active doesn’t work. There is a link to a Phornix benchmark at the end of the first post. I’m using these setting on all 15 cpus:

grep . /sys/devices/system/cpu/cpufreq/policy0/{scaling_governor,energy_performance_preference}
/sys/devices/system/cpu/cpufreq/policy0/scaling_governor:powersave
/sys/devices/system/cpu/cpufreq/policy0/energy_performance_preference:balance_power

Try this command line setting and see if either one works on your PC.

Gene

That looks neat. How did you find out about that feature?
However, I think manually adding the missing governor to scaling_available_governors is a safer approach tho.
Thanks for the elaboration!

Keyword search on the TLP source repository returned a few relevant results.

I’ve tried both methods you mentioned, but to no avail. The error message is always like this:

$ dmesg|grep -i pstate
[    0.505359] amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled

which is evidently because CPPC is not activated in the BIOS.
Maybe because my CPU is a Zen 2, while yours is a Zen 3.
It is said while the Zen 2 CPUs can support CPPC, AMD doesn’t recommend activating that feature: English Community-Lenovo Community.
My speculation is that CPPC is enabled by default on your CPU, but disabled on mine, and both of our BIOSes lock out that setting. If you flash your BIOS like how I mentioned (but not recommended), maybe you can see that setting.

I found that guide while searching for more information on your original question. Another thing I found is that that the epp driver was fully implemented in Zen 3, so your Zen 2 may not be capable of using it.

Gene

So to conclude the problem, the reason for the lack of CPU governors is: while those CPU governors are supported by the scaling drivers, they are somehow not listed in /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors.
The solution, as @conram mentioned, is to manually add those missing governors to:
/sys/devices/system/cpu/cpu*/cpufreq/scaling_available_governors
Thank you guys for all of your supports!