• Chris Wilson's avatar
    drm/i915: Don't deref pipe->cpu_transcoder in the hangcheck code · 63b66e5b
    Chris Wilson authored
    If we get an error event really early in the driver setup sequence,
    which gen3 is especially prone to with various display GTT faults we
    Oops. So try to avoid this.
    
    Additionally with Haswell the transcoders are a separate bank of
    registers from the pipes (4 transcoders, 3 pipes). In event of an
    error, we want to be sure we have a complete and accurate picture of
    the machine state, so record all the transcoders in addition to all
    the active pipes.
    
    This regression has been introduced in
    
    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
    
    Based on the patch "drm/i915: Dump all transcoder registers on error"
    from Chris Wilson:
    
    v2: Rebase so that we don't try to be clever and try to figure out the
    cpu transcoder from hw state. That exercise should be done when we
    analyze the error state offline.
    
    The actual bugfix is to not call intel_pipe_to_cpu_transcoder in the
    error state capture code in case the pipes aren't fully set up yet.
    
    v3: Simplifiy the err->num_transcoders computation a bit. While at it
    make the error capture stuff save on systems without a display block.
    
    v4: Fix fail, spotted by Jani.
    
    v5: Completely new commit message, cc: stable.
    
    Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
    Cc: Damien Lespiau <damien.lespiau@intel.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=60021
    Cc: stable@vger.kernel.org
    Tested-by: default avatarDustin King <daking@rescomp.stanford.edu>
    Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
    Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    63b66e5b
intel_display.c 276 KB