• Mario Kleiner's avatar
    drm: Zero out invalid vblank timestamp in drm_update_vblank_count. · 61289957
    Mario Kleiner authored
    [ Upstream commit fdb68e09 ]
    
    Since commit 844b03f2 we make
    sure that after vblank irq off, we return the last valid
    (vblank count, vblank timestamp) pair to clients, e.g., during
    modesets, which is good.
    
    An overlooked side effect of that commit for kms drivers without
    support for precise vblank timestamping is that at vblank irq
    enable, when we update the vblank counter from the hw counter, we
    can't update the corresponding vblank timestamp, so now we have a
    totally mismatched timestamp for the new count to confuse clients.
    
    Restore old client visible behaviour from before Linux 3.17, but
    zero out the timestamp at vblank counter update (instead of disable
    as in original implementation) if we can't generate a meaningful
    timestamp immediately for the new vblank counter. This will fix
    this regression, so callers know they need to retry again later
    if they need a valid timestamp, but at the same time preserves
    the improvements made in the commit mentioned above.
    Signed-off-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
    Cc: <stable@vger.kernel.org> #v3.17+
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
    61289957
drm_irq.c 48.8 KB