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 BA63FCF886F for ; Sat, 5 Oct 2024 11:19:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4B3BC6B0370; Sat, 5 Oct 2024 07:19:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 495EB6B0371; Sat, 5 Oct 2024 07:19:23 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 352F36B0372; Sat, 5 Oct 2024 07:19:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 10D676B0370 for ; Sat, 5 Oct 2024 07:19:23 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id C1F788112C for ; Sat, 5 Oct 2024 11:19:22 +0000 (UTC) X-FDA: 82639302564.12.71AA0E3 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf08.hostedemail.com (Postfix) with ESMTP id 2032216000B for ; Sat, 5 Oct 2024 11:19:20 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XDSveQsn; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of frederic@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=frederic@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728127137; a=rsa-sha256; cv=none; b=fA5IMH/r3+1nMb507frR67mfK27vHojdlSVX6SLTIiQDnCHiIGNP/hTSiiyNSAUW8LbipD ekX/l484dz8LKLDWbpT7WZR0hUrEZ2pCktagbYCCH14nUiCQMDXJvyisKz2pSKCM/oTeGV cRAQl+EClG4bvnHsW9qxFD890jeZzEs= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=XDSveQsn; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of frederic@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=frederic@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728127137; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xxA8dwmGZNgEobGq0lwMd96Lc7fLP2khalCDvfgnPrs=; b=0j1FODAJU7KXuXR5HK9Eku0GxHL/JJeLIOYEIoefAtCLAfOHZ+5yJrjuapO7P0eGiU4I50 RzZrykJye8TEoe6wWHzknrBjEk46dBQ/N1s2F6gsGwzTPVv390fOZx5cKwWHLJJ+zFy3h7 PIeOePYjWMh5RxWkuIRiImAXAZQFo6s= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 7FEDBA40083; Sat, 5 Oct 2024 11:19:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 20A72C4CEC2; Sat, 5 Oct 2024 11:19:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1728127159; bh=aX4KouelstMm4b///IUMcecatsDTjQFBqamgA+2W4BI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=XDSveQsnrY+jiyQrTiVjtyuirfXUCqn0eoNjaHl3SE8F7wzup99P2J6eDx9uldHpH yVeBnjKAzP8rZf/Ma4q3yhKS3+I1HDE6tuUOvj5B2zn4drHlCyEE+tMFy7CIqW8Hph agVB9DRDpbvKwhJ/dv2pHwrDtfEm6Njl0tWpi7NXzzHc8GWzpGOCkgDgscEWsEUzeE BsIAZF6CfAtteUp1SxdCrsQhRTopwXkEZOWxrgTaTGkX7C7/DQzUoaim1fgJmP6FFL 2zIC67jn0NZC49ZnXPZgDxoGj2RBoPHZem9lwHyEAqjqtQZlQ9xPzwzSHFnvMZWSZA GIZxQArAHwY1w== Date: Sat, 5 Oct 2024 13:19:17 +0200 From: Frederic Weisbecker To: Mathieu Desnoyers Cc: Boqun Feng , linux-kernel@vger.kernel.org, Linus Torvalds , Andrew Morton , Peter Zijlstra , Nicholas Piggin , Michael Ellerman , Greg Kroah-Hartman , Sebastian Andrzej Siewior , "Paul E. McKenney" , Will Deacon , Alan Stern , John Stultz , Neeraj Upadhyay , 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: References: <20241004182734.1761555-1-mathieu.desnoyers@efficios.com> <20241004182734.1761555-4-mathieu.desnoyers@efficios.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20241004182734.1761555-4-mathieu.desnoyers@efficios.com> X-Rspam-User: X-Stat-Signature: xnqu8p6ktzrobqdzzmtywwwk614owp9y X-Rspamd-Queue-Id: 2032216000B X-Rspamd-Server: rspam02 X-HE-Tag: 1728127160-394120 X-HE-Meta: U2FsdGVkX19k71Jo4nmyaLMaanHNdTkGbtfJVLbioNpkUXhh/3ZdHvSuYsxyBKvQDFWRuzD4l1I5L3erPsg4MDCtiDs02fcbW5HaB6RVGfNZJwDwHp+kHz0KU9mAOjtMW+/1J2jEhlwTgWfGEr557vDWQgRjJwmVN/vRLE3T/Zgld34WbaJSX/5kn9he3Ag3RDLQg373OK3bJN/Pv73MeDtdflDLWj6uBJGzMR8xfK47CbmNvEl7PmU+KpbYH/zQ0vIu8NpNQLu5HprdamPtwAn5/N9v3S45VGiW209bNymeQmgNbmJLVRyx97k1ODcJqYaQa1rvlxKVrsXk/57eL32RBCu3lWcN+RppfAEBIt3hPph9hmHFNjH3Bgvc16AQFm+sEkPdvGHUnx7dUtf35KUEspxau/ZgCr4I58NYY0VYolcFDy0cRe6CI57DilMEeecv7ZCxRFKEMyvRH5tGpL0yrY3uxv6rPnbch0A+J8fRRQTNuOgyW9GY4jNxdJNL/NQXADrJ50rlgyhfuO//zkD8jylA0u2tvPUU9Z4l6J+qSaf7fLg3Z09bmWCblX0QG9IfopLatf3ZHM/JR882diJNczNlq2zqsAs/4mtcG0yO1XOUcUulgFhKb1foHDVMfBw9EGJQ1z9YDeqa3gyZ3lnbcOaO6YGmO/cDdHJ+zN+XtrNS7NPB3mEjLbSE7RWs1cIPOUzjTlghBj2lQE6Ejgbb9Yhsz1JlueJawZaGpxnrWiFELqtYjKqXWj2mma7s5uKv7Bs/CmBHrPcInipJ/zFC6VV3XcaQDfXi9pjmEWqXdTxj1v2WHve6QxRCCytrZPVu1lSds6krAxBMit+QleruihmFuq9on0GdnXDFPYFAibxFEnB6K1i3ZTDHH4gz8wNkQeOgsK7736MxeQl1glpQYd0CgVb/OwkTNtPx3kya67AGheMVr4yTa61auLtnzsAKX8P0e9F7qoxOgLz jGDqowFW 3isGdK7hx6ly6o9I7m6QFxVxHn9sY3xvuqdHEftgL33WbstM+saKoUlaAqSEKKw08sPfSLE1XOHHQXd+cLyF15rO1BqKInmYzasbr/HF6vAweD0+iDJ4onN3RlRfx1/428Ve4CYqUTtZQgF57kY+Nbv727n8sUVvMhHlbBToBGG9uQ8tX9BjLBmct9Lrazk5AarxPjz7ZIYDNkLDtRSAinegfDWyxHO+FkM7/Nhf2+SlNRYm2D6nmqlu5dog0fU19bUoQdJgkdtr7JjOCDcq4K2uRuaC9r0Y4tYNcOSq9rY3rTTvqGKdtAjCO9Q== 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: Le Fri, Oct 04, 2024 at 02:27:33PM -0400, Mathieu Desnoyers a écrit : > +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. > + */ > + > + 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); > + /* Busy-wait if node is found. */ > + while ((smp_load_acquire(&slot->addr)) == addr) /* Load B */ > + cpu_relax(); You agree that having a single possible per-cpu pointer per context and a busy waiting update side pointer release can't be a general purpose hazard pointer implementation, right? :-) Thanks. > + } > +} > -- > 2.39.2 >