Check sbc-bench output in detail. That’s two different phenomenons:
- the cpufreq driver is hiding certain cpufreq OPP (on @willy’s board also the top ones)
- real clockspeeds differ from cpufreq OPP in different directions
As an example ‘my’ board:
Checking cpufreq OPP for cpu0-cpu3 (Cortex-A55):
Cpufreq OPP: 1800 Measured: 1828 (1828.663/1828.622/1828.125) (+1.6%)
Cpufreq OPP: 1608 Measured: 1645 (1645.519/1645.452/1644.982) (+2.3%)
Cpufreq OPP: 1416 Measured: 1422 (1422.748/1422.654/1422.544)
Cpufreq OPP: 1200 Measured: 1230 (1231.014/1230.882/1230.354) (+2.5%)
Cpufreq OPP: 1008 Measured: 1062 (1062.635/1062.504/1061.903) (+5.4%)
Cpufreq OPP: 816 Measured: 845 (845.559/845.516/844.695) (+3.6%)
Cpufreq OPP: 600 Measured: 587 (590.172/589.922/583.196) (-2.2%)
Cpufreq OPP: 408 Measured: 391 (391.348/391.180/390.991) (-4.2%)
Checking cpufreq OPP for cpu4-cpu5 (Cortex-A76):
Cpufreq OPP: 2400 Measured: 2348 (2348.432/2348.405/2348.268) (-2.2%)
Cpufreq OPP: 2208 Measured: 2185 (2185.642/2185.619/2185.571)
Cpufreq OPP: 2016 Measured: 2016 (2017.078/2016.977/2016.750)
Cpufreq OPP: 1800 Measured: 1817 (1817.134/1817.114/1816.991)
Cpufreq OPP: 1608 Measured: 1625 (1625.664/1625.632/1625.255) (+1.1%)
Cpufreq OPP: 1416 Measured: 1437 (1437.125/1437.110/1436.982) (+1.5%)
Cpufreq OPP: 1200 Measured: 1259 (1259.240/1259.132/1258.933) (+4.9%)
Cpufreq OPP: 1008 Measured: 1056 (1056.646/1056.527/1056.387) (+4.8%)
Cpufreq OPP: 816 Measured: 849 (850.073/850.012/849.793) (+4.0%)
Cpufreq OPP: 600 Measured: 592 (592.260/592.234/592.154) (-1.3%)
Cpufreq OPP: 408 Measured: 394 (394.444/394.302/394.288) (-3.4%)
Checking cpufreq OPP for cpu6-cpu7 (Cortex-A76):
Cpufreq OPP: 2400 Measured: 2348 (2348.350/2348.268/2348.159) (-2.2%)
Cpufreq OPP: 2208 Measured: 2185 (2185.548/2185.453/2185.311)
Cpufreq OPP: 2016 Measured: 2015 (2015.390/2015.315/2015.114)
Cpufreq OPP: 1800 Measured: 1813 (1813.888/1813.888/1813.847)
Cpufreq OPP: 1608 Measured: 1620 (1620.361/1620.263/1620.149)
Cpufreq OPP: 1416 Measured: 1429 (1429.315/1429.204/1429.204)
Cpufreq OPP: 1200 Measured: 1246 (1246.176/1246.056/1246.026) (+3.8%)
Cpufreq OPP: 1008 Measured: 1048 (1048.325/1048.240/1048.229) (+4.0%)
Cpufreq OPP: 816 Measured: 842 (842.671/842.611/842.422) (+3.2%)
Cpufreq OPP: 600 Measured: 592 (592.273/592.234/592.161) (-1.3%)
Cpufreq OPP: 408 Measured: 394 (394.366/394.288/394.233) (-3.4%)
The cpufreq driver decides to hide 2256, 2304 and 2352 from the OPP table (which might be a reasonable choice since the 200 MHz step between 2208-2400 is ok) but in @willy’s case cpu4-5 get 2304 MHz as highest OPP and cpu6-7 get 2352 MHz. The driver hides the 2400 OPP regardless what the MCU inside the SoC decides to use as real clockspeeds for each cpufreq OPP.
And you should be aware that Amlogic’s clockspeed cheating stopped with most recent SoCs. The last ones where we observed a hardcoded difference between cpufreq OPP and real clockspeeds was GXL/GXM (S905X and S912 where cpufreq OPP says 1.5 GHz while in reality it’s 1.4 GHz)