Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp920491ybi; Fri, 14 Jun 2019 05:42:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqy5McLOySEB4RSAOvbkx4CrQvtDJTn82xqolv+z1rx6VjZ9SW9orauOEYARGnrxB9QKe5Pw X-Received: by 2002:a65:5344:: with SMTP id w4mr35343993pgr.8.1560516157350; Fri, 14 Jun 2019 05:42:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560516157; cv=none; d=google.com; s=arc-20160816; b=zxWbwueA9lDA2aHhWnUdjSyE5d9phTLzMWZ+RRIRuMtBeqzAbAWLqOWL4cf0W7jkHJ pF0AwJuGSUEKbr6f0EhL0mE0PGuOYaORQqE4JcTaDFvEDr6joqyllh4CDkMs89lIg1/z UG9nu/v4AFuMmPbh6unRxprujiKf06O4+K/nG804HpgiXopreIuRyrQWmoYHUKa1E93V vlxXAoP4PbR5M/FfB/nNNKTtDfTmCzsnJcfMQBB2LYfyJhjKjFw0uXS1yAHkCDJU2r5h /UFTiFdnRv2UzycixXi1MpNj97GVYUD7fJGGRLhiQu/EET9r9tQsnpVatNZXyYBn09V/ CqxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=5qK3v8M0/COPEJ7SsWz/6CEIKUUGZmlWZtaz7Lhp+Ls=; b=pW7DDkVmxM5N5Eg3oSJNJJ/SGWNG8kafln8h4klUr3W/i2rUghJEExxBGC1Z8QF/JT 4PRSCVXQ806kAEbXwshqM2k1fhw92OShgzt3+4DVMOgXLoXZfnrAhnfWhHnwrn5Ma8qS AUe4AhwV3KYdQoNo0mFVO/OkPFeKDOsEX6qf2rhNj37oiflZamKD179iRFNjHIhgJ++s v7lZI2cUrIYI3eDlMHHrQmbwRcBTCPyUy56jNvKIUthB7rv+KPdjvwTBvKRNCvUhpFXx bqDwaaixJ5oiY+mOM6H3HjC847KSHxWRkzJ9ZPkgCx4i+qDIlOpX09M4kGPy6fTr38Mw u21g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PdP8kCT5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f3si2235601plf.261.2019.06.14.05.42.22; Fri, 14 Jun 2019 05:42:37 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PdP8kCT5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727952AbfFNMle (ORCPT + 99 others); Fri, 14 Jun 2019 08:41:34 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:34443 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727892AbfFNMlc (ORCPT ); Fri, 14 Jun 2019 08:41:32 -0400 Received: by mail-wm1-f68.google.com with SMTP id w9so8833505wmd.1 for ; Fri, 14 Jun 2019 05:41:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=5qK3v8M0/COPEJ7SsWz/6CEIKUUGZmlWZtaz7Lhp+Ls=; b=PdP8kCT5pZ4KuRLTSoxZDOpMV9pdkl9OgGbCB5RREx+hw6lGRrZeeEjtwwZX2q7vN3 QHlwzO/9Feq+CAo1OidLVlETLzyZ3/F1BoGXW/ESOq77VmJoQbfgTow6jbZpg0ncFkCN 3E4OMqjqtCGnXGW0fPe139Q5uvVm1LtbwPEEzy3SWD4JEXg5rHZbMl1+8DSwpDaye8ob xJ/yxsr0KAGGq16zjraeEe0RRQBNEf7YO/xyoBgg4ZtptfRKqW1mpgPBbgwbtXHYQUjq fZ4xVaTOHSsjfkOm3zOCoRTeFZPiiM5hZ0EXVdSc/gv1/EorkEtXNZBOqinC2C9icEFl saQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5qK3v8M0/COPEJ7SsWz/6CEIKUUGZmlWZtaz7Lhp+Ls=; b=MDFVqaxZr1LRWl3GWxFyuU++e5Q/hG29wDtjVtWlEsMH9BMKy/q6IcjleUWgczxb2k nxsMDBSojFiW+EPAoB3vX4+vEJAvCwMB5ymzBcajW93Km6N0WwvxRjwNKOmVWwB6Wpga 5IOJ1BOvfWkuzEHEproB2zar8zuz/KFYgOBBdYRZiipytsqfgrUMLGKErS9r2M882uD1 w9k02AzKdhqYdhOpl2WzKuDBdD7kHc5bgH1f2vZTnV633z+lYZBOvDyXw1Ny0DzVJpUK TKqmPBXNw8xFh0S1O6U2tlwHtKOheLaXMo9otOtTIbJOLg8EO5gWYx3D4T8VrZPlhaOB uHvw== X-Gm-Message-State: APjAAAWwMQoL7urwDUjLZcwJWLtjsvakogdA5idHLeGglpqtLGczdQ0P 8RQOFtNlZRsx7c52nXgFxyc= X-Received: by 2002:a1c:7d4e:: with SMTP id y75mr7935115wmc.169.1560516090704; Fri, 14 Jun 2019 05:41:30 -0700 (PDT) Received: from abel.fritz.box ([2a02:908:1252:fb60:e0eb:ed4e:b781:3e9f]) by smtp.gmail.com with ESMTPSA id n1sm2648209wrx.39.2019.06.14.05.41.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Jun 2019 05:41:30 -0700 (PDT) From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" X-Google-Original-From: =?UTF-8?q?Christian=20K=C3=B6nig?= To: daniel@ffwll.ch, l.stach@pengutronix.de, linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com, yuq825@gmail.com, eric@anholt.net, peterz@infradead.org, thellstrom@vmware.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, lima@lists.freedesktop.org Subject: [PATCH 3/6] drm/gem: use new ww_mutex_(un)lock_for_each macros Date: Fri, 14 Jun 2019 14:41:22 +0200 Message-Id: <20190614124125.124181-4-christian.koenig@amd.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190614124125.124181-1-christian.koenig@amd.com> References: <20190614124125.124181-1-christian.koenig@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use the provided macros instead of implementing deadlock handling on our own. Signed-off-by: Christian König --- drivers/gpu/drm/drm_gem.c | 49 ++++++++++----------------------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 50de138c89e0..6e4623d3bee2 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -1307,51 +1307,26 @@ int drm_gem_lock_reservations(struct drm_gem_object **objs, int count, struct ww_acquire_ctx *acquire_ctx) { - int contended = -1; + struct ww_mutex *contended; int i, ret; ww_acquire_init(acquire_ctx, &reservation_ww_class); -retry: - if (contended != -1) { - struct drm_gem_object *obj = objs[contended]; - - ret = ww_mutex_lock_slow_interruptible(&obj->resv->lock, - acquire_ctx); - if (ret) { - ww_acquire_done(acquire_ctx); - return ret; - } - } - - for (i = 0; i < count; i++) { - if (i == contended) - continue; - - ret = ww_mutex_lock_interruptible(&objs[i]->resv->lock, - acquire_ctx); - if (ret) { - int j; - - for (j = 0; j < i; j++) - ww_mutex_unlock(&objs[j]->resv->lock); - - if (contended != -1 && contended >= i) - ww_mutex_unlock(&objs[contended]->resv->lock); - - if (ret == -EDEADLK) { - contended = i; - goto retry; - } - - ww_acquire_done(acquire_ctx); - return ret; - } - } + ww_mutex_lock_for_each(for (i = 0; i < count; i++), + &objs[i]->resv->lock, contended, ret, true, + acquire_ctx) + if (ret) + goto error; ww_acquire_done(acquire_ctx); return 0; + +error: + ww_mutex_unlock_for_each(for (i = 0; i < count; i++), + &objs[i]->resv->lock, contended); + ww_acquire_done(acquire_ctx); + return ret; } EXPORT_SYMBOL(drm_gem_lock_reservations); -- 2.17.1