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 CF0A3CFB42C for ; Sat, 5 Oct 2024 18:58:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5491F6B02E0; Sat, 5 Oct 2024 14:58:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4F8CD6B02EB; Sat, 5 Oct 2024 14:58:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 34A9C6B02EC; Sat, 5 Oct 2024 14:58:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 0F7FF6B02E0 for ; Sat, 5 Oct 2024 14:58:30 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 9FB44A05E1 for ; Sat, 5 Oct 2024 18:58:29 +0000 (UTC) X-FDA: 82640459538.25.74745D9 Received: from smtpout.efficios.com (smtpout.efficios.com [167.114.26.122]) by imf08.hostedemail.com (Postfix) with ESMTP id 00E77160005 for ; Sat, 5 Oct 2024 18:58:27 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=efficios.com header.s=smtpout1 header.b=dzfRYRp+; dmarc=pass (policy=none) header.from=efficios.com; spf=pass (imf08.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 167.114.26.122 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1728154684; a=rsa-sha256; cv=none; b=ap+EzNHfyGFd93k+Ufslre0kzGICyeZCQcMJ5QT5d+tcpr9aGyPFWWiKZWthcg8Nc8GwQn vVvonDzhjXWJ05tDXpgtO672bgx5XCiPzDUyfnL1ldN4FHxn0l5DlJS7WFJkNTgRzHlxox pkuiGzRhhaRIotUx3HDcN2iLI6P+n1Y= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=efficios.com header.s=smtpout1 header.b=dzfRYRp+; dmarc=pass (policy=none) header.from=efficios.com; spf=pass (imf08.hostedemail.com: domain of mathieu.desnoyers@efficios.com designates 167.114.26.122 as permitted sender) smtp.mailfrom=mathieu.desnoyers@efficios.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1728154684; 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=MUHWsDROMgAkUwkhQLPU//btlI0enDgQ7ASh7lMFYw4=; b=TjkuNtgyxXr9uYkL2tYjgEwq3mRn+NYK5SpIo+0+6eIFWzGyn40Rxcp/Y5RURpTDJGO5EJ Mep0wXktzjbhcjhp1SGpXVFic/RD1u07isqhS2FrvVRYNIpf6LuSGlIIODF8DBeHC2rkQe iiGUExW9y+/2IUxqulGUaycTe4Ctcik= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=efficios.com; s=smtpout1; t=1728154707; bh=RTn2mtKzGWwl0GvRq21Nk5QN+R7yvGZfcgevYW/1xHU=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=dzfRYRp+/g2Dkm44G64aHTJSYh539TMhvI+oYp/J6IF1LPgUNJ3Xf7X8w5mcpdD3m Ict/VNtQSK18ojMPZS9L4Mmu3WHzRh4nUU17br23h/YXbF/jp3sWLpDhO6kg/cc0bt cMGH9K2Eg+2/zQqT6MvZDVQwyEFagQ2yZftiz8WcQXLlyH6fvQ0PSsf4BSoqaUbcPU pGXWb025Ooe7CbzxM71yA1WBtE2Vf2kFWh8ntiYAgrdYCGwW4ovpEKr9AlKjKchVIn BNXl5XoM1h1GKFQLLVKaNMHEz/K+CB5zLYTin8TYRE1t8grztN21dYAMWsgbAZsAzY CcKQNtTPavV1Q== Received: from [IPV6:2606:6d00:100:4000:cacb:9855:de1f:ded2] (unknown [IPv6:2606:6d00:100:4000:cacb:9855:de1f:ded2]) by smtpout.efficios.com (Postfix) with ESMTPSA id 4XLZSL59k7zbvL; Sat, 5 Oct 2024 14:58:26 -0400 (EDT) Message-ID: <6e7812f7-c94a-46ba-ba4d-cf4b7b1f60c9@efficios.com> Date: Sat, 5 Oct 2024 14:56:26 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH v2 3/4] hp: Implement Hazard Pointers To: Peter Zijlstra 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 References: <20241004182734.1761555-1-mathieu.desnoyers@efficios.com> <20241004182734.1761555-4-mathieu.desnoyers@efficios.com> <20241005160444.GA18071@noisy.programming.kicks-ass.net> <20241005160723.GI33184@noisy.programming.kicks-ass.net> From: Mathieu Desnoyers Content-Language: en-US In-Reply-To: <20241005160723.GI33184@noisy.programming.kicks-ass.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: ctz17n78ybeq6q557z65grmun1rjtjq8 X-Rspamd-Queue-Id: 00E77160005 X-Rspamd-Server: rspam02 X-HE-Tag: 1728154707-324386 X-HE-Meta: U2FsdGVkX18+FvOAcyIfYWDazqQ8S9Y8YX+gieOokL4zelFyyWMqkrAXDzb9ZjitnWdPwdd2naDq90UzS+BBcQpaf9SOXr5vlyIBNfW6pEnkm9HkZbhbszuGkGcCvwQ0EKBhzSBHS7m0I5kKEugmYxwQ76Z5tPeAgEu8GvvYSedZJXR1/eRufJ/5Fi0OF41GOfBG+B4PK5NZob8jVEBpBYWbVemh2itfkvEGx/zaO3RNEuwR/8EL/o2Rhorn9nM1nMinad4am58tL5/yz5fg7PMOOG3/x0cMiRscXwjeeBkkQfnLt6/qJA32YHiMfefErhDmCxJMa2iFSnWdmK/tEUeR998SPQcUe7uRUwveaNVkZyy1XzrE1ghFFCK7vne6biaH1g1Rxh0t3Pi8tNSu//AoG3MBtfE2TLrj1YkxwRRkJu/5B+BIiP/JpTtL46ti2YvjvK2bfpGUNfL0UAFQ+fgGiPYf8w3dD7rSXJu+tU2LSrtleLrC6gRXVlHkYZ97Wfwactl3hPPByzzHiDpWj/nXrF2SeM3V18GAhEQ53+YOv1gdbzgdBbKeMZ6vIziQaML1r+RNIXCsgoVuDDpLhbdX6npJMhsQwd80nGt0oKf6Vd8qnWGXbFTkSCFvaGKB4w+ZXrD0/zFwy79FYwwMPncOwl02uujfprktbvm2P1/eCMrvjG+QUhujrEhAm/R71ERZ77CkZ+OnO7E5vxrS/3r3Bj0k8ahMPwpVj/0EOIObZcSfv91vG6ZLgNxzMI+PovAsHwqudKUT6iBqavU6N/dprlso5NYFrL/RJkNR0nQu5EVTF4KZMuSYmY0zCJxkIlhHrUvina5mQX5lFnOPiF55cx0tX1kxJGxRYvRV1JCKbJ7wgmn1881rmUtNKth3gSNeVhC0eUsQxm22+BCHXZRTwOAnRLk/YObuJEf3FbRTt5uivuqUnctYgw6Pm7A1Yh0Ugoa8oafW+dhWLQ5 mUg0tKSS mIXNaCBSrQHgvaVh33DPqdpAvAWXe4toBL1RogB9hqMtWefqZSGJ3ALM1LpeC8jPqWFSdsNtk+sHARWu97gKef6tNpY4vU3wCXdDD676JruZvWtsJxBpcdQpZZ4Ab++VO7t+Jwjn13zBwItmhBCyIzHEHAOVrEmSoMy9367YjBpvoH5UNS3bD/uUiBi/QMOGKKt1YQxb6Lp95mQPYPWNz48F/aHIB8PTyNaIBcNDGvQxtKTAEAE9TtTICiumOfgHzpXgx37dIdCh4nI/AdLYMoxq2b0MDJ0L6eZjH7CvjHYyhCv8nXZz2Xk/+042buIsjvwsw3Kw73De+r2eVhR7djnrCAU21pkZhgxKdA/xw01ER3RoQFrKJJTLl7kv8XieKJvJaUjT1tBF5hSSSD48XnZ2A0N2pCXzlQw3OmulbLaYYkmz9auznCh1sk5HY7TVtEQj/0qDMt3d6Axo= 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 2024-10-05 18:07, Peter Zijlstra wrote: > 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. Something like this ? + /* Should only be called from preemptible context. */ + WARN_ON_ONCE(in_atomic()); > >>> + >>> + 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? Renaming retire_cb to "on_match_cb". Whatever the callback does needs to be done with knowledge of the slot user (e.g. IPI). >> >>> + /* 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() Done, Thanks, Mathieu >> >>> + } >>> +} -- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com