MLK-20098-1: imx/drm/dcss: Fix potential sleep in IRQ context
Activating CONFIG_SLEEP_ATOMIC_SLEEP detected a couple of potential sleeps
inside IRQ context:
[ 23.609203] BUG: sleeping function called from invalid context at kernel/irq/manage.c:112
[ 23.617437] in_atomic(): 1, irqs_disabled(): 128, pid: 0, name: swapper/2
[ 23.624229] CPU: 2 PID: 0 Comm: swapper/2 Tainted: G W
4.14.62-05295-gf2fa7e6 #454
[ 23.632927] Hardware name: Freescale i.MX8MQ EVK (DT)
[ 23.637980] Call trace:
[ 23.640433] [<
ffff00000808a360>] dump_backtrace+0x0/0x3d8
[ 23.645834] [<
ffff00000808a74c>] show_stack+0x14/0x20
[ 23.650891] [<
ffff000008dba640>] dump_stack+0x9c/0xbc
[ 23.655946] [<
ffff0000080f70d4>] ___might_sleep+0xf4/0x118
[ 23.661433] [<
ffff0000080f7148>] __might_sleep+0x50/0x88
[ 23.666750] [<
ffff00000811f218>] synchronize_irq+0x30/0x98
[ 23.672237] [<
ffff00000811f6e8>] disable_irq+0x20/0x30
[ 23.677378] [<
ffff00000866edb8>] dcss_dpr_irq_enable+0x78/0x98
[ 23.683211] [<
ffff00000866f798>] dcss_dtg_vblank_irq_enable+0x40/0x78
[ 23.689652] [<
ffff00000866c79c>] dcss_vblank_irq_enable+0xc/0x18
[ 23.695661] [<
ffff0000086d3048>] dcss_disable_vblank+0x30/0x50
[ 23.701496] [<
ffff0000086aaa2c>] drm_vblank_disable_and_save+0xd4/0xe8
[ 23.708023] [<
ffff0000086aaac8>] vblank_disable_fn+0x88/0xa8
[ 23.713685] [<
ffff00000813513c>] call_timer_fn.isra.5+0x24/0x80
[ 23.719603] [<
ffff00000813523c>] expire_timers+0xa4/0xb0
[ 23.724914] [<
ffff000008135300>] run_timer_softirq+0xb8/0x170
[ 23.730660] [<
ffff000008081bcc>] __do_softirq+0x12c/0x228
[ 23.736062] [<
ffff0000080d57bc>] irq_exit+0xc4/0x100
[ 23.741025] [<
ffff00000811e528>] __handle_domain_irq+0x60/0xb8
[ 23.746857] [<
ffff000008081998>] gic_handle_irq+0x78/0x17c
These sleep warnings were generated because disable_irq() may sleep. Use
disable_irq_nosync() instead.
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>