• D
    drm/irq: Add drm_crtc_vblank_reset · 9625604c
    Daniel Vetter 提交于
    At driver load we need to tell the vblank code about the state of the
    pipes, so that the logic around reject vblank_get when the pipe is off
    works correctly.
    
    Thus far i915 used drm_vblank_off, but one of the side-effects of it
    is that it also saves the vblank counter. And for that it calls down
    into the ->get_vblank_counter hook. Which isn't really a good idea
    when the pipe is off for a few reasons:
    - With runtime pm the register might not respond.
    - If the pipe is off some datastructures might not be around or
      unitialized.
    
    The later is what blew up on gen3: We look at intel_crtc->config to
    compute the vblank counter, and for a disabled pipe at boot-up that's
    just not there. Thus far this was papered over by a check for
    intel_crtc->active, but I want to get rid of that (since it's fairly
    race, vblank hooks are called from all kinds of places).
    
    So prep for that by adding a _reset functions which only does what we
    really need to be done at driver load: Mark the vblank pipe as off,
    but don't do any vblank counter saving or event flushing - neither of
    that is required.
    
    v2: Clarify the code flow slightly as suggested by Ville.
    
    v3: Fix kerneldoc spelling, spotted by Laurent.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Imre Deak <imre.deak@intel.com> (v2)
    Acked-by: NDave Airlie <airlied@redhat.com>
    Acked-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
    9625604c
drmP.h 34.6 KB