Amd pstate not loading for Ryzen 7 PRO 4750U

Hi there,

I have some trouble with my CPU speed. I have a AMD Ryzen 7 PRO 4750U, ThinkPad T14s Gen 1. It does not go beyond 1700 MHz, but it should go to 4100MHz

$ inxi -C 
CPU:
  Info: 8-core model: AMD Ryzen 7 PRO 4750U with Radeon Graphics bits: 64
    type: MT MCP cache: L2: 4 MiB
  Speed (MHz): avg: 1427 min/max: 1400/1700 cores: 1: 1397 2: 1400 3: 1400
    4: 1400 5: 1400 6: 1400 7: 1400 8: 1400 9: 1546 10: 1700 11: 1400 12: 1400
    13: 1400 14: 1400 15: 1400 16: 1400

It looks like the power management driver falls back to acpi-cpufreq and not amd pstate

Aug 23 08:49:06 berend-laptop kernel: amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled
$ cpupower requency-info 
analyzing CPU 2:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 2
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.40 GHz - 1.70 GHz
  available frequency steps:  1.70 GHz, 1.60 GHz, 1.40 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.40 GHz and 1.70 GHz.
                  The governor "schedutil" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 1.78 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: no

I think the amd-pstate is installed:

$ ls /usr/lib/modules/$(uname -r)/kernel/drivers/cpufreq/                                                                                                                                                                                                                   ✔ 
acpi-cpufreq.ko.zst  amd_freq_sensitivity.ko.zst  amd-pstate-ut.ko.zst  p4-clockmod.ko.zst  pcc-cpufreq.ko.zst  powernow-k8.ko.zst  speedstep-lib.ko.zst

The BIOS settings are very limited and there is nothing on ACPI disabled or similar

Which kernel are you running? A similar issue was fixed in 6.8 and onwards. (218171 – amd-pstate not loading on zen2 threadripper 3960x (trx40)

Could you please post the output of inxi -Cazy?

kernel is 6.10.5

$ uname -a 
Linux berend-laptop 6.10.5-1-MANJARO #1 SMP PREEMPT_DYNAMIC Wed Aug 14 17:29:44 UTC 2024 x86_64 GNU/Linux
$ inxi -Cazy 
CPU:
  Info: model: AMD Ryzen 7 PRO 4750U with Radeon Graphics bits: 64 type: MT MCP
    arch: Zen 2 gen: 3 level: v3 note: check built: 2020-22
    process: TSMC n7 (7nm) family: 0x17 (23) model-id: 0x60 (96) stepping: 1
    microcode: 0x8600109
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 4 MiB desc: 8x512 KiB L3: 8 MiB
    desc: 2x4 MiB
  Speed (MHz): avg: 1412 high: 1600 min/max: 1400/1700 boost: enabled
    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 1600 2: 1400
    3: 1400 4: 1400 5: 1400 6: 1400 7: 1400 8: 1400 9: 1400 10: 1400 11: 1400
    12: 1400 13: 1400 14: 1400 15: 1400 16: 1400 bogomips: 54321
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: reg_file_data_sampling status: Not affected
  Type: retbleed mitigation: untrained return thunk; SMT enabled with STIBP
    protection
  Type: spec_rstack_overflow mitigation: Safe RET
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines; IBPB: conditional; STIBP:
    always-on; RSB filling; PBRSB-eIBRS: Not affected; BHI: Not affected
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected

That’s interesting. As a comparison, my AMD Ryzen 7 5800H mini-PC has:

driver: amd-pstate-epp governor: powersave

Hmm, I have set it to “Performance” via corectrl

after I checked what corectrl says, I did inxi -Cazy again, now it is performance

$ inxi -Cazy
CPU:
  Info: model: AMD Ryzen 7 PRO 4750U with Radeon Graphics bits: 64 type: MT MCP
    arch: Zen 2 gen: 3 level: v3 note: check built: 2020-22
    process: TSMC n7 (7nm) family: 0x17 (23) model-id: 0x60 (96) stepping: 1
    microcode: 0x8600109
  Topology: cpus: 1x cores: 8 tpc: 2 threads: 16 smt: enabled cache:
    L1: 512 KiB desc: d-8x32 KiB; i-8x32 KiB L2: 4 MiB desc: 8x512 KiB L3: 8 MiB
    desc: 2x4 MiB
  Speed (MHz): avg: 1655 high: 1700 min/max: 1400/1700 boost: enabled
    scaling: driver: acpi-cpufreq governor: performance cores: 1: 1700 2: 1700
    3: 1700 4: 1700 5: 1700 6: 1700 7: 1700 8: 1700 9: 1413 10: 1580 11: 1700
    12: 1700 13: 1700 14: 1700 15: 1397 16: 1700 bogomips: 54321
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: reg_file_data_sampling status: Not affected
  Type: retbleed mitigation: untrained return thunk; SMT enabled with STIBP
    protection
  Type: spec_rstack_overflow mitigation: Safe RET
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Retpolines; IBPB: conditional; STIBP:
    always-on; RSB filling; PBRSB-eIBRS: Not affected; BHI: Not affected
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected

but still max is only 1700MHz

now even stranger, I put some load on the system (joining a zoom session)

cpupower frequency-info                                                                             ✔ 
analyzing CPU 12:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 12
  CPUs which need to have their frequency coordinated by software: 12
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 1.40 GHz - 1.70 GHz
  available frequency steps:  1.70 GHz, 1.60 GHz, 1.40 GHz
  available cpufreq governors: conservative ondemand userspace powersave performance schedutil
  current policy: frequency should be within 1.40 GHz and 1.70 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 4.09 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
    Active: no

frequency is now frequency: 4.09 GHz, but hardware limits are hardware limits: 1.40 GHz - 1.70 GHz

this going up to >4000MHz is only happening after upgrading from 6.6 Kernel to 6.10. So maybe the bug mention above is related.

But still, shouldnt be the max cpu MHz 4100 then?

this is highly fluctuating. After boot it was ok for a while with cpu speed up to 4100, as expected, but then this decreases and speed is low. I can clearly see this in corectrl, see the screenshot below:

First half everything feels fast, cpu speed up to 4100,
but then in the second half laptop feels slow, cpu speed flipping between 400 and 1700 Mhz(the spikes)

all that while the “hardware max” is 1700 and govenor set to “performance”

update:

  • in my BIOS I set CPU Power Management to disabled
  • I re-positioned my Laptop a tiny bit to make sure that temperature does not stall due to no air circulation
  • the max cpu MHz is still 1700
  • the graph in corectl shows my cpu MHz resonably above that, according a bit to the load
  • the laptop feels responsive again (which is the most important part)

If anyone has explanations - I would love to know, but I am stopping tinkering for now

thanks everybody who reads this

have you try on boot to add these parameter for the kernel
amd-pstate=guided → amd-pstate epp V2 ( 2 scheduling modes cpu & power )

or amd-pstate=active → amd-pstate ( 1 scheduling mode cpu )

or amd-pstate=passive → amd-pstate ( 1 scheduling mode cpu )

I havent tried that, will check that out.

But I would assume that the error message from first message

Aug 23 08:49:06 berend-laptop kernel: amd_pstate: the _CPC object is not present in SBIOS or ACPI disabled

already says, that amd pstate is not working at all.

with

on boot to add these parameter for the kernel

you mean pressing e in grub and then adding them? I tried that with some other setting (blacklisting the acpi-cpufreq driver), but I am not sure if I did that correctly.

After hitting e, I see the “definition” of the boot menu with all its entries. I tried to add parameter before all entries, hoping that that place is always processed and valid for all entries. But I saw no changes.

Is that the right way to add parameters to the kernel on boot?

answer is Yes , you have tried and checked