Oh yes Posted Sunday at 08:53 PM Posted Sunday at 08:53 PM Hi all, I’m working with an RK3588-based board and running into a frequency scaling issue. All cores (cpu0–7) are stuck at 408 MHz, despite available OPPs going much higher (up to 2.35 GHz on the big cores). Attempts to raise frequencies via scaling_setspeed or userspace governor have no effect. The image I'm using is: https://www.armbian.com/nanopc-cm3588-nas/ (https://dl.armbian.com/cm3588-nas/Bookworm_vendor_minimal-omv) Device tree file is: fdtfile=rockchip/rk3588-friendlyelec-cm3588-nas.dtb # for cpu in /sys/devices/system/cpu/cpu[0-9]*; do echo "== $(basename $cpu) ==" cat $cpu/cpufreq/scaling_available_frequencies cat $cpu/cpufreq/cpuinfo_max_freq done == cpu0 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 1800000 == cpu1 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 1800000 == cpu2 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 1800000 == cpu3 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 1800000 == cpu4 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 2352000 == cpu5 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 2352000 == cpu6 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 2352000 == cpu7 == 408000 600000 816000 1008000 1200000 1416000 1608000 1800000 2016000 2208000 2352000 2352000 root@cm3588-nas:/# Getting DVFS/EM kernel message about inefficient OPP: [ 14.038585] cpu cpu0: EM: OPP:816000 is inefficient [ 14.048575] cpu cpu4: EM: OPP:1008000 is inefficient [ 14.048584] cpu cpu4: EM: OPP:816000 is inefficient [ 14.060709] cpu cpu6: EM: OPP:1008000 is inefficient [ 14.060718] cpu cpu6: EM: OPP:816000 is inefficient PVT readings [ 14.002363] cpu cpu0: pvtm=1425 [ 14.002523] cpu cpu0: pvtm-volt-sel=1 [ 14.011254] cpu cpu4: pvtm=1645 [ 14.015591] cpu cpu4: pvtm-volt-sel=3 [ 14.025824] cpu cpu6: pvtm=1665 [ 14.030065] cpu cpu6: pvtm-volt-sel=3 Attempting to raise speed: # for cpu in /sys/devices/system/cpu/cpu[0-9]*; do echo 1800000 | sudo tee $cpu/cpufreq/scaling_setspeed; cat $cpu/cpufreq/scaling_cur_freq; done 1800000 408000 1800000 408000 1800000 408000 1800000 408000 1800000 408000 1800000 408000 1800000 408000 1800000 408000 Why might all cores be capped at 408 MHz despite available OPPs and voltage steps? 0 Quote
Solution Potatoman69420 Posted yesterday at 04:35 AM Solution Posted yesterday at 04:35 AM (edited) I am observing the same thing. This can be easily fixed by setting the max frequency manually; https://www.incertum.net/post/2024/armbian-cm3588/ I checked `cpufreq-info | grep "available frequency steps"` And made this to set the correct speed for all the cores on the RK3588 NAS KIT # Little cluster (A55 cores: cpu0–cpu3) for c in 0 1 2 3; do cpufreq-set -c $c -g schedutil -u 1.80GHz done # Big cluster (A76 cores: cpu4–cpu7) for c in 4 5 6 7; do cpufreq-set -c $c -g schedutil -u 2.40GHz done Now running `watch -n1 "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq"` together with `for i in $(seq 1 $(nproc)); do yes > /dev/null & done` shows the frequencies going up correctly, and down too when I `killall yes` Edited yesterday at 04:38 AM by Potatoman69420 added instruction 0 Quote
Oh yes Posted 5 hours ago Author Posted 5 hours ago You're right - this works perfectly. I'm not typically a Debian user, so I'm not sure where this should be configured in a proper way. But at least I can unleash the CPUs now. Thank you for the very helpful reply. 0 Quote
Oh yes Posted 1 hour ago Author Posted 1 hour ago I looked a little closer and the included cpufrequtil init script is totally unaware of SoC clustering. If you put in a max value for the A76, it won't work for the A55. So I threw the problem into AI and asked for a flexible SoC solution (I'm of course simplifying it). This is what it gave me. Lightly tested: per cluster governors, per cluster min/max speed, ability to specify "min" and "max" rather than numeric values. cpufrequtils-default -> /etc/default/cpufrequtils cpufrequtils -> /etc/init.d/cpufrequtil YMMV. cpufrequtils cpufrequtils-default 0 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.