From patchwork Tue Apr 26 17:30:02 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 8941841 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 810B8BF440 for ; Tue, 26 Apr 2016 17:32:20 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id A88EC20219 for ; Tue, 26 Apr 2016 17:32:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id CC892201EC for ; Tue, 26 Apr 2016 17:32:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1B2946E8DF; Tue, 26 Apr 2016 17:31:24 +0000 (UTC) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail-wm0-x229.google.com (mail-wm0-x229.google.com [IPv6:2a00:1450:400c:c09::229]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB0D96E8C7 for ; Tue, 26 Apr 2016 17:30:53 +0000 (UTC) Received: by mail-wm0-x229.google.com with SMTP id g17so3240752wme.0 for ; Tue, 26 Apr 2016 10:30:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2j0OrCZsXLvOf2283ErOXj6g65pzMTnncu29vP8UKT0=; b=E45Qu9d0haukIp4yiCjzrJqfvfxuyP4gYyMJ8cpsHeIaNWnIxytfUjHJ88z24zmb9E 9l6oJ3jCf8fE2gft4oSTXwXzuOEJnDw11jK+qIa/Lc+cB8LEQehDtcgwX1XSRYzC6Ah7 AGwjIV/Au1KUlRQqAbPMqV4FP6W01515hhRnw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2j0OrCZsXLvOf2283ErOXj6g65pzMTnncu29vP8UKT0=; b=aVuEUXuGE/3nON83uSwicKj6xbxprrcV4x7pzEZ2AInmYtCi4Mjs9+XWNHTilaWeBR osV4vbwxE7vYrU3u71rTdtr9J4w7Tbko22BYO64hq8QUkl6z+s8Hc9GzdOizTsWuCnt8 DzmyBrVFcSjHsCi0eFKiQIiQv7qdD6ythrWre7pfpYPvDNhDcZjOAnu57JkelJYZMPku rxbFlwYsaXYGC9LvroYyPYhdEyrRoIXwEu6M2Y0TiytvZPWysLZd4z+98eItcjqMKvwq WWlX4s5HORNLuLsp9I01Vj2oayWUDwcYuIR2HtnweCJ+LpuNuj6+pHflfDMrv1c7y1/K y+KA== X-Gm-Message-State: AOPr4FWR8ftdGRrj/Er8P0a4TQjIDFDHK8PQLuXsTnf5vn2Uu4dddOJhn8a3g1erfacnaA== X-Received: by 10.28.72.132 with SMTP id v126mr5116502wma.49.1461691851317; Tue, 26 Apr 2016 10:30:51 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:56b5:0:ac27:b86c:7764:9429]) by smtp.gmail.com with ESMTPSA id wr2sm29928678wjc.49.2016.04.26.10.30.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Apr 2016 10:30:50 -0700 (PDT) From: Daniel Vetter To: DRI Development Date: Tue, 26 Apr 2016 19:30:02 +0200 Message-Id: <1461691808-12414-30-git-send-email-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1461691808-12414-1-git-send-email-daniel.vetter@ffwll.ch> References: <1461691808-12414-1-git-send-email-daniel.vetter@ffwll.ch> Cc: Daniel Vetter , Daniel Vetter , Intel Graphics Development Subject: [Intel-gfx] [PATCH 29/35] drm/vc4: Use drm_gem_object_unreference_unlocked X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Since my last struct_mutex crusade someone escaped! This already has the advantage that for the common case when someone else holds a ref the unref won't even acquire dev->struct_mutex. And I'm working on code to allow drivers to completely opt-out of any and all dev->struct_mutex usage, but that only works if they use the _unlocked variants everywhere. v2: drop comment too. Cc: Eric Anholt Signed-off-by: Daniel Vetter --- drivers/gpu/drm/vc4/vc4_gem.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c index 8d4384f8b78d..1f6711a98f5d 100644 --- a/drivers/gpu/drm/vc4/vc4_gem.c +++ b/drivers/gpu/drm/vc4/vc4_gem.c @@ -53,10 +53,8 @@ vc4_free_hang_state(struct drm_device *dev, struct vc4_hang_state *state) { unsigned int i; - mutex_lock(&dev->struct_mutex); for (i = 0; i < state->user_state.bo_count; i++) - drm_gem_object_unreference(state->bo[i]); - mutex_unlock(&dev->struct_mutex); + drm_gem_object_unreference_unlocked(state->bo[i]); kfree(state); } @@ -687,11 +685,9 @@ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec) struct vc4_dev *vc4 = to_vc4_dev(dev); unsigned i; - /* Need the struct lock for drm_gem_object_unreference(). */ - mutex_lock(&dev->struct_mutex); if (exec->bo) { for (i = 0; i < exec->bo_count; i++) - drm_gem_object_unreference(&exec->bo[i]->base); + drm_gem_object_unreference_unlocked(&exec->bo[i]->base); kfree(exec->bo); } @@ -699,9 +695,8 @@ vc4_complete_exec(struct drm_device *dev, struct vc4_exec_info *exec) struct vc4_bo *bo = list_first_entry(&exec->unref_list, struct vc4_bo, unref_head); list_del(&bo->unref_head); - drm_gem_object_unreference(&bo->base.base); + drm_gem_object_unreference_unlocked(&bo->base.base); } - mutex_unlock(&dev->struct_mutex); mutex_lock(&vc4->power_lock); if (--vc4->power_refcount == 0)