• Daniel Vetter's avatar
    drm/i915: fixup i915_pipe_enabled check in i915_irq.c · a01025af
    Daniel Vetter authored
    Well, as well as we can without completely revamping the drm vblank
    code. The issue are that
    - The vblank code needs to work on both ums and kms.
    - It deals always deals with pipes.
    - It doesn't take any of the kms locks.
    
    The last part is not really fixable without revamping the drm vblank
    code, since the drm core <-> driver interactions is a veritable pile
    of spaghettis. But the other pieces can be fixed by switching on the
    MODESET driver flag and either checking the hw state directly (ums
    case) or just querying our sw tracking (with broken locking, but
    that's not worse than what we've had).
    
    Note that this essentially reverts
    
    commit 702e7a56
    Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Date:   Tue Oct 23 18:29:59 2012 -0200
    
        drm/i915: convert PIPECONF to use transcoder instead of pipe
    
    for the ums case, which will fix a NULL deref (since we really don't
    have any crtcs set up).
    
    But the real reason to do this is to drop our reliance on the
    cpu_transcoder: By only checking intel_crtc->active we don't need to
    make sure that the pipe_config (or at least the cpu_transcoder)
    contain safe values even when the pipe is off.
    
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Damien Lespiau <damien.lespiau@intel.com>
    Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    a01025af
i915_irq.c 98.6 KB