From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C345FC02180 for ; Wed, 15 Jan 2025 11:13:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 577346B0083; Wed, 15 Jan 2025 06:13:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5011E280001; Wed, 15 Jan 2025 06:13:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3C8156B0089; Wed, 15 Jan 2025 06:13:45 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 1D27D6B0083 for ; Wed, 15 Jan 2025 06:13:45 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id C2BB1812AE for ; Wed, 15 Jan 2025 11:13:44 +0000 (UTC) X-FDA: 83009425968.02.1CA7E87 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf21.hostedemail.com (Postfix) with ESMTP id E9C101C0009 for ; Wed, 15 Jan 2025 11:13:42 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=WIuZxaMj; spf=none (imf21.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736939623; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=CjtWhMazKVntCnEOZ6/098kZk0YtMPvn0ZbUeDzCk6I=; b=53Av1Wcf8JKvE3cXatr9uuO8SfPICxROLz8VaENnESBGJGp21DBrR01BntXw9ytqD1s8pb 5AbTcVKZCHjvA7x9VaNEFn0nEm0MGgRmVo5hHE7bxN7o7xLU3HkALdyeoDhAOIL6qAEQqs uvhBSDSbLsLpUzUjjQFRe1cXGoQYg94= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736939623; a=rsa-sha256; cv=none; b=1E47SnmqEE9w+e7UKEmBJViLhQgO9ZyWP0fqpD9MCJUIE1vuKcyEQJAKnKnEyNGA25cReX CDTbs89kJCKm6tQmoq5jQBLrwi6fQkWsmLPmWsUSM/sacPCgY//EVnr/Yq8J1Ilmzx13pQ ODy+5FMMU/YWGe8NqUwmGS77t+jEyrM= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=WIuZxaMj; spf=none (imf21.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=CjtWhMazKVntCnEOZ6/098kZk0YtMPvn0ZbUeDzCk6I=; b=WIuZxaMjca6aWZLMo8Di4AXxi/ 8F26YLPSR6ce0nA/XRxBy101qEOG2wQGBBKW0xLff6C8IoHJFaVEz0vD2DUdRp/1n5Uvpj9dAXZ4J /xBshzrNutiyYjiQX0Vsz81BYb4UDgo2YoP7Mf7MlO6vcyqM+JpTGDJSo3Yrf+I7uvcbc4ka+U0T4 BNfIWFB1fYYJFQiGvy+2/j+7aAnpbWXsqtbNw1oX2tGcRk5Ic7Wxw+e9LV66B9KUeIbMiL02jlKJd vVvcCh8AaJ09MWwz3asm56OLfVFcEge2v49W3R4ZjMrpIM8FUg8+v/VsPNni8PjF4ExuO8+hDInGn fKvj6Atw==; Received: from 77-249-17-89.cable.dynamic.v4.ziggo.nl ([77.249.17.89] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux)) id 1tY1L4-0000000CHtL-2Tsm; Wed, 15 Jan 2025 11:13:34 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id 38004300346; Wed, 15 Jan 2025 12:13:34 +0100 (CET) Date: Wed, 15 Jan 2025 12:13:34 +0100 From: Peter Zijlstra To: Suren Baghdasaryan Cc: Mateusz Guzik , akpm@linux-foundation.org, willy@infradead.org, liam.howlett@oracle.com, lorenzo.stoakes@oracle.com, david.laight.linux@gmail.com, mhocko@suse.com, vbabka@suse.cz, hannes@cmpxchg.org, oliver.sang@intel.com, mgorman@techsingularity.net, david@redhat.com, peterx@redhat.com, oleg@redhat.com, dave@stgolabs.net, paulmck@kernel.org, brauner@kernel.org, dhowells@redhat.com, hdanton@sina.com, hughd@google.com, lokeshgidra@google.com, minchan@google.com, jannh@google.com, shakeel.butt@linux.dev, souravpanda@google.com, pasha.tatashin@soleen.com, klarasmodin@gmail.com, richard.weiyang@gmail.com, corbet@lwn.net, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@android.com Subject: Re: [PATCH v9 11/17] mm: replace vm_lock and detached flag with a reference count Message-ID: <20250115111334.GE8385@noisy.programming.kicks-ass.net> References: <20250111042604.3230628-1-surenb@google.com> <20250111042604.3230628-12-surenb@google.com> <20250115104841.GX5388@noisy.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250115104841.GX5388@noisy.programming.kicks-ass.net> X-Rspamd-Queue-Id: E9C101C0009 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: n9iybdtp8q9tnakxmxjd7jw8gi5efzt3 X-HE-Tag: 1736939622-814297 X-HE-Meta: U2FsdGVkX19vaN6OAvsCeWPQANwDzbEqq+5mXyNFDsNjy74uHX/vJnbE0R8h0No2x/L4BHpxd8ynklpixoYR0IbTiqCxQNztHtcMDveuOXS4SYr5LAAHwB+MoJJjIM9crx2y295vbVy28eqsSFlCaIruRQsTFYphvDGJk8nksdG7Zk6FMWTX7snvEZoA59KRRdfPa9tMEjIxI6x77LIwnnTUsP7dyARYOw6ZZIlN8AOT9ChWv+PPCea19i2um5FtFAG77nX2plJhk21XIIC/v+Rwr/0yIuYatK5MNM+1KEGbbwXFGhW0EoAPW/99nRqz7wEA930B3mcZAqMKTQSoTGJg8Ww3igtDkPJxcX4Lp3T871Z1aQwe9zAd8HPe9Ly/IqQo5/GrzPR7UPodOlh7p8UW+PdOiaYBYdzB5Z0KuS70mx5zgo+AkGseEFIWF0n3pXUQubhygne6CYDkO3Rx6ipbdBN8/UKkGKBDRvrBLfJSMMccpPXzh83av8Dhp1k6s2lRqwE6rVNh+55Id110OGOBqn6ma0rmPdjvFpdfscKEJFk0Q4I2VwimBu8IEBqVkK3C/iEYIFWt3d+ih6oYsUKF3nd8hzuhFUl5bLppI3sR9VlO2c3HBQDVpXAlscZq0DN95WKUIM7INEXovSG3PGVCCTdCaHghNnsR/Qjdbw4kVa2gcWS1D9hBIk+4xUBDY132Fm8VCsN7C/1p3H+U1JfQvvcx9aSPruLuwOwfhDu9Hxc2rWrde28IvjCz+htwHr5YRETWQImKiYKUYPzCa6iLbAdVmFCssPBD+10lO7goyh6bXW2eBSFYwPM7dEjGXmd8IxJnGXiFZ7fVTCO8YTTR5XpHxuPTzcthl9D0ZarrYJ7NafN0wUCmOWIwruK+ofTkb9Nl8gkPqH5xZAzlCtNDyzXKRCAeRO8DANqLwB/yWMW941nfD+1UzZyKWEx3mCgn3PoOlVxQqBMSSYn iXbypwjX XRZlhTHVWjnO7+oWl9KRqqE2le8muXCTsdOB6KBDDnX2ydYLrTLkrQ2xxW21b+q7npAmdmBmXx2tAt7ocZwduZ69oqV1GCeKsgCwwMtJfVjRtephzqILEhxwMcPyHvu5grTxwb9cwzRydldPnmb9oMcSvJ6GVPXhR6/1p3FAIhyWsuTtQN1bSrrws8/d3udJy23u+nObIVFCjpdQCaJuQ+kcVtgUJNGNAICT0P2h+QKJ8yI9cobrAW/K8RyZLvvPvoYIeCt/YtsaozbM332mQ2PHGbgtkrRrRwelKfsiKyLMcqfY9dz1IF+VGaA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, Jan 15, 2025 at 11:48:41AM +0100, Peter Zijlstra wrote: > On Sat, Jan 11, 2025 at 12:14:47PM -0800, Suren Baghdasaryan wrote: > > > > Replacing down_read_trylock() with the new routine loses an acquire > > > fence. That alone is not a problem, but see below. > > > > Hmm. I think this acquire fence is actually necessary. We don't want > > the later vm_lock_seq check to be reordered and happen before we take > > the refcount. Otherwise this might happen: > > > > reader writer > > if (vm_lock_seq == mm_lock_seq) // check got reordered > > return false; > > vm_refcnt += VMA_LOCK_OFFSET > > vm_lock_seq == mm_lock_seq > > vm_refcnt -= VMA_LOCK_OFFSET > > if (!__refcount_inc_not_zero_limited()) > > return false; > > > > Both reader's checks will pass and the reader would read-lock a vma > > that was write-locked. > > Hmm, you're right. That acquire does matter here. Notably, it means refcount_t is entirely unsuitable for anything SLAB_TYPESAFE_BY_RCU, since they all will need secondary validation conditions after the refcount succeeds. And this is probably fine, but let me ponder this all a little more.