Received: by 10.223.185.116 with SMTP id b49csp545607wrg; Wed, 21 Feb 2018 02:55:35 -0800 (PST) X-Google-Smtp-Source: AH8x227YrC3jZX96QbNzGqoKGF1CiBRKKaTT/y1TOtGxE/qCs2iDjz0g7VlQyP2qI3TfZgjE8PSP X-Received: by 10.98.77.66 with SMTP id a63mr760887pfb.112.1519210535305; Wed, 21 Feb 2018 02:55:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519210535; cv=none; d=google.com; s=arc-20160816; b=K7x8aclesIbRAasvit2f08ZTUshZiM8Li+n4V6dYCQEXGot2M7AmAOLxgCLkD0bV9g b23iZOUwdkb6phchEpnMNj/ADRmyVd1dY/uctMfd2CRmxb/555n4CS9BIVhqlkGybTuq yPU06ChzET80fqEgUQVzOJb3HcMR91a3TbPlc7Ujz3K/eNQl12EYHuHvCaCQLePY+l61 rPATrdH79dZSDWZgGh+48ZG37ZIkPnKhwyH885Glb78Of9EP9LiipIT8TzVNGytbeeN6 3t+poFTT8+ZLfbx5eglC7IPQqwkWgkmiTefaHHJPGt34lb2twuhfiWMsVRrO2nf8MBdv hPiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:arc-authentication-results; bh=7r8kYihlO2LW35GxmSnyAnozG4MCWXtmjr5zxFmk44g=; b=bG0sGAsQGo4SYW2SoEx8iJG5YIQZXZQvgqnQlWAh9eiWMR4qv7cky9QZF9UArN7YA8 9MMFFJ6sG9p6MAYmq5LDvwJHI875Vur9KBXkwPDbwMHc8GCtuDNICv5wsdCbTHRI329W eFCrDtsmUOKVYM5NG4Gfqy0IswTkgbnOY5A24xIw9jRqYD+zCzKcuk6OmrmX9MbmeB9c vlKoHXqlvLu60PRioiVoWdCLgmFTXy58OvgEOmUCZXGjIhtyRo4xjicC6hu8TnbL6wAL hFUftgS/s+lkeCwzIkZg7Vm5koCDMdMapjX70/wAAy0CX7N5Utk6Jb26S/sRhHLz6Lk5 pytQ== ARC-Authentication-Results: i=1; mx.google.com; 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 bg8-v6si1361711plb.748.2018.02.21.02.55.21; Wed, 21 Feb 2018 02:55:35 -0800 (PST) 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; 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 S1753763AbeBUKyO (ORCPT + 99 others); Wed, 21 Feb 2018 05:54:14 -0500 Received: from mblankhorst.nl ([141.105.120.124]:35566 "EHLO mblankhorst.nl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751640AbeBUKyM (ORCPT ); Wed, 21 Feb 2018 05:54:12 -0500 Subject: Re: [PATCH 1/4] locking/ww_mutex: add ww_mutex_is_owned_by function v3 To: Peter Zijlstra , christian.koenig@amd.com, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20180220125829.27060-1-christian.koenig@amd.com> <20180220131253.GF25314@hirez.programming.kicks-ass.net> <8fd80334-4d0e-8ed0-8a09-02a7e36a0eae@gmail.com> <20180220135709.GD25201@hirez.programming.kicks-ass.net> <20180220145413.GF25201@hirez.programming.kicks-ass.net> <2dac8ec9-c54a-7dd1-af4e-62f2bc1a959c@gmail.com> <20180220152158.GH25201@hirez.programming.kicks-ass.net> <20180220235621.GD22199@phenom.ffwll.local> From: Maarten Lankhorst Message-ID: <9d782099-567f-38cb-391a-3c2a50cd5edd@mblankhorst.nl> Date: Wed, 21 Feb 2018 11:54:11 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <20180220235621.GD22199@phenom.ffwll.local> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Op 21-02-18 om 00:56 schreef Daniel Vetter: > On Tue, Feb 20, 2018 at 04:21:58PM +0100, Peter Zijlstra wrote: >> On Tue, Feb 20, 2018 at 04:05:49PM +0100, Christian König wrote: >>> Am 20.02.2018 um 15:54 schrieb Peter Zijlstra: >>>> On Tue, Feb 20, 2018 at 03:34:07PM +0100, Christian König wrote: >>>>>> OK, but neither case would in fact need the !ctx case right? That's just >>>>>> there for completeness sake? >>>>> Unfortunately not. TTM uses trylock to lock BOs which are about to be >>>>> evicted to make room for all the BOs locked with a ctx. >>>>> >>>>> I need to be able to distinct between the BOs which are trylocked and those >>>>> which are locked with a ctx. >>>>> >>>>> Writing this I actually noticed the current version is buggy, cause even >>>>> when we check the mutex owner we still need to make sure that the ctx in the >>>>> lock is NULL. >>>> Hurm... I can't remember why trylocks behave like that, and it seems >>>> rather unfortunate / inconsistent. >>> Actually for me that is rather fortunate, cause I need to distinct between >>> the locks acquired through trylock and lock. >> I suppose that would always be possible using: >> ww_mutex_trylock(.ctx=NULL), and it could be that there simply weren't >> any immediate uses for a !NULL trylock and it was thus not implemented. >> >> But that is all very long ago.. > I think we simple never had a use-case for interleaving ww_mutex_lock(ctx) > and ww_mutex_trylock(ctx). Nesting multiple trylocks in ctx-locks happens > plenty, but not further: > > The common use-case for that is locking a bunch of buffers you need (for > command submission or whatever), and then trylocking other buffers to make > space for the buffers you need to move into VRAM. I guess if only > trylocking buffers doesn't succeed in freeing up enough VRAM then we could > go into blocking ww_mutex_locks which need the ctx (and which would need > all the trylock-acquired buffers to be annotated with the ctx too). TTM > currently tries to be far enough away from that corner case (using a > defensive "never use more than 50% of all memory for gfx" approach) that > it doesn't seem to need that. > > Once we get there it should indeed be simply to add a ctx parameter to > ww_mutex_trylock to fix this case. The TTM side rework is definitely going > to be the much bigger issue here ... > -Daniel Yes, I think fixing trylock to take a ctx parameter would be a better fix than ww_mutex_is_owned_by..