• Jesse Barnes's avatar
    drm/i915: set vblank enabled flag correctly across IRQ install/uninstall · dc1336ff
    Jesse Barnes authored
    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: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    Signed-off-by: default avatarEric Anholt <eric@anholt.net>
    Signed-off-by: default avatarDave Airlie <airlied@linux.ie>
    dc1336ff
drm_irq.c 19.8 KB