• Ville Syrjälä's avatar
    drm/i915: Do .init_clock_gating() earlier to avoid it clobbering watermarks · 5be6e334
    Ville Syrjälä authored
    Currently ILK-BDW explicitly disable LP1+ watermarks from their
    .init_clock_gating() hooks. Unfortunately that hook gets called way too
    late since by that time we've already initialized all the watermark
    state tracking which then gets out of sync with the hardware state.
    
    We may eventually want to consider killing off the explicit LP1+
    disable from .init_clock_gating(). In the meantime however, we can
    avoid the problem by reordering the init sequence such that
    intel_modeset_init_hw()->intel_init_clock_gating() gets called
    prior to the hardware state takeover.
    
    I suppose prior to the two stage watermark programming we were
    magically saved by something that forced the watermarks to be
    reprogrammed fully after .init_clock_gating() got called. But
    now that no longer happens.
    
    Note that the diff might look a bit odd as it kills off one
    call of intel_update_cdclk(), but that's fine because
    intel_modeset_init_hw() does the exact same thing. Previously
    we just did it twice.
    
    Actually even this new init sequence is pretty bogus as
    .init_clock_gating() really should be called before any gem
    hardware init since it can  configure various clock gating
    workarounds and whatnot that affect the GT side as well. Also
    intel_modeset_init() really should get split up into better
    defined init stages. Another "fun" detail is that
    intel_modeset_gem_init() is where RPS/RC6 gets configured.
    Why that is done from the display code is beyond me. I've
    decided to leave all this be for now, and just try to fix
    the init sequence enough for watermarks to work.
    
    Cc: stable@vger.kernel.org
    Cc: Gabriele Mazzotta <gabriele.mzt@gmail.com>
    Cc: David Purton <dcpurton@marshwiggle.net>
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Reported-by: default avatarGabriele Mazzotta <gabriele.mzt@gmail.com>
    Reported-by: default avatarDavid Purton <dcpurton@marshwiggle.net>
    Tested-by: default avatarGabriele Mazzotta <gabriele.mzt@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96645
    Fixes: ed4a6a7c ("drm/i915: Add two-stage ILK-style watermark programming (v11)")
    Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20170220140443.30891-1-ville.syrjala@linux.intel.comReviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    5be6e334
intel_display.c 445 KB