Re: [PATCH mvebu v2 00/10] Armada 37xx: Fix cpufreq changing base CPU speed to 800 MHz from 1000 MHz
From: Tomasz Maciej Nowak
Date: Mon Feb 01 2021 - 09:37:26 EST
W dniu 14.01.2021 o 13:40, Pali Rohár pisze:
> Hello!
>
> The armada-37xx-cpufreq driver changes base CPU speed from 1000 MHz to
> 800 MHz on EspressoBIN and Turris MOX. The commit message in patch 2/10
> explains why and how can this be discovered.
>
> That patch 2/10 led us to discover another bug, in the SOC itself,
> that causes the CPU to behave weirdly when frequency changes to 1 GHz.
> A similar erratum is documented by Marvell but only for systems where
> base frequency is 1.2 GHz.
>
> We've discovered that to make cpufreq scaling stable on Armada 3720
> systems with base frequency 1 GHz, we also have to set voltage levels
> for L0 and L1 loads to at least 1108 mV. We were led to this by patch we
> found in Marvell kernel fork. Fix is in the patch 4/10.
>
> https://github.com/MarvellEmbeddedProcessors/linux-marvell/commit/dc33b62c90696afb6adc7dbcc4ebbd48bedec269
>
> During fixing this voltage issue for 1 GHz we discovered another bug in
> armada-37xx-cpufreq driver that causes CPU instability. Erratum for VDD
> stabilization was improperly implemented, details are in patch 6/10.
>
> This patch series is also available in my git tree in branch a3720-cpufreq-issues:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/pali/linux.git/log/?h=a3720-cpufreq-issues
>
> We have tested this patch series on Espressobin v5 and Turris MOX
> boards. If you have other Armada 3720 boards (Espressobin v5/v7, uDPU,
> Devel Board, ...) then it will be nice to do an additional tests and
> check if instability issues are finally fixed.
>
> There is a discussion on armbian forum that Espressobin v7 is unstable
> when running at 1 GHz and in this thread was also mentioned above
> voltage patch from Marvell kernel fork:
>
> https://forum.armbian.com/topic/10429-how-to-make-espressobin-v7-stable/
>
> Marek & Pali
>
>
> Marek Behún (3):
> arm64: dts: marvell: armada-37xx: add syscon compatible to NB clk node
> cpufreq: armada-37xx: Fix setting TBG parent for load levels
> clk: mvebu: armada-37xx-periph: remove .set_parent method for CPU PM
> clock
>
> Pali Rohár (7):
> cpufreq: armada-37xx: Fix the AVS value for loads L0 and L1
> clk: mvebu: armada-37xx-periph: Fix switching CPU freq from 250 Mhz to
> 1 GHz
> clk: mvebu: armada-37xx-periph: Fix workaround for switching from L1
> to L0
> cpufreq: armada-37xx: Fix driver cleanup when registration failed
> cpufreq: armada-37xx: Fix determining base CPU frequency
> cpufreq: armada-37xx: Remove cur_frequency variable
> cpufreq: armada-37xx: Fix module unloading
Hi.
After running this series for three days, the system is stable and the
issue with switching frequency doesn't seem to be there anymore. So:
Tested-by: Tomasz Maciej Nowak <tmn505@xxxxxxxxx>
Thanks.
>
> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 3 +-
> drivers/clk/mvebu/armada-37xx-periph.c | 83 ++++++++-------
> drivers/cpufreq/armada-37xx-cpufreq.c | 100 ++++++++++++++-----
> 3 files changed, 124 insertions(+), 62 deletions(-)
>
--
TMN