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