misc: rk628: Fix probability of WARNING when sleeping

The warning log is as follows:

[ 2548.269614][ T7373] workqueue: WQ_MEM_RECLAIM rk628-monitor-wq:rk628_display_work is flushing !WQ_MEM_RECLAIM events:rk628_hdmirx_delayed_work_audio
[ 2548.269661][ T7373] WARNING: CPU: 3 PID: 7373 at kernel/workqueue.c:2652 check_flush_dependency+0x11c/0x124
[ 2548.269696][ T7373] Modules linked in: wlan_mt7663_usb rtl8367vb btmtk_usb_unify
[ 2548.269727][ T7373] CPU: 3 PID: 7373 Comm: kworker/u16:4 Not tainted 6.1.75 #3
[ 2548.269741][ T7373] Hardware name: LANGO RK3576 V10 Board (DT)
[ 2548.269754][ T7373] Workqueue: rk628-monitor-wq rk628_display_work
[ 2548.269768][ T7373] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 2548.269783][ T7373] pc : check_flush_dependency+0x11c/0x124
[ 2548.269796][ T7373] lr : check_flush_dependency+0x11c/0x124
[ 2548.269808][ T7373] sp : ffffffc0134dbbb0
[ 2548.269816][ T7373] x29: ffffffc0134dbbb0 x28: ffffff80c2a31108 x27: ffffffc008079110
[ 2548.269831][ T7373] x26: ffffffc0134dbc98 x25: ffffff8093d0c9c0 x24: ffffff8092141e80
[ 2548.269847][ T7373] x23: ffffff81f6d88d00 x22: ffffff8092141e80 x21: ffffff807cc366c0
[ 2548.269861][ T7373] x20: ffffff80c0008600 x19: ffffffc008a036ec x18: ffffffc00f3e3050
[ 2548.269876][ T7373] x17: 0000000000000069 x16: ffffffffffffffff x15: 0000000000000004
[ 2548.269891][ T7373] x14: ffffffc009fdd720 x13: 0000000000000a9e x12: 0000000000000003
[ 2548.269906][ T7373] x11: 0000000000000000 x10: 0000000000000027 x9 : 7313130eec8ea700
[ 2548.269920][ T7373] x8 : 7313130eec8ea700 x7 : 7f7f7f7f7f7f7f7f x6 : fefefefeff6e6863
[ 2548.269934][ T7373] x5 : 000000000000001c x4 : 0000000000000018 x3 : 0000000000000000
[ 2548.269948][ T7373] x2 : 0000000000000000 x1 : ffffffc0134db950 x0 : 0000000000000080
[ 2548.269964][ T7373] Call trace:
[ 2548.269973][ T7373]  check_flush_dependency+0x11c/0x124
[ 2548.269987][ T7373]  __flush_work+0xc8/0x2ac
[ 2548.270000][ T7373]  __cancel_work_timer+0x128/0x1c8
[ 2548.270012][ T7373]  cancel_delayed_work_sync+0x14/0x24
[ 2548.270025][ T7373]  rk628_hdmirx_disable+0x40/0xc0
[ 2548.270038][ T7373]  rk628_display_disable+0x54/0xbc
[ 2548.270048][ T7373]  rk628_display_work+0x7c/0xd8
[ 2548.270057][ T7373]  process_one_work+0x1a8/0x3b8
[ 2548.270071][ T7373]  worker_thread+0x25c/0x430
[ 2548.270083][ T7373]  kthread+0xec/0x1b8
[ 2548.270101][ T7373]  ret_from_fork+0x10/0x20
[ 2548.270116][ T7373]
...

Type: Fix
Redmine ID: #526169
Associated modifications: N/A
Test: N/A

Signed-off-by: Zhibin Huang <zhibin.huang@rock-chips.com>
Change-Id: I2d3a3be7e4696ccb2773e66d11e25ce49191e952
This commit is contained in:
Zhibin Huang 2025-01-20 18:05:17 +08:00 committed by Tao Huang
parent 52f4ac49f4
commit 093fb7f0ce

View file

@ -363,7 +363,8 @@ static void rk628_hdmirx_delayed_work_audio(struct work_struct *work)
}
audio_state->pre_state = fifo_status;
exit:
schedule_delayed_work(&hdmirx->delayed_work_audio, msecs_to_jiffies(delay));
queue_delayed_work(system_freezable_wq, &hdmirx->delayed_work_audio,
msecs_to_jiffies(delay));
}
static void rk628_hdmirx_audio_setup(struct rk628 *rk628)
@ -417,7 +418,8 @@ static void rk628_hdmirx_audio_setup(struct rk628 *rk628)
rk628_i2c_write(rk628, HDMI_RX_AUD_CHEXTR_CTRL, AUD_LAYOUT_CTRL(1));
/* audio detect */
rk628_i2c_write(rk628, HDMI_RX_PDEC_AUDIODET_CTRL, AUDIODET_THRESHOLD(0));
schedule_delayed_work(&hdmirx->delayed_work_audio, msecs_to_jiffies(1000));
queue_delayed_work(system_freezable_wq, &hdmirx->delayed_work_audio,
msecs_to_jiffies(1000));
}
static void rk628_hdmirx_ctrl_enable(struct rk628 *rk628)