drm/i915: set vblank enabled flag correctly across IRQ install/uninstall
authorJesse Barnes <jbarnes@virtuousgeek.org>
Tue, 6 Jan 2009 18:21:24 +0000 (10:21 -0800)
committerDave Airlie <airlied@linux.ie>
Sat, 10 Jan 2009 22:59:52 +0000 (08:59 +1000)
commitdc1336ff4fe08ae7cfe8301bfd7f0b2cfd31d20a
treeff3e5a15ccbacb401b256f603fde16da9ec6e482
parent71e0ffa599f54058d9b8724b4b14d0486751681d
drm/i915: set vblank enabled flag correctly across IRQ install/uninstall

In the absence of kernel mode setting, many drivers disable IRQs across VT
switch.  The core DRM vblank code is missing a check for this case however;
even after IRQ disable, the vblank code will still have the vblank_enabled
flag set, so unless we track the fact that they're disabled at IRQ uninstall
time, when we VT switch back in we won't actually re-enable them, which means
any apps waiting on vblank before the switch will hang.

This patch does that and also adds a sanity check to the wait condition to
look for the irq_enabled flag in general, as well as adding a wakeup to the
IRQ uninstall path.

Fixes fdo bug #18879 with compiz hangs at VT switch.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/gpu/drm/drm_irq.c