• Ville Syrjälä's avatar
    drm/i915: Workaround CHV pipe C cursor fail · b29ec92c
    Ville Syrjälä authored
    Turns out CHV pipe C was glued on somewhat poorly, and there's something
    wrong with the cursor. If the cursor straddles the left screen edge,
    and is then moved away from the edge or disabled, the pipe will often
    underrun. If enough underruns are triggered quickly enough the pipe
    will fall over and die (it just scans out a solid color and reports
    a constant underrun). We need to turn the disp2d power well off and
    on again to recover the pipe.
    
    None of that is very nice for the user, so let's just refuse to place
    the cursor in the compromised position. The ddx appears to fall back
    to swcursor when the ioctl returns an error, so theoretically there's
    no loss of functionality for the user (discounting swcursor bugs).
    I suppose most cursors images actually have the hotspot not exactly
    at 0,0 so under typical conditions the fallback will in fact kick in
    as soon as the cursor touches the left edge of the screen.
    
    Any atomic compositor should anyway be prepared to fall back to
    GPU composition when things don't work out, so there should be no
    problem with those.
    
    Other things that I tried to solve this include flipping all
    display related clock gating knobs I could find, increasing the
    minimum gtt alignment all the way up to 512k. I also tried to see
    if there are more specific screen coordinates that hit the bug, but
    the findings were somewhat inconclusive. Sometimes the failures
    happen almost across the whole left edge, sometimes more at the very
    top and around the bottom half. I wasn't able to find any real pattern
    to these variations, so it seems our only choice is to just refuse
    to straddle the left screen edge at all.
    
    Cc: stable@vger.kernel.org
    Cc: Jason Plum <max@warheads.net>
    Testcase: igt/kms_chv_cursor_fail
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92826Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1450459479-16286-1-git-send-email-ville.syrjala@linux.intel.comSigned-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    b29ec92c
intel_display.c 446 KB