mbox series

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

Message ID 20201007193522.9265-1-kabel@kernel.org (mailing list archive)
Headers show
Series Armada 37xx: Fix cpufreq changing base CPU speed to 800 MHz from 1000 MHz | expand

Message

Marek Behún Oct. 7, 2020, 7:35 p.m. UTC
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@free-electrons.com>
Cc: Miquel Raynal <miquel.raynal@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(-)

Comments

Pali Rohár Oct. 8, 2020, 8:21 a.m. UTC | #1
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@free-electrons.com>
> Cc: Miquel Raynal <miquel.raynal@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@turris:/# echo ondemand > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
root@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 ]---
Pali Rohár Oct. 8, 2020, 8:56 a.m. UTC | #2
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@free-electrons.com>
> > Cc: Miquel Raynal <miquel.raynal@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@turris:/# echo ondemand > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
> root@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.
Pali Rohár Oct. 8, 2020, 11:45 a.m. UTC | #3
On Thursday 08 October 2020 10:56:01 Pali Rohár wrote:
> 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@free-electrons.com>
> > > Cc: Miquel Raynal <miquel.raynal@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@turris:/# echo ondemand > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
> > root@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.

After investigation we found out that problem is switching CPU to 1GHz.
Seems that CPU needs to be at 500MHz for some time before it is switched
to 1GHz. Marek is preparing new patches to address this issue.