• Chris Wilson's avatar
    drm: Make the decision to keep vblank irq enabled earlier · 75cff083
    Chris Wilson authored
    We want to provide the vblank irq shadow for pageflip events as well as
    vblank queries. Such events are completed within the vblank interrupt
    handler, and so the current check for disabling the irq will disable it
    from with the same interrupt as the last pageflip event. If we move the
    decision on whether to disable the irq (based on there no being no
    remaining vblank events, i.e. vblank->refcount == 0) to before we signal
    the events, we will only disable the irq on the interrupt after the last
    event was signaled. In the normal course of events, this will keep the
    vblank irq enabled for the entire flip sequence whereas before it would
    flip-flop around every interrupt.
    
    v2: Move the disable_fn() call outside of the vblank_event_lock.
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Cc: Michel Dänzer <michel@daenzer.net>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Dave Airlie <airlied@redhat.com>,
    Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> #v1
    Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com> #v1
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170324173058.23051-1-chris@chris-wilson.co.uk
    75cff083
drm_irq.c 52.2 KB