linux/drivers/gpu/drm/omapdrm
Archit Taneja 80e4ed5411 drm/omap: fix: change dev_unload order
The current dev_unload order uninits the irqs too early.

In the current sequence, it's possible that a crtc queues work(apply_worker)
to display a buffer, which registers to omap_crtc_apply_irq to notfiy the
completion of the configuration we applied.

Calling drm_vblank_cleanup and omap_drm_irq_uninstall here causes the crtc's
apply handler to never get called, which results in an incorrect state of the
apply_irq.registered parameter.

This condition occurs where there is no mode set via omapdrm, and dev_lastclose
tries to set a default fb mode via drm_fb_helper_restore_fbdev_mode. The apply
work scheduled by restore_fbdev_mode is very close in time to the disabling of
the irq handler, and hence leads to a race condition. We move the irq cleanup
at the end of the unload sequence to prevent this.

Also, the call to flush_workqueue is removed since it's called internally by
destroy_workqueue.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
2014-01-09 15:17:25 +02:00
..
Kconfig drm: Add separate Kconfig option for fbdev helpers 2013-10-11 23:36:58 +02:00
Makefile drm/omap: kill omap_gem_helpers.c 2013-08-19 10:36:16 +10:00
omap_connector.c drm/omap: Make fixed resolution panels work 2013-04-11 13:25:52 +03:00
omap_crtc.c drm/omap: fix: Defer probe if an omapdss device requests for it at connect 2014-01-09 15:17:25 +02:00
omap_debugfs.c
omap_dmm_priv.h
omap_dmm_tiler.c DMA-API: others: use dma_set_coherent_mask() 2013-10-31 14:49:07 +00:00
omap_dmm_tiler.h
omap_drv.c drm/omap: fix: change dev_unload order 2014-01-09 15:17:25 +02:00
omap_drv.h drm/omap: fix: Defer probe if an omapdss device requests for it at connect 2014-01-09 15:17:25 +02:00
omap_encoder.c drm/omap: fix: disable encoder before destroying it 2014-01-09 15:17:25 +02:00
omap_fb.c drm/omap: use flip-work helper 2013-08-19 10:33:39 +10:00
omap_fbdev.c drm: Drop all the stub gamma_get, gamma_set, load_lut functions from drivers 2013-06-17 19:42:47 +10:00
omap_gem_dmabuf.c drm/gem: add mutex lock when using drm_gem_mmap_obj 2013-06-28 12:30:15 +10:00
omap_gem.c drm: kill ->gem_init_object() and friends 2013-10-09 14:38:02 +10:00
omap_irq.c drm/omap: fix (un)registering irqs inside an irq handler 2014-01-09 15:15:24 +02:00
omap_plane.c drm/omap: use flip-work helper 2013-08-19 10:33:39 +10:00
tcm-sita.c
tcm-sita.h
tcm.h
TODO