rcu stall on cpu some time after cpuidle_enter_s2idle()
most of the time I see something like the following after it resumed:
[ 665.197214] rcu: INFO: rcu_preempt self-detected stall on CPU
[ 665.197387] rcu: 0-...!: (3 ticks this GP) idle=d81/1/0x4000000000000004 softirq=12675/12677 fqs=0
[ 665.197463] (t=6321 jiffies g=19473 q=2)
[ 665.197498] rcu: rcu_preempt kthread timer wakeup didn't happen for 6320 jiffies! g19473 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x402
[ 665.197512] rcu: Possible timer handling issue on cpu=1 timer-softirq=3725
[ 665.197526] rcu: rcu_preempt kthread starved for 6321 jiffies! g19473 f0x0 RCU_GP_WAIT_FQS(5) ->state=0x0 ->cpu=1
[ 665.197543] rcu: Unless rcu_preempt kthread gets sufficient CPU time, OOM is now expected behavior.
[ 665.197550] rcu: RCU grace-period kthread stack dump:
[ 665.197571] task:rcu_preempt state:R running task stack: 0 pid: 13 ppid: 2 flags:0x00000008
[ 665.197646] Call trace:
[ 665.197656] __switch_to+0x138/0x190
[ 665.197867] __schedule+0x288/0x6ec
[ 665.197944] schedule+0x7c/0x110
[ 665.197963] schedule_timeout+0xa4/0x1c4
[ 665.197997] rcu_gp_fqs_loop+0x13c/0x51c
[ 665.198042] rcu_gp_kthread+0x1a4/0x264
[ 665.198055] kthread+0x15c/0x170
[ 665.198086] ret_from_fork+0x10/0x20
[ 665.198121] rcu: Stack dump where RCU GP kthread last ran:
[ 665.198132] Task dump for CPU 1:
[ 665.198145] task:kworker/u8:22 state:R running task stack: 0 pid: 1707 ppid: 2 flags:0x00000008
[ 665.198197] Workqueue: writeback wb_workfn (flush-179:0)
[ 665.198279] Call trace:
[ 665.198284] __switch_to+0x138/0x190
[ 665.198298] 0xffff0000093a2d00
[ 665.198388] Task dump for CPU 0:
[ 665.198395] task:swapper/0 state:R running task stack: 0 pid: 0 ppid: 0 flags:0x0000000a
[ 665.198420] Call trace:
[ 665.198427] dump_backtrace+0x0/0x1e4
[ 665.198446] show_stack+0x24/0x30
[ 665.198464] sched_show_task+0x15c/0x180
[ 665.198526] dump_cpu_task+0x50/0x60
[ 665.198575] rcu_dump_cpu_stacks+0xf4/0x138
[ 665.198591] rcu_sched_clock_irq+0xb78/0xf04
[ 665.198621] update_process_times+0xa8/0xf4
[ 665.198695] tick_sched_handle+0x3c/0x60
[ 665.198728] tick_sched_timer+0x58/0xb0
[ 665.198736] __hrtimer_run_queues+0x18c/0x370
[ 665.198754] hrtimer_interrupt+0xf4/0x250
[ 665.198767] arch_timer_handler_phys+0x40/0x50
[ 665.198837] handle_percpu_devid_irq+0x94/0x250
[ 665.198887] handle_domain_irq+0x6c/0xa0
[ 665.198903] gic_handle_irq+0xc4/0x144
[ 665.198925] call_on_irq_stack+0x2c/0x54
[ 665.198955] do_interrupt_handler+0x5c/0x70
[ 665.198962] el1_interrupt+0x30/0x80
[ 665.198995] el1h_64_irq_handler+0x18/0x24
[ 665.199011] el1h_64_irq+0x78/0x7c
[ 665.199018] cpuidle_enter_s2idle+0x14c/0x1ac
[ 665.199092] do_idle+0x25c/0x2a0
[ 665.199145] cpu_startup_entry+0x34/0x80
[ 665.199153] rest_init+0xec/0x100
[ 665.199172] arch_call_rest_init+0x1c/0x28
[ 665.199244] start_kernel+0x6e0/0x720
[ 665.199256] __primary_switched+0xc0/0xc8
Edited by Martin Kepplinger