[PATCH 0/3] Dynamic CPU frequency switching for the HiFive

Andreas Schwab schwab at suse.de
Wed Jul 1 06:40:58 EDT 2020


On Jun 16 2020, Yash Shah wrote:

> The patch series adds the support for dynamic CPU frequency switching
> for FU540-C000 SoC on the HiFive Unleashed board. All the patches are
> based on Paul Walmsley's work.
>
> This series is based on Linux v5.7 and tested on HiFive unleashed board.

I'm using that patch with 5.7.5.

It appears to interfer with serial output when using the ondemand
governor.

I also see soft lockups when using the performance governor:

[  101.587527] rcu: INFO: rcu_sched self-detected stall on CPU
[  101.592322] rcu:     0-...!: (932 ticks this GP) idle=11a/1/0x4000000000000004 softirq=4301/4301 fqs=4
[  101.601432]  (t=6001 jiffies g=4017 q=859)
[  101.605514] rcu: rcu_sched kthread starved for 5984 jiffies! g4017 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x0 ->cpu=2
[  101.615494] rcu: RCU grace-period kthread stack dump:
[  101.620530] rcu_sched       R  running task        0    10      2 0x00000000
[  101.627560] Call Trace:
[  101.630004] [<ffffffe00085a7e2>] __schedule+0x25c/0x616
[  101.635205] [<ffffffe00085abde>] schedule+0x42/0xb2
[  101.640070] [<ffffffe00085d0ba>] schedule_timeout+0x56/0xb8
[  101.645626] [<ffffffe000263c34>] rcu_gp_fqs_loop+0x208/0x248
[  101.651266] [<ffffffe0002666de>] rcu_gp_kthread+0xc2/0xcc
[  101.656651] [<ffffffe00022654e>] kthread+0xda/0xec
[  101.661426] [<ffffffe00020140a>] ret_from_exception+0x0/0xc
[  101.666977] Task dump for CPU 0:
[  101.670187] loop0           R  running task        0   655      2 0x00000008
[  101.677218] Call Trace:
[  101.679657] [<ffffffe0002028ae>] walk_stackframe+0x0/0xaa
[  101.685036] [<ffffffe000202b76>] show_stack+0x2a/0x34
[  101.690074] [<ffffffe0002319b0>] sched_show_task.part.0+0xc2/0xd2
[  101.696154] [<ffffffe00022bb9c>] sched_show_task+0x64/0x66
[  101.701618] [<ffffffe000231afe>] dump_cpu_task+0x3e/0x48
[  101.706916] [<ffffffe000267762>] rcu_dump_cpu_stacks+0x94/0xce
[  101.712731] [<ffffffe0002631f6>] print_cpu_stall+0x116/0x18a
[  101.718375] [<ffffffe000264a46>] check_cpu_stall+0xcc/0x1a2
[  101.723929] [<ffffffe000264b52>] rcu_pending.constprop.0+0x36/0xaa
[  101.730094] [<ffffffe000266ab2>] rcu_sched_clock_irq+0xa6/0xea
[  101.735913] [<ffffffe00026d1be>] update_process_times+0x1e/0x42
[  101.741821] [<ffffffe0002793bc>] tick_sched_handle+0x26/0x52
[  101.747456] [<ffffffe0002798fe>] tick_sched_timer+0x6a/0xd0
[  101.753015] [<ffffffe00026d9be>] __run_hrtimer.constprop.0+0x50/0xe8
[  101.759353] [<ffffffe00026da9e>] __hrtimer_run_queues+0x48/0x6c
[  101.765254] [<ffffffe00026e410>] hrtimer_interrupt+0xca/0x1d4
[  101.770985] [<ffffffe0006ceef8>] riscv_timer_interrupt+0x32/0x3a
[  101.776976] [<ffffffe00085e17c>] do_IRQ+0xa4/0xb8
[  101.781663] [<ffffffe00020140a>] ret_from_exception+0x0/0xc

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab at suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."



More information about the linux-riscv mailing list