From patchwork Fri Apr 8 17:47:30 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Widawsky X-Patchwork-Id: 695361 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p38Ho82B024293 for ; Fri, 8 Apr 2011 17:50:28 GMT Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A43109F397 for ; Fri, 8 Apr 2011 10:50:07 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from cloud01.chad-versace.us (184-106-247-128.static.cloud-ips.com [184.106.247.128]) by gabe.freedesktop.org (Postfix) with ESMTP id E62539F304 for ; Fri, 8 Apr 2011 10:47:58 -0700 (PDT) Received: from localhost.localdomain (fruit.freedesktop.org [131.252.210.190]) by cloud01.chad-versace.us (Postfix) with ESMTPSA id 62D941D408C; Fri, 8 Apr 2011 17:48:49 +0000 (UTC) From: Ben Widawsky To: intel-gfx@lists.freedesktop.org Date: Fri, 8 Apr 2011 10:47:30 -0700 Message-Id: <1302284850-8274-5-git-send-email-ben@bwidawsk.net> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: <1302284850-8274-1-git-send-email-ben@bwidawsk.net> References: <1302284850-8274-1-git-send-email-ben@bwidawsk.net> Subject: [Intel-gfx] [PATCH 4/4] drm/i915: optional fewer warning patch X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 08 Apr 2011 17:50:28 +0000 (UTC) This patch will likely produce much fewer warnings, but perhaps hide some bugs in the driver. I believe it's a good starting point however to find the really serious issues first. Goal is to hide warnings if the refcount for the forcewake "lock" is not zero Signed-off-by: Ben Widawsky --- drivers/gpu/drm/i915/i915_drv.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index fcd5c9a..33341d4 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c @@ -286,9 +286,14 @@ void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) * immediately. Not having the lock causes a race, but all bets are off * when using forced forcewake, which should only be touched through * root-only entry in debugfs. + * + * Intelligent users of the interface may do a force_wake_get() followed + * by many register reads and writes, knowing that the reference count + * is already incremented. So we do not want to warn on those. */ - WARN_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex) && - !atomic_read(&dev_priv->forcewake_force)); + WARN_ON((!mutex_is_locked(&dev_priv->dev->struct_mutex) && + !dev_priv->forcewake_count) && + !atomic_read(&dev_priv->forcewake_force)); if (dev_priv->forcewake_count++ == 0) __gen6_gt_force_wake_get(dev_priv); @@ -302,8 +307,9 @@ static void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) { - WARN_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex) && - !atomic_read(&dev_priv->forcewake_force)); + WARN_ON((!mutex_is_locked(&dev_priv->dev->struct_mutex) && + !dev_priv->forcewake_count) && + !atomic_read(&dev_priv->forcewake_force)); if (--dev_priv->forcewake_count == 0) __gen6_gt_force_wake_put(dev_priv);