[PATCH mvebu 0/3] Armada 37xx: Fix cpufreq changing base CPU speed to 800 MHz from 1000 MHz

Pali Rohár pali at kernel.org
Thu Oct 8 04:56:01 EDT 2020


On Thursday 08 October 2020 10:21:18 Pali Rohár wrote:
> On Wednesday 07 October 2020 21:35:19 Marek Behún wrote:
> > Hi Gregory,
> > 
> > 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/3 explains why
> > and how can this be discovered.
> > 
> > I have added the Fixes tag so that this is fixed in stable kernels.
> > 
> > Marek
> > 
> > Cc: Gregory CLEMENT <gregory.clement at free-electrons.com>
> > Cc: Miquel Raynal <miquel.raynal at bootlin.com>
> > 
> > Marek Behún (3):
> >   arm64: dts: marvell: armada-37xx: fix 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
> > 
> >  arch/arm64/boot/dts/marvell/armada-37xx.dtsi |  3 +-
> >  drivers/clk/mvebu/armada-37xx-periph.c       | 28 ----------------
> >  drivers/cpufreq/armada-37xx-cpufreq.c        | 35 +++++++++++++-------
> >  3 files changed, 25 insertions(+), 41 deletions(-)
> > 
> > -- 
> > 2.26.2
> > 
> 
> Hello! This patch series is causing kernel BUG and board reset after
> loading ondemand governor on Turris MOX with 5.9.0-rc8 kernel.
> 
> Here is log from serial console:
> 
> root at turris:/# echo ondemand > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
> root at turris:/# [   51.678502] ------------[ cut here ]------------
> [   51.680411] kernel BUG at arch/arm64/kernel/traps.c:470!
> [   51.685876] Internal error: Oops - BUG: 0 [#1] SMP
> [   51.690802] Modules linked in: ath9k ath9k_common ath9k_hw ath10k_pci ath10k_core ath rfcomm mwifiex_sdio mwifiex mac80211 hidp hci_uart cfg80211 btmrvl_sdio btmrvl bnep bluetooth hid
> [   51.707652] CPU: 0 PID: 23 Comm: kworker/0:1 Not tainted 5.9.0-rc8-mox-00023-g31368bea463b-dirty #359
> [   51.717142] Hardware name: CZ.NIC Turris Mox Board (DT)
> [   51.722533] Workqueue:  0x0 (events)
> [   51.726195] pstate: 00000085 (nzcv daIf -PAN -UAO BTYPE=--)
> [   51.731935] pc : do_undefinstr+0x2d8/0x2e8
> [   51.736138] lr : do_undefinstr+0x22c/0x2e8
> [   51.740349] sp : ffffffc011343b60
> [   51.743754] x29: ffffffc011343b60 x28: ffffff801f670000 
> [   51.749218] x27: ffffff801f5a3300 x26: ffffff801f6704e0 
> [   51.754684] x25: ffffff801f5a3300 x24: ffffffc010a6c028 
> [   51.760150] x23: 0000000060000085 x22: ffffffc01007b000 
> [   51.765616] x21: ffffffc011343d00 x20: 00000000b9403820 
> [   51.771081] x19: ffffffc011343bc0 x18: 0000000000000000 
> [   51.776547] x17: 0000000000000000 x16: 0000000000000000 
> [   51.782012] x15: 0000000000000000 x14: 0000000000000000 
> [   51.787478] x13: 0000000000000000 x12: 0000000000000000 
> [   51.792943] x11: 0000000000000026 x10: 0101010101010101 
> [   51.798410] x9 : ffffffc01018d094 x8 : 7f7f7f7f7f7f7f7f 
> [   51.803874] x7 : 0000000000000209 x6 : ffffffc011343bb0 
> [   51.809340] x5 : 0000000000000000 x4 : ffffffc0111ab110 
> [   51.814805] x3 : 00000000d5300000 x2 : ffffffc0110889a0 
> [   51.820271] x1 : ffffffc0111ab110 x0 : 0000000060000085 
> [   51.825737] Call trace:
> [   51.828249]  do_undefinstr+0x2d8/0x2e8
> [   51.832103]  el1_sync_handler+0xb0/0x108
> [   51.836133]  el1_sync+0x7c/0x100
> [   51.839450]  pick_next_task_fair+0x1e0/0x360
> [   51.843843]  __schedule+0x114/0x560
> [   51.847422]  schedule+0x50/0xd8
> [   51.850650]  worker_thread+0xe8/0x4e8
> [   51.854414]  kthread+0x12c/0x130
> [   51.857728]  ret_from_fork+0x10/0x18
> [   51.861407] Code: 12003c21 2a144034 17ffff99 a9025bf5 (d4210000) 
> [   51.867676] ---[ end trace 2384107ae1437c50 ]---

Some more information:

When I choose userspace governor and I'm trying to switch from 200000 or
250000 directly to 1000000, it crashes too.

Also it crashes when I quickly switch from 200000 to 500000 and then
immediately to 1000000.



More information about the linux-arm-kernel mailing list