Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp920561ybi; Fri, 14 Jun 2019 05:42:42 -0700 (PDT) X-Google-Smtp-Source: APXvYqxbQEaCvKZIrXAIwUV+ei85qUxd3oQVl4hlWd+yd6t1F7i/xC9xoQ/OVCTmYyfzegRTX35J X-Received: by 2002:a63:1d53:: with SMTP id d19mr35800549pgm.152.1560516162656; Fri, 14 Jun 2019 05:42:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560516162; cv=none; d=google.com; s=arc-20160816; b=yYwb9mQKz8V+Zwb2rreR9cQdDjhl3rDYubweYlwDm9E9PpDs4w5WBwyKFARqDQ22oj vbIkY22ObZhuDh5FHVEWuHmVZ7jiGlU9LNkUfBaY9FNn96ctO77qP1QAStEfMlbdlb2O lzjVQifreiy7t/VGJtWva6pOCxY5vhpxMH5DLDEa+wA6sra0nGQjsfDbOJqkba/T9oLN u02FjRtyn1BConKCdG47A5v19Wo+9TstxqQIjQzgvMX1BpDioTn9kwbvB6wqZOyMM9zI +ZLxgwCZOO17kkDEZIt0HgRN8XRW4SqTyWkV++j0aDkyc33JMX5Mv/oegjGVrmhmPZpb 3yPw== 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=ikrEbSutjHRTcQQg/Oha1wtsctApdZhOcWN+4xePnrs=; b=CH6WdclJyb3j7DtZcezWv/UFFDxnqpGo2b88lzxXc/Yujw7JkTWo44heSFUHkrqFwn LgVntKnkbhUHlbtxUf+djQFQoBsgUSKsc1VZpNsDAFaNnhMMCZODnEpo76OpUIYq2zut ptVCCb9ckpKRi37z1mjZyvPxmusd0ZPyhpicNeWciy/M0P7wdve29kfA9hu3Uz02ctYs e2ndu+v9r6ZUgjd6t1YPfAQxwf6I0YBKhE8bcmPRhuj1QvrGaGsWrAJli6VMs5tB2HJR 0EHhQyAjHsFkHsAabYaYyBiMwwJFHgtJ8HvyC6bjQO8W1iX7Ol3N0n8hk4tJu3WdiCaV iz5Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=J4wmh8s2; 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 33si2137607pld.265.2019.06.14.05.42.27; Fri, 14 Jun 2019 05:42:42 -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=J4wmh8s2; 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 S1728034AbfFNMlt (ORCPT + 99 others); Fri, 14 Jun 2019 08:41:49 -0400 Received: from mail-wm1-f68.google.com ([209.85.128.68]:40309 "EHLO mail-wm1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727905AbfFNMle (ORCPT ); Fri, 14 Jun 2019 08:41:34 -0400 Received: by mail-wm1-f68.google.com with SMTP id v19so2173074wmj.5 for ; Fri, 14 Jun 2019 05:41:33 -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=ikrEbSutjHRTcQQg/Oha1wtsctApdZhOcWN+4xePnrs=; b=J4wmh8s2eFE78lNG3SgNS9fKgrTvJi8/54g0IibJPJZZLJSZZroXgvM3cDQBfax8gC BI0uYyZq8q5SE+NG2+C8YcNagSzCtbkp1rHtnOpRlGdSUODFpU5nfNb3iC9TX9wPwyew 43aXDF8/CA9PR86IJm8dsl6uzj4ZyRKba312BUdmjUrVObB2pOxgt4h/veMHB3y3LuvR vbWfh1k0LPuH0co5IF4onLQmH0BxKNWm6j/T2nqQUKLYlM1wkSyYqdj2/+K53Kl2RcS9 dZEpfI1sRPZhEdIDHoHIDrD4gMlw9sWFF9uDD2bdNzXIWFkXcSMnkaggJHataqIUW5+W Jycg== 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=ikrEbSutjHRTcQQg/Oha1wtsctApdZhOcWN+4xePnrs=; b=C1ClqH7HvenmQxJa/ZCaSuzbCmx96hqOqDIQ6p4kysaQFYlLBNAf6IxyDSt25YuvH8 doyamJv2x4kZax2e1kvznGWUGEfkSuUMrwqAhPHsFPH8wDEL+WoYwHG2DqiSsiCSLBhO bD1Gc0CVhrZYwWySd/O0FVZ7dcbPW+GN5ptmbuQa4+5MODoaUtekgSsgxTCA8/tlEADp T11pUt/cERPSkkBPT/0shrTxIIPk/wLcfFLt2FzksGSp/XkOGa+paUTEw6y7quH45Iae acRN1hoyxE11QWghLzUtmPgHYb/DTFFrOEsSauRMg5KWMystCnwgK/Xdy3z0mjb4qkGL i/Og== X-Gm-Message-State: APjAAAVoEZphTUJK8ahDPlpXRDQpyhlhJweNAIZGvve51GDRSn+9c73G fVXCU0t/8v3phuGD2oxcySQ= X-Received: by 2002:a1c:b68a:: with SMTP id g132mr8217905wmf.66.1560516092658; Fri, 14 Jun 2019 05:41:32 -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.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 14 Jun 2019 05:41:32 -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 5/6] drm/lima: use new ww_mutex_(un)lock_for_each macros Date: Fri, 14 Jun 2019 14:41:24 +0200 Message-Id: <20190614124125.124181-6-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/lima/lima_gem.c | 41 +++++++++------------------------ 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/drivers/gpu/drm/lima/lima_gem.c b/drivers/gpu/drm/lima/lima_gem.c index 477c0f766663..6a51f100c29e 100644 --- a/drivers/gpu/drm/lima/lima_gem.c +++ b/drivers/gpu/drm/lima/lima_gem.c @@ -151,43 +151,24 @@ static int lima_gem_sync_bo(struct lima_sched_task *task, struct lima_bo *bo, static int lima_gem_lock_bos(struct lima_bo **bos, u32 nr_bos, struct ww_acquire_ctx *ctx) { - int i, ret = 0, contended, slow_locked = -1; + struct ww_mutex *contended; + int i, ret = 0; ww_acquire_init(ctx, &reservation_ww_class); -retry: - for (i = 0; i < nr_bos; i++) { - if (i == slow_locked) { - slow_locked = -1; - continue; - } - - ret = ww_mutex_lock_interruptible(&bos[i]->gem.resv->lock, ctx); - if (ret < 0) { - contended = i; - goto err; - } - } + ww_mutex_lock_for_each(for (i = 0; i < nr_bos; i++), + &bos[i]->gem.resv->lock, contended, ret, true, + ctx) + if (ret) + goto error; ww_acquire_done(ctx); - return 0; -err: - for (i--; i >= 0; i--) - ww_mutex_unlock(&bos[i]->gem.resv->lock); - - if (slow_locked >= 0) - ww_mutex_unlock(&bos[slow_locked]->gem.resv->lock); + return 0; - if (ret == -EDEADLK) { - /* we lost out in a seqno race, lock and retry.. */ - ret = ww_mutex_lock_slow_interruptible( - &bos[contended]->gem.resv->lock, ctx); - if (!ret) { - slow_locked = contended; - goto retry; - } - } +error: + ww_mutex_unlock_for_each(for (i = 0; i < nr_bos; i++), + &bos[i]->gem.resv->lock, contended); ww_acquire_fini(ctx); return ret; -- 2.17.1