soc: rockchip: system_monitor: make sure thermal work is done before reboot

Thermal work is bound to a cpu which may offline while reboot, and it will
cause warning as below:

[   37.344392] WARNING: CPU: 0 PID: 1 at kernel/workqueue.c:858 wq_worker_waking_up+0x50/0x9c
[   37.345118] Modules linked in:
[   37.345407] CPU: 0 PID: 1 Comm: init Not tainted 4.19.111 #187
[   37.345927] Hardware name: Rockchip RK3399 EVB IND LPDDR4 Board edp (Android) (DT)
[   37.346599] pstate: 20400085 (nzCv daIf +PAN -UAO)
[   37.347030] pc : wq_worker_waking_up+0x50/0x9c
[   37.347427] lr : wq_worker_waking_up+0x18/0x9c
[   37.444388] Call trace:
[   37.444615]  wq_worker_waking_up+0x50/0x9c
[   37.444990]  try_to_wake_up+0x42c/0x600
[   37.445342]  default_wake_function+0x14/0x1c
[   37.445730]  autoremove_wake_function+0x18/0x58
[   37.446139]  __wake_up_common+0xb0/0x138
[   37.446491]  __wake_up_common_lock+0x7c/0xc4
[   37.446876]  __wake_up+0x14/0x1c
[   37.447174]  rk3x_i2c_irq+0x564/0x7bc
[   37.447503]  rk3x_i2c_restart_notify+0x44/0xf0
[   37.447902]  atomic_notifier_call_chain+0x4c/0x84
[   37.448323]  do_kernel_i2c_restart+0x20/0x28
[   37.448710]  machine_restart+0x20/0x58
[   37.449050]  kernel_restart+0x100/0x110
[   37.449402]  __arm64_sys_reboot+0x140/0x20c
[   37.449778]  el0_svc_common+0x98/0x150
[   37.450119]  el0_svc_handler+0x60/0x78
[   37.450459]  el0_svc+0x8/0xc

Change-Id: I21b30e95ce99cb186d443c66049d279e0805c5d7
Signed-off-by: Liang Chen <cl@rock-chips.com>
This commit is contained in:
Liang Chen
2020-04-12 16:15:12 +08:00
parent 87d2c3dbf1
commit 70335261b7

View File

@@ -1393,6 +1393,7 @@ static int rockchip_monitor_reboot_notifier(struct notifier_block *nb,
unsigned long action, void *ptr)
{
rockchip_set_system_status(SYS_STATUS_REBOOT);
cancel_delayed_work_sync(&system_monitor->thermal_work);
return NOTIFY_OK;
}