• Chris Wilson's avatar
    drm/i915: Check for a stalled page flip after each vblank · d6bbafa1
    Chris Wilson authored
    Long ago, back in the racy haydays of 915gm interrupt handling, page
    flips would occasionally go astray and leave the hardware stuck, and the
    display not updating. This annoyed people who relied on their systems
    being able to display continuously updating information 24/7, and so
    some code to detect when the driver missed the page flip completion
    signal was added. Until recently, it was presumed that the interrupt
    handling was now flawless, but once again Simon Farnsworth has found a
    system whose display will stall. Reinstate the pageflip stall detection,
    which works by checking to see if the hardware has been updated to the
    new framebuffer address following each vblank. If the hardware is
    scanning out from the new framebuffer, but we still think the flip is
    pending, then we kick our driver into submision.
    
    This is a continuation of the effort started with
    commit 4e5359cd
    Author: Simon Farnsworth <simon.farnsworth@onelan.co.uk>
    Date:   Wed Sep 1 17:47:52 2010 +0100
    
        drm/i915: Avoid pageflipping freeze when we miss the flip prepare interrupt
    
    This now includes a belt-and-braces approach to make sure the driver
    (or the hardware) doesn't miss an interrupt and cause us to stop
    updating the display should the unthinkable happen and the pageflip fail - i.e.
    that the user is able to continue submitting flips.
    
    v2: Cleanup, refactor, and rename
    v3: Only start counting vblanks after the flip command has been seen by
        the hardware.
    v4: Record the seqno after we touch the ring, or else there may be no
        seqno allocated yet.
    v5: Rebase on mmio-flip.
    v6: Rebase, rebase.
    Reported-by: default avatarSimon Farnsworth <simon@farnz.org.uk>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75502Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> [v4]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    d6bbafa1
i915_debugfs.c 112 KB