• M
    drm/i915/gen9: Only copy WM results for changed pipes to skl_hw · 2722efb9
    Matt Roper 提交于
    When we write watermark values to the hardware, those values are stored
    in dev_priv->wm.skl_hw.  However with recent watermark changes, the
    results structure we're copying from only contains valid watermark and
    DDB values for the pipes that are actually changing; the values for
    other pipes remain 0.  Thus a blind copy of the entire skl_wm_values
    structure will clobber the values for unchanged pipes...we need to be
    more selective and only copy over the values for the changing pipes.
    
    This mistake was hidden until recently due to another bug that caused us
    to erroneously re-calculate watermarks for all active pipes rather than
    changing pipes.  Only when that bug was fixed was the impact of this bug
    discovered (e.g., modesets failing with "Requested display configuration
    exceeds system watermark limitations" messages and leaving watermarks
    non-functional, even ones initiated by intel_fbdev_restore_mode).
    
    Changes since v1:
     - Add a function for copying a pipe's wm values
       (skl_copy_wm_for_pipe()) so we can reuse this later
    
    Fixes: 734fa01f ("drm/i915/gen9: Calculate watermarks during atomic 'check' (v2)")
    Fixes: 9b613022 ("drm/i915/gen9: Re-allocate DDB only for changed pipes")
    Signed-off-by: NMatt Roper <matthew.d.roper@intel.com>
    Signed-off-by: NLyude <cpaul@redhat.com>
    Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
    Cc: stable@vger.kernel.org
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@intel.com>
    Cc: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1471463761-26796-4-git-send-email-cpaul@redhat.com
    2722efb9
intel_pm.c 227.1 KB