MLK-20098-1: imx/drm/dcss: Fix potential sleep in IRQ context
authorLaurentiu Palcu <laurentiu.palcu@nxp.com>
Fri, 26 Oct 2018 08:50:13 +0000 (11:50 +0300)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
commit786ee2013dcd66fa898acce8b366e607057ab8ca
tree78e4e913cc0d7dbc23aa3da246b111bc74270ea1
parentd1983cfdef790dd1d6610119b20f96806a6fb9a9
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>
drivers/gpu/imx/dcss/dcss-dpr.c
drivers/gpu/imx/dcss/dcss-dtg.c