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 DF2FCCFA756 for ; Sat, 5 Oct 2024 16:07:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 452866B02C8; Sat, 5 Oct 2024 12:07:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 402046B0351; Sat, 5 Oct 2024 12:07:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 255446B02CD; Sat, 5 Oct 2024 12:07:35 -0400 (EDT) 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 00FB36B02C7 for ; Sat, 5 Oct 2024 12:07:34 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6F89C161018 for ; Sat, 5 Oct 2024 16:07:34 +0000 (UTC) X-FDA: 82640028828.12.975B253 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf26.hostedemail.com (Postfix) with ESMTP id C5848140016 for ; Sat, 5 Oct 2024 16:07:32 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="Rzb/hdPm"; dmarc=none; spf=none (imf26.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728144429; a=rsa-sha256; cv=none; b=Qax5pw2XuYw5eauDbZ45t0ct4Vbqo2Ih8YYH1w+eWaArzEUswfnT3gAcf1ltolxHaleG9n fLHYqCPyb6DhWylJRVnSwXck3TFkgxIpaMD6LgyhIlWg96tmCacqI7tAr5DULI8lGDhE/i AJD+ZCNSLDzm9IPWbmoBAyTUE/XyzmQ= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="Rzb/hdPm"; dmarc=none; spf=none (imf26.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728144429; 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=tVz9zpYWjrEx98t10FsnvqgqUywp3znOijDg2YUcJ5Y=; b=qLQGk+CUeTvKsJH16nXFD9ZB+Pb8A7VprNNS2p4KWvvsAZH7x+GEqatwBw48pFWqhNNBxR D+SvVKCRNxW7Pig4DjyA6A06Zj+VlE5agiOo3Bpt/2v9MynZByHhN+xGDg3E/vC4joVTMp Llh2nfRbnsr/vPx1N/UYx21RtqJzeKY= 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=tVz9zpYWjrEx98t10FsnvqgqUywp3znOijDg2YUcJ5Y=; b=Rzb/hdPmp9B6sNyqAMCukzE6dN vQxnklM6BMIwgGyip3D5FrAXTkPvKRF4ntsj/MnTb/PZuQVBLH0GI1z6w8TXm+atdf85R4VT1Qbrw g0K9oF0EgCVfsj5sqAJ34ngzulehQukovGBvYIBvx5SkplLehEIh0EFUT9iNMms/iX3/PyXku8SJR 7gqmrSm8rj2kfroXQABmnrk8ddQ4VzBZSd6IKbkd4QsS8QusXdSdZ6LPyITNR4zp3tQgOhyPiDRyD 2i+3FdxM+NvlE98eqsmYXJTJk2n2VLhITgVFK/vWLJaCeoA+tfMwp6QfcjFgq+QgDIdIBsLKnRd/Z pzesIxYA==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux)) id 1sx7JT-0000000DAoP-2nvF; Sat, 05 Oct 2024 16:07:24 +0000 Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000) id D9B55300777; Sat, 5 Oct 2024 18:07:23 +0200 (CEST) Date: Sat, 5 Oct 2024 18:07:23 +0200 From: Peter Zijlstra To: Mathieu Desnoyers Cc: Boqun Feng , linux-kernel@vger.kernel.org, Linus Torvalds , Andrew Morton , Nicholas Piggin , Michael Ellerman , Greg Kroah-Hartman , Sebastian Andrzej Siewior , "Paul E. McKenney" , Will Deacon , Alan Stern , John Stultz , Neeraj Upadhyay , Frederic Weisbecker , Joel Fernandes , Josh Triplett , Uladzislau Rezki , Steven Rostedt , Lai Jiangshan , Zqiang , Ingo Molnar , Waiman Long , Mark Rutland , Thomas Gleixner , Vlastimil Babka , maged.michael@gmail.com, Mateusz Guzik , Jonas Oberhauser , rcu@vger.kernel.org, linux-mm@kvack.org, lkmm@lists.linux.dev Subject: Re: [RFC PATCH v2 3/4] hp: Implement Hazard Pointers Message-ID: <20241005160723.GI33184@noisy.programming.kicks-ass.net> References: <20241004182734.1761555-1-mathieu.desnoyers@efficios.com> <20241004182734.1761555-4-mathieu.desnoyers@efficios.com> <20241005160444.GA18071@noisy.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241005160444.GA18071@noisy.programming.kicks-ass.net> X-Rspam-User: X-Stat-Signature: 987cc86awasxbc4befbecejzg5hcxptt X-Rspamd-Queue-Id: C5848140016 X-Rspamd-Server: rspam02 X-HE-Tag: 1728144452-801874 X-HE-Meta: U2FsdGVkX19dHSFj7lrTJ+t2+uAsmmwgqhdNWXQMmO0dDbpQZ7K9LHlgDO/OBTwM0nnoloEFgtVwUSI5xxtmMrrxFQhNSFMCY/vJe4d9B53sDSb6tYL9O8Gbqmoa9U+5I43XJoFljAW4D/VriXgWoRSoQ4igVLglOKdfQT5R2MSerVibS9pmA7snIz5oFWsAGRTUHyI+hr56rwOMnAf7PWJMvoRefQEDE1PZlx3gIy1NYZAeO7HOWf9qd1hC4+Ffv+y45VhOAmAgSpbaoKprGhZzlpFgBuqXAOeA4eO9kybLE0pO7TwIHl3I6evhRmXyLIFEdcrm20eMMyY5Ej6+7DDWZr/cfdNqMmER3xm47D+5ke9wrF3UjjYjmrq0/28qRNYgirs/kun7O3pxWaRFGNit9xVPn930K5dp+QbAoyiOApzbDcFtsOhmYG02yGmu4JeaXWmsdnvvWSVhautQ2thAyp/jGgJFRrRfTMV2x0JcRMtAeo0k03tlgsFvhXPKC2cbOog2iUNRbqlFbht0R5qcvzoOIvp9uUuTsg2P8J+032fD6cJjjBwr9hLVuL572x8VqqUMO3BfT6gutF8oz2MccBMjBLo/LVlhUdHHuaRFrP53LmnwGBZvEMWDtYibTAOoyAbBW+idwZyLw20TmJme3NHBQxcrVU1JKmuS1wRgIzpbmMe55AwTctgAlpVoSfo4deisC4bx4kR7S3M8rXtQGiaPQIhP7vKESol1GaVErxjFTOIrI9waPsXV/ozCKLsQBR+VvyM4iPuZyG4wgJMv0qnEqC03qsrrTia5mKkMN8QhjK+ne8dq9BaFgZvUpNarL+UiqvLKFT21VZyKft+NwKnpYPAuEzZWaym+S2tYe7e//y/Nu9P1ruk6m4hFY2rJirfwpZv7MroGDCrSIe1xUQYvROtsMlC8/OJxtrGqGg//nA2pZPMN7zy1fc+fKOXeNuuBSMTSep5t6o5 GWtTJCZM 0lxiJQGi4iaePiE33K9PRhLj3vMGbte2jkZ4ELVembRtIie2YAvLEt2taQOzsJyxsifMg3Qz7xMFd/vYQDQywtsPQ8nubhPl91pPThT8XY3/JnT6U0YK/TvBLLqY+HhymBWs1Au383Hu93ghx3QIs302krTRiA8dtax34Pixzl0UoahR8ptflzz8QWPRZQblkBYJO13Pyxf7ZBg+y5KrNZN6eOX2UI83tc/hskFp8Ab+03JKMVdrUMlFNsGAf9xdCOL4NhmszHDnQllo= 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 Sat, Oct 05, 2024 at 06:04:44PM +0200, Peter Zijlstra wrote: > On Fri, Oct 04, 2024 at 02:27:33PM -0400, Mathieu Desnoyers wrote: > > +void hp_scan(struct hp_slot __percpu *percpu_slots, void *addr, > > + void (*retire_cb)(int cpu, struct hp_slot *slot, void *addr)) > > +{ > > + int cpu; > > + > > + /* > > + * Store A precedes hp_scan(): it unpublishes addr (sets it to > > + * NULL or to a different value), and thus hides it from hazard > > + * pointer readers. > > + */ This should probably assert we're in a preemptible context. Otherwise people will start using this in non-preemptible context and then we get to unfuck things later. > > + > > + if (!addr) > > + return; > > + /* Memory ordering: Store A before Load B. */ > > + smp_mb(); > > + /* Scan all CPUs slots. */ > > + for_each_possible_cpu(cpu) { > > + struct hp_slot *slot = per_cpu_ptr(percpu_slots, cpu); > > + > > + if (retire_cb && smp_load_acquire(&slot->addr) == addr) /* Load B */ > > + retire_cb(cpu, slot, addr); > > Is retirce_cb allowed to cmpxchg the thing? > > > + /* Busy-wait if node is found. */ > > + while ((smp_load_acquire(&slot->addr)) == addr) /* Load B */ > > + cpu_relax(); > > This really should be using smp_cond_load_acquire() > > > + } > > +}