Yep this is the solution and this did the job!
Credits to @megavolt and @linux-aarhus in creating the correct udev rule. See below for a short howto guide to implement this udev rule.
`SUBSYSTEM=="cpu", KERNEL=="cpu[0-9]|cpu[0-9][0-9]", ACTION=="add|change", RUN="/usr/bin/bash -c 'echo 550000 > /sys/devices/system/cpu/%k/cpufreq/scaling_min_freq'"`
My sincere thanks!
I’ll write a short guide, also in the other thread, how to make make this udev rule for 6.13 and up those seeking how to add this as well.
The following is a simple howto how to create the udev rule when using Kernel 6.13.x >
that lowers the idle frequency to 550Mhz which was the default up to Kernel 6.12.x
, when using amd-pstate=passive
or amd-pstate=active
kernel boot parameters.
Step 1)
First look up what your current scaling_min_freq
frequency is set to:
$ udevadm info --attribute-walk --path=/devices/system/cpu/cpu0 | grep 'scaling_min_freq'
ATTRS{cpufreq/policy0/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy1/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy10/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy11/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy12/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy13/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy14/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy15/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy2/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy3/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy4/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy5/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy6/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy7/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy8/scaling_min_freq}=="1756000"
ATTRS{cpufreq/policy9/scaling_min_freq}=="1756000"
The policy0 to 15
shows the number of CPU threads, the value is the Mhz. For my 5700X this is 1756Mhz.
Step 2)
Creating the udev rule.
First create the empty udev rule file:
$ sudo touch /etc/udev/rules.d/99-cpufreq-scaling-min-freq.rules
Open and edit with an editor of choice:
$ sudo nano /etc/udev/rules.d/99-cpufreq-scaling-min-freq.rules
Add or copy paste the following rule:
SUBSYSTEM=="cpu", KERNEL=="cpu[0-9]|cpu[0-9][0-9]", ACTION=="add|change", RUN="/usr/bin/bash -c 'echo 550000 > /sys/devices/system/cpu/%k/cpufreq/scaling_min_freq'"
Save and exit.
Step 3)
Testing if the udev rule has no errors:
$ udevadm test /sys/devices/system/cpu/cpu0
It should output something like this with no failed entries related to 99-cpufreq-scaling-min-freq.rules
. See hidden output below:
Output
$ udevadm test /sys/devices/system/cpu/cpu0
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
Trying to open "/etc/systemd/hwdb/hwdb.bin"...
Trying to open "/etc/udev/hwdb.bin"...
Trying to open "/usr/lib/systemd/hwdb/hwdb.bin"...
Trying to open "/usr/lib/udev/hwdb.bin"...
=== trie on-disk ===
tool version: 257
file size: 13186944 bytes
header size 80 bytes
strings 2702840 bytes
nodes 10484024 bytes
Loading kernel module index.
Loaded 'libkmod.so.2' via dlopen()
Failed to read $container of PID 1, ignoring: Permission denied
Found container virtualization none.
Using default interface naming scheme 'v257'.
Parsed configuration file "/usr/lib/systemd/network/99-default.link"
Parsed configuration file "/usr/lib/systemd/network/80-vm-vt.link"
Parsed configuration file "/usr/lib/systemd/network/80-namespace-ns.link"
Parsed configuration file "/usr/lib/systemd/network/80-container-vz.link"
Parsed configuration file "/usr/lib/systemd/network/80-container-ve.link"
Parsed configuration file "/usr/lib/systemd/network/80-container-vb.link"
Parsed configuration file "/usr/lib/systemd/network/80-6rd-tunnel.link"
Created link configuration context.
Reading rules file: /usr/lib/udev/rules.d/01-md-raid-creating.rules
Reading rules file: /usr/lib/udev/rules.d/10-dm.rules
Reading rules file: /usr/lib/udev/rules.d/11-dm-lvm.rules
Reading rules file: /usr/lib/udev/rules.d/13-dm-disk.rules
Reading rules file: /usr/lib/udev/rules.d/39-usbmuxd.rules
Reading rules file: /usr/lib/udev/rules.d/40-gphoto.rules
Reading rules file: /usr/lib/udev/rules.d/40-usb-media-players.rules
Reading rules file: /usr/lib/udev/rules.d/40-usb_modeswitch.rules
Reading rules file: /usr/lib/udev/rules.d/45-i2c-tools.rules
Reading rules file: /usr/lib/udev/rules.d/50-udev-default.rules
Reading rules file: /usr/lib/udev/rules.d/60-autosuspend.rules
Reading rules file: /usr/lib/udev/rules.d/60-block.rules
Reading rules file: /usr/lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /usr/lib/udev/rules.d/60-ddcutil-i2c.rules
Reading rules file: /usr/lib/udev/rules.d/60-dmi-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-drm.rules
Reading rules file: /usr/lib/udev/rules.d/60-evdev.rules
Reading rules file: /usr/lib/udev/rules.d/60-fido-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-infiniband.rules
Reading rules file: /usr/lib/udev/rules.d/60-input-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-nfs.rules
Reading rules file: /usr/lib/udev/rules.d/60-openrgb.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-mtd.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /usr/lib/udev/rules.d/60-rfkill.rules
Reading rules file: /usr/lib/udev/rules.d/60-sensor.rules
Reading rules file: /usr/lib/udev/rules.d/60-serial.rules
Reading rules file: /usr/lib/udev/rules.d/60-tpm-udev.rules
Reading rules file: /usr/lib/udev/rules.d/60-upower-battery.rules
Reading rules file: /usr/lib/udev/rules.d/60-vboxdrv.rules
Reading rules file: /usr/lib/udev/rules.d/63-md-raid-arrays.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs-dm.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs-zoned.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs.rules
Reading rules file: /usr/lib/udev/rules.d/64-ext4.rules
Reading rules file: /usr/lib/udev/rules.d/64-md-raid-assembly.rules
Reading rules file: /usr/lib/udev/rules.d/64-xfs.rules
Reading rules file: /usr/lib/udev/rules.d/65-libwacom.rules
Reading rules file: /usr/lib/udev/rules.d/65-persistent-net-nbft.rules
Reading rules file: /usr/lib/udev/rules.d/65-sane.rules
Reading rules file: /usr/lib/udev/rules.d/66-saned.rules
Reading rules file: /usr/lib/udev/rules.d/69-dm-lvm.rules
Reading rules file: /usr/lib/udev/rules.d/69-libftdi.rules
Reading rules file: /usr/lib/udev/rules.d/69-libmtp.rules
Reading rules file: /usr/lib/udev/rules.d/69-md-clustered-confirm-device.rules
Reading rules file: /usr/lib/udev/rules.d/70-camera.rules
Reading rules file: /usr/lib/udev/rules.d/70-flashrom.rules
Reading rules file: /usr/lib/udev/rules.d/70-infrared.rules
Reading rules file: /usr/lib/udev/rules.d/70-joystick.rules
Reading rules file: /usr/lib/udev/rules.d/70-memory.rules
Reading rules file: /usr/lib/udev/rules.d/70-mouse.rules
Reading rules file: /usr/lib/udev/rules.d/70-nvmf-autoconnect.rules
Reading rules file: /usr/lib/udev/rules.d/70-nvmf-keys.rules
Reading rules file: /usr/lib/udev/rules.d/70-power-switch.rules
Reading rules file: /usr/lib/udev/rules.d/70-printers.rules
Reading rules file: /usr/lib/udev/rules.d/70-steam-input.rules
Reading rules file: /usr/lib/udev/rules.d/70-steam-vr.rules
Reading rules file: /usr/lib/udev/rules.d/70-touchpad.rules
Reading rules file: /usr/lib/udev/rules.d/70-uaccess.rules
Reading rules file: /usr/lib/udev/rules.d/71-8bitdo-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-alpha_imaging_technology_co-vr.rules
Reading rules file: /usr/lib/udev/rules.d/71-astro_gaming-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-betop-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-google-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-hori-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-htc-vr.rules
Reading rules file: /usr/lib/udev/rules.d/71-logitech-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-mad_catz-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-microsoft-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-nacon-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-nintendo-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-nvidia-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-nvmf-netapp.rules
Reading rules file: /usr/lib/udev/rules.d/71-pdp-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-personal_communication_systems_inc-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-pid_codes-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-powera-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-razer-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-seat.rules
Reading rules file: /usr/lib/udev/rules.d/71-sony-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-sony-vr.rules
Reading rules file: /usr/lib/udev/rules.d/71-uinput-dev-early-creation.rules
Reading rules file: /usr/lib/udev/rules.d/71-valve-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/71-valve-vr.rules
Reading rules file: /usr/lib/udev/rules.d/71-zeroplus_technology_corporation-controllers.rules
Reading rules file: /usr/lib/udev/rules.d/73-seat-late.rules
Reading rules file: /usr/lib/udev/rules.d/75-net-description.rules
Reading rules file: /usr/lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-broadmobi-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-cinterion-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-dell-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-dlink-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-ericsson-mbm.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-fibocom-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-foxconn-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-gosuncn-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-haier-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-huawei-net-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-linktop-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-longcheer-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-mtk-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-nokia-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-qcom-soc.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-quectel-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-sierra.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-simtech-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-telit-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-tplink-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-ublox-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-x22x-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/77-mm-zte-port-types.rules
Reading rules file: /usr/lib/udev/rules.d/78-sound-card.rules
Reading rules file: /usr/lib/udev/rules.d/80-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /usr/lib/udev/rules.d/80-mm-candidate.rules
Reading rules file: /usr/lib/udev/rules.d/80-net-setup-link.rules
Reading rules file: /usr/lib/udev/rules.d/80-udisks2.rules
Reading rules file: /usr/lib/udev/rules.d/81-net-dhcp.rules
Reading rules file: /usr/lib/udev/rules.d/84-nm-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /usr/lib/udev/rules.d/85-regulatory.rules
Reading rules file: /usr/lib/udev/rules.d/90-alsa-restore.rules
Reading rules file: /usr/lib/udev/rules.d/90-iocost.rules
Reading rules file: /usr/lib/udev/rules.d/90-libinput-fuzz-override.rules
Reading rules file: /usr/lib/udev/rules.d/90-nm-thunderbolt.rules
Reading rules file: /usr/lib/udev/rules.d/90-pipewire-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/90-vconsole.rules
Reading rules file: /usr/lib/udev/rules.d/95-dm-notify.rules
Reading rules file: /usr/lib/udev/rules.d/95-upower-hid.rules
Reading rules file: /usr/lib/udev/rules.d/95-upower-wup.rules
Reading rules file: /usr/lib/udev/rules.d/96-e2scrub.rules
Reading rules file: /etc/udev/rules.d/99-cpufreq-scaling-min-freq.rules
Reading rules file: /usr/lib/udev/rules.d/99-fuse.rules
Reading rules file: /usr/lib/udev/rules.d/99-fuse3.rules
Reading rules file: /usr/lib/udev/rules.d/99-nfs.rules
Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
Reading rules file: /etc/udev/rules.d/99-usb-sync.rules
cpu0: /usr/lib/udev/rules.d/50-udev-default.rules:20 Importing properties from results of builtin command 'hwdb --subsystem=cpu'
cpu0: hwdb modalias key: "cpu:type:x86,ven0002fam0019mod0021:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,001C,0020,0021,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0036,0037,0038,0039,003A,003B,003D,0064,0068,006E,0070,0074,0075,0076,0078,0079,007A,007C,007D,0080,0081,0083,0089,008C,008D,0093,0094,0095,0096,0097,0099,009A,009B,009C,009D,009E,00C0,00C1,00C2,00C3,00C4,00C5,00C6,00C7,00C8,00C9,00CA,00CC,00CD,00D1,00D6,00D7,00D8,00DA,00DC,00DD,00DE,00E2,00E4,00E6,00E8,00EA,00ED,00F0,00F1,00F2,00F3,00F5,00F6,00F9,00FA,00FB,00FC,010F,0120,0123,0125,0127,0128,0129,012A,012C,012F,0132,0133,0134,0137,0138,013D,0140,0141,0142,0143,0160,0161,0162,0163,0165,016C,016E,016F,0177,0179,017D,018B,01A0,01A1,01A2,01A4,01A6,01A9,01AA,01AC,01AD,01AE,01AF,01B1,01B2,01B3,01B4,01B8,01BC,01BD,01C2,01E0,01E1,01E2,01E3,01E4,01E5,01E6,01E7,01EA,01EB,01EC,01ED,01EF,01F0,01F1,01F3,01F4,01FC,0202,0203,0204,0207,0209,020A,0216,0220,0221,0223,0224,0225,0244,0262,026B,026C,026D,026E,0270,0280,0282,0283,0286,029B,029C"
cpu0: No entry found from hwdb.
cpu0: /usr/lib/udev/rules.d/50-udev-default.rules:20 Failed to run builtin 'hwdb --subsystem=cpu': No data available
cpu0: /usr/lib/udev/rules.d/80-drivers.rules:5 RUN 'kmod load'
cpu0: /etc/udev/rules.d/99-cpufreq-scaling-min-freq.rules:1 RUN '/usr/bin/bash -c 'echo 550000 > /sys/devices/system/cpu/%k/cpufreq/scaling_min_freq''
Properties:
DEVPATH=/devices/system/cpu/cpu0
DRIVER=processor
MODALIAS=cpu:type:x86,ven0002fam0019mod0021:feature:,0000,0001,0002,0003,0004,0005,0006,0007,0008,0009,000B,000C,000D,000E,000F,0010,0011,0013,0017,0018,0019,001A,001C,0020,0021,0022,0023,0024,0025,0026,0027,0028,0029,002B,002C,002D,002E,002F,0030,0031,0034,0036,0037,0038,0039,003A,003B,003D,0064,0068,006E,0070,0074,0075,0076,0078,0079,007A,007C,007D,0080,0081,0083,0089,008C,008D,0093,0094,0095,0096,0097,0099,009A,009B,009C,009D,009E,00C0,00C1,00C2,00C3,00C4,00C5,00C6,00C7,00C8,00C9,00CA,00CC,00CD,00D1,00D6,00D7,00D8,00DA,00DC,00DD,00DE,00E2,00E4,00E6,00E8,00EA,00ED,00F0,00F1,00F2,00F3,00F5,00F6,00F9,00FA,00FB,00FC,010F,0120,0123,0125,0127,0128,0129,012A,012C,012F,0132,0133,0134,0137,0138,013D,0140,0141,0142,0143,0160,0161,0162,0163,0165,016C,016E,016F,0177,0179,017D,018B,01A0,01A1,01A2,01A4,01A6,01A9,01AA,01AC,01AD,01AE,01AF,01B1,01B2,01B3,01B4,01B8,01BC,01BD,01C2,01E0,01E1,01E2,01E3,01E4,01E5,01E6,01E7,01EA,01EB,01EC,01ED,01EF,01F0,01F1,01F3,01F4,01FC,0202,0203,0204,0207,0209,020A,0216,0220,0221,0223,0224,0225,0244,0262,026B,026C,026D,026E,0270,0280,0282,0283,0286,029B,029C
ACTION=add
SUBSYSTEM=cpu
USEC_INITIALIZED=643493474
Queued commands:
RUN{program} : /usr/bin/bash -c 'echo 550000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq'
Unload kernel module index.
Unloaded link configuration context.
Step 4)
Reload your systems udev rules:
$ sudo udevadm control --reload
Trigger the reloaded udev rules:
$ sudo udevadm trigger
Check if the udev rule has been applied:
$ udevadm info --attribute-walk --path=/devices/system/cpu/cpu0 | grep 'scaling_min_freq'
ATTRS{cpufreq/policy0/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy1/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy10/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy11/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy12/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy13/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy14/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy15/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy2/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy3/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy4/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy5/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy6/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy7/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy8/scaling_min_freq}=="550000"
ATTRS{cpufreq/policy9/scaling_min_freq}=="550000"
That is it.
Your Ryzen idle frequencies should be at 550Mhz as it was up to Kernel 6.12.x
.
Optional Step 5)
How to disable this udev rule.
Open a terminal to:
$ cd /etc/udev/rules.d
Rename the 99-cpufreq-scaling-min-freq.rules file:
$ sudo mv 99-cpufreq-scaling-min-freq.rules 99-cpufreq-scaling-min-freq.rules.old
Then reload your systems udev rules:
$ sudo udevadm control --reload
And trigger the reloaded udev rules:
$ sudo udevadm trigger
Confirm if scaling_min_freq
is set back to the 6.13 default value as noted in Step 1.
udevadm info --attribute-walk --path=/devices/system/cpu/cpu0 | grep 'scaling_min_freq'
The udev rule has been disabled and idle frequency is set back to default behavior for Kernels 6.13.x
and up.