• Matt Roper's avatar
    drm/i915/gen9: Only copy WM results for changed pipes to skl_hw · 2722efb9
    Matt Roper authored
    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: default avatarMatt Roper <matthew.d.roper@intel.com>
    Signed-off-by: default avatarLyude <cpaul@redhat.com>
    Reviewed-by: default avatarMatt 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: default avatarMaarten 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 KB