• D
    drm/nouveau: Fix pre-nv50 pageflip events (v4) · bbc8764f
    Daniel Vetter 提交于
    Apparently pre-nv50 pageflip events happen before the actual vblank
    period. Therefore that functionality got semi-disabled in
    
    commit af4870e4
    Author: Mario Kleiner <mario.kleiner.de@gmail.com>
    Date:   Tue May 13 00:42:08 2014 +0200
    
        drm/nouveau/kms/nv04-nv40: fix pageflip events via special case.
    
    Unfortunately that hack got uprooted in
    
    commit cc1ef118
    Author: Thierry Reding <treding@nvidia.com>
    Date:   Wed Aug 12 17:00:31 2015 +0200
    
        drm/irq: Make pipe unsigned and name consistent
    
    Triggering a warning when trying to sample the vblank timestamp for a
    non-existing pipe. There's a few ways to fix this:
    
    - Open-code the old behaviour, which just enshrines this slight
      breakage of the userspace ABI.
    
    - Revert Mario's commit and again inflict broken timestamps, again not
      pretty.
    
    - Fix this for real by delaying the pageflip TS until the next vblank
      interrupt, thereby making it accurate.
    
    This patch implements the third option. Since having a page flip
    interrupt that happens when the pageflip gets armed and not when it
    completes in the next vblank seems to be fairly common (older i915 hw
    works very similarly) create a new helper to arm vblank events for
    such drivers.
    
    v2 (Mario Kleiner):
    - Fix function prototypes in drmP.h
    - Add missing vblank_put() for pageflip completion without
      pageflip event.
    - Initialize sequence number for queued pageflip event to avoid
      trouble in drm_handle_vblank_events().
    - Remove dead code and spelling fix.
    
    v3 (Mario Kleiner):
    - Add a signed-off-by and cc stable tag per Ilja's advice.
    
    v4 (Thierry Reding):
    - Fix kerneldoc typo, discovered by Michel Dänzer
    - Rearrange tags and changelog
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=106431
    Cc: Thierry Reding <treding@nvidia.com>
    Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
    Acked-by: NBen Skeggs <bskeggs@redhat.com>
    Cc: Ilia Mirkin <imirkin@alum.mit.edu>
    Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
    Reviewed-by: NMario Kleiner <mario.kleiner.de@gmail.com>
    Cc: stable@vger.kernel.org # v4.3
    Signed-off-by: NMario Kleiner <mario.kleiner.de@gmail.com>
    Signed-off-by: NThierry Reding <treding@nvidia.com>
    Signed-off-by: NDave Airlie <airlied@redhat.com>
    bbc8764f
drm_irq.c 55.0 KB