Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp963448ybi; Fri, 14 Jun 2019 06:23:12 -0700 (PDT) X-Google-Smtp-Source: APXvYqzfYKs+eHSQRcJXjS6ow7MD5zjyRBbM8AsXZtNBJmQFC3qsJVsL3nXlgeA/1b9+N+mjd95K X-Received: by 2002:a63:610d:: with SMTP id v13mr35292778pgb.341.1560518592442; Fri, 14 Jun 2019 06:23:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560518592; cv=none; d=google.com; s=arc-20160816; b=Fwh4Qs1ET4LDTIoHpNkCMRWmboxRK7cHDjzk+8sr7h9Xid0pRonNklLxRnnD7iLMpP YA8qF8UbB8HAqOpa6RJSzb7D0YqTaVfenj/87AnnV0+FmHIz27CFa3WPlKsvaK41lK/a aHAC4OLFPNWGlo55j2mvPr7lKvGLZZp/ycs6PNP+hvapteqyPnwAeVpgAJ8FWhnP+g0V y9HyCnTyfXNsKDKExY2AKFfyBGNDfKRVdLloK0fz8u9ItLFg9M8xp1B3L0j5rwPPVbGG EPm7pmLRRjbHWY9UikIlS9XUwH4Dc/zx9Sau4JepnWx22XsXGcW0wtnA7oQ2Wpz71A+I uQXQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=BLef20GVw4MoTfiVzpLfCs64UYHDEIOk/MMjB+e9V0s=; b=N0Wb4Y6YY2GdPaQqpOBOBR0TY+GnDvlk9sOrHNYYuGVfkMwoVQdcb9aeKO1hzpmhOz eCjS8xDjPuxfLvDmyNlrNDOuGVD9ml2S7IJ/BtAYN+uEzcI203gW+9VWLt1K9NpXJphd wDapu6AJf6OonhMbuA/wx1sK+/E4qXLtciREwF6GA0fRJ5zSxvVUIJDHtxfFCwScWIqF RSeN21EtBlwkoBO1+k3maACpZ4h+IfUZJRFZ0Fjugz05W/jTKAdTenMOCmo7IoCl5ODU Q/n9Uy7Q+xd4wQs1LIPC+EdHgZk1kVjuXAMhh6aEwP+kJLjK94xHmgaAszls9KaaOUW9 E79w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=sUp4PNm0; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d3si2640116pgc.299.2019.06.14.06.22.56; Fri, 14 Jun 2019 06:23:12 -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=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=sUp4PNm0; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728170AbfFNNWA (ORCPT + 99 others); Fri, 14 Jun 2019 09:22:00 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:38194 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727979AbfFNNV7 (ORCPT ); Fri, 14 Jun 2019 09:21:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Transfer-Encoding :Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=BLef20GVw4MoTfiVzpLfCs64UYHDEIOk/MMjB+e9V0s=; b=sUp4PNm0UlGY6gGWIuw3RPxmUV Adb3VTZgQSN7aSag0MwXLaRvK0LiJeN7csWmb4E+CvX+R6KS0yOUwTAp70G9/HUhNmKEe5qZRyhaU xa/jKBkVbLf+pt2xlw+t4sbbscFf+9nFYhJvBTxSHD6dxs943UC9blcGOrKqFI2UuvD+O5HlLx0K7 aPysM441FvEEEdCbsYthyqVghB9SFas4CbTIU9jVMHgyj+8SrqD2rCtbSYK/FBZPsY0ufzAUdrBZX wG6ydnj3Sj2jWTTA2TyVZ+oshoU9pSw4MjsMDNAgnPaOG0w2UrwRsZ2HsTHh8IHQND00uHzCM+WiP DwmBRIww==; Received: from j217100.upc-j.chello.nl ([24.132.217.100] helo=hirez.programming.kicks-ass.net) by bombadil.infradead.org with esmtpsa (Exim 4.92 #3 (Red Hat Linux)) id 1hbm9T-0007v7-MV; Fri, 14 Jun 2019 13:21:55 +0000 Received: by hirez.programming.kicks-ass.net (Postfix, from userid 1000) id DDD2E2013F73E; Fri, 14 Jun 2019 15:21:53 +0200 (CEST) Date: Fri, 14 Jun 2019 15:21:53 +0200 From: Peter Zijlstra To: christian.koenig@amd.com Cc: daniel@ffwll.ch, l.stach@pengutronix.de, linux+etnaviv@armlinux.org.uk, christian.gmeiner@gmail.com, yuq825@gmail.com, eric@anholt.net, thellstrom@vmware.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, lima@lists.freedesktop.org Subject: Re: [PATCH 3/6] drm/gem: use new ww_mutex_(un)lock_for_each macros Message-ID: <20190614132153.GR3436@hirez.programming.kicks-ass.net> References: <20190614124125.124181-1-christian.koenig@amd.com> <20190614124125.124181-4-christian.koenig@amd.com> <20190614125940.GP3436@hirez.programming.kicks-ass.net> <6f2084ae-61d5-8cb9-c975-901456eed7e3@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <6f2084ae-61d5-8cb9-c975-901456eed7e3@gmail.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jun 14, 2019 at 03:06:10PM +0200, Christian K?nig wrote: > Am 14.06.19 um 14:59 schrieb Peter Zijlstra: > > +#define ww_mutex_lock_for_each(loop, pos, contended, ret, intr, ctx) \ > > + for (contended = ERR_PTR(-ENOENT); ({ \ > > + __label__ relock, next; \ > > + ret = -ENOENT; \ > > + if (contended == ERR_PTR(-ENOENT)) \ > > + contended = NULL; \ > > + else if (contended == ERR_PTR(-EDEADLK)) \ > > + contended = (pos); \ > > + else \ > > + goto next; \ > > + loop { \ > > + if (contended == (pos)) { \ > > + contended = NULL; \ > > + continue; \ > > + } \ > > +relock: \ > > + ret = !(intr) ? ww_mutex_lock(pos, ctx) : \ > > + ww_mutex_lock_interruptible(pos, ctx); \ > > + if (ret == -EDEADLK) { \ > > + ww_mutex_unlock_for_each(loop, pos, \ > > + contended); \ > > + contended = ERR_PTR(-EDEADLK); \ > > + goto relock; \ > > > > while relock here continues where it left of and doesn't restart @loop. > > Or am I reading this monstrosity the wrong way? > > contended = ERR_PTR(-EDEADLK) makes sure that the whole loop is restarted > after retrying to acquire the lock. > > See the "if" above "loop". ARGH, the loop inside the loop... Yeah, maybe, brain hurts.