From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751517AbcGOWOl (ORCPT ); Fri, 15 Jul 2016 18:14:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51628 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751292AbcGOWOi (ORCPT ); Fri, 15 Jul 2016 18:14:38 -0400 From: Lyude To: intel-gfx@lists.freedesktop.org Cc: Lyude , Radhakrishna Sripada , Hans de Goede , stable@vger.kernel.org, Daniel Vetter , Jani Nikula , David Airlie , dri-devel@lists.freedesktop.org (open list:INTEL DRM DRIVERS (excluding Poulsbo, Moorestow...), linux-kernel@vger.kernel.org (open list)) Subject: [PATCH] drm/i915/skl: Fix redundant cursor update, fix cursor underruns Date: Fri, 15 Jul 2016 18:13:56 -0400 Message-Id: <1468620836-11735-1-git-send-email-cpaul@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 15 Jul 2016 22:14:38 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org At long last, the time has finally come for Skylake users to plug their external displays back in. During intel_atomic_commit() on Skylake, we've actually been arming the registers to update the cursor information twice instead of just once. Once in i9xx_update_cursor(), and once in skl_wm_flush_pipe(). This isn't actually necessary, and removing the later update in skl_wm_flush_pipe() has completely stopped the underruns on this T460p from occurring when moving the mouse cursor from one monitor to another. Signed-off-by: Lyude Cc: Radhakrishna Sripada Cc: Hans de Goede Cc: stable@vger.kernel.org --- drivers/gpu/drm/i915/intel_pm.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index 7ac71ec..4771a03 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c @@ -3860,7 +3860,6 @@ skl_wm_flush_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, int pass) I915_WRITE(PLANE_SURF(pipe, plane), I915_READ(PLANE_SURF(pipe, plane))); } - I915_WRITE(CURBASE(pipe), I915_READ(CURBASE(pipe))); } static bool -- 2.7.4