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 E968FCF3963 for ; Thu, 19 Sep 2024 18:59:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 196E26B0082; Thu, 19 Sep 2024 14:59:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 120476B0083; Thu, 19 Sep 2024 14:59:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E8DF36B0085; Thu, 19 Sep 2024 14:59:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id CA6DB6B0082 for ; Thu, 19 Sep 2024 14:59:02 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5C99D12100F for ; Thu, 19 Sep 2024 18:59:02 +0000 (UTC) X-FDA: 82582400124.04.C43D31E Received: from mail-qk1-f170.google.com (mail-qk1-f170.google.com [209.85.222.170]) by imf07.hostedemail.com (Postfix) with ESMTP id 25FF54000B for ; Thu, 19 Sep 2024 18:58:59 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Iw+s6Axz; spf=pass (imf07.hostedemail.com: domain of boqun.feng@gmail.com designates 209.85.222.170 as permitted sender) smtp.mailfrom=boqun.feng@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1726772226; 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=cwoecdcdbMgPQsF14fynmPgai9K23d2W9nS8l1lA3yI=; b=acUqARbej6TTZZ/udzynuzta1ViDDKcKewcAUZUmhUE3Nz+ouIYqXwFIlUe9pxJLKRIN+8 ucX5W0p0u7bo/jFx+5bA5djdfy5oHq+jfXELi4R/92/+pRn2aAcE+XPw+xqfBCNDv05+qy 6usYR2wAfbQfbMOItH4LfeusvIHwcd4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1726772226; a=rsa-sha256; cv=none; b=124atzte9oJ6OtkbJ1I8iddX8kZpCCprw+j5/KmKVA3gZh4t8g1woy4UtGk/VZk/sMQpIa VFN6pt4ZPZfaO8VvgZua7tD6hAxheCI+hOvdaYJfv/5967TKMp1a08068kXEkCVqgTarsC YudmlikZcKhL9PxWb8CWa+a7Z6ZJ3eo= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Iw+s6Axz; spf=pass (imf07.hostedemail.com: domain of boqun.feng@gmail.com designates 209.85.222.170 as permitted sender) smtp.mailfrom=boqun.feng@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-qk1-f170.google.com with SMTP id af79cd13be357-7a9acc6f22dso105604185a.0 for ; Thu, 19 Sep 2024 11:58:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726772339; x=1727377139; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :feedback-id:from:to:cc:subject:date:message-id:reply-to; bh=cwoecdcdbMgPQsF14fynmPgai9K23d2W9nS8l1lA3yI=; b=Iw+s6Axzr6CbQa+8a2iSDz9Xw8X3WMgZ0OG/q79HZ9MBbIN6axLOW1pQ2jg9cucqud q/e+xe+sdgk4dLXs9BQiokGN0MM39tHqPkobzx2upvItdychQOQcVcdLCgILmfWgHSp/ pQOkIazHSfcUfno3EmVb1rwZ5CNoOPQRnV8PX6iQtaSAqgIzhzgjsVreGOUYWd+sJObp B/YW+w0crbsgtTTTo+lcHC0UJ0B1jrTdHHVWrHf3mYZ+mJKDdN7Y4FxapVo5t6Xt98OR NA7nCSnkuHsD4dGiGNAH/IECr5s3q7BFj9848zB2GUNe9lAmQUZbjB4t1SDRp0wUtLVl 6pbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726772339; x=1727377139; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :feedback-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=cwoecdcdbMgPQsF14fynmPgai9K23d2W9nS8l1lA3yI=; b=Dsy12atlQLxjDer2cLlzXsZbZGW8PuS5//kFyqKrM1OPHZU+BmVnjcR3DPya81stW/ /nvQ0Nh5sH8AX47N8tk9/jCE/oR0Y7NaK92z14dWd8PoJiXAnwRSWwKzoP6P1t8TxSaB s9sJcQnamJvC9jSD2RikGyyGKp+81bGi5EsPQML5LQs4P8PqLCgCTQ/AWE3nCQvATYyw aRxNrQwn/PFpnIxguJewMlQ2fCzNzogqyYbBJmsMUxmpcI8WID7jcJRmeu8DPlXaPXiZ kCy9iMQMzvtFmihb/VUR4lV6/Ey9FzNDRdMjgUn8MSpr2qxX9JGxjeGp0/NlG7RVRVwK iAKQ== X-Forwarded-Encrypted: i=1; AJvYcCXVaVXqvKmdLL4eIRw4fCFDq08qzbZLY/q+hG7j21vq9TaoAIMR/2dSG9FI8UiIZ+3wczHal+wumQ==@kvack.org X-Gm-Message-State: AOJu0YwAqmjJ2XlCrYQ9Cw34NnBQqXuVqsChvgOw28uIoGm7ywjGKEOm Fa3qySnYIv+GbZRQU8EUVS+IVeqzit1C3b3rd6HN88pX4SYUH5PS X-Google-Smtp-Source: AGHT+IG9krhB+TqFIp3Xw3Uh0YLWlcpmOM9G1sjuTP6vk0Xn7571glVk4Nejjwuf1CSB1Ql1/7lMFA== X-Received: by 2002:ac8:7c47:0:b0:447:f7cf:7022 with SMTP id d75a77b69052e-45b2055f185mr5813031cf.40.1726772338945; Thu, 19 Sep 2024 11:58:58 -0700 (PDT) Received: from fauth1-smtp.messagingengine.com (fauth1-smtp.messagingengine.com. [103.168.172.200]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-45b17919f4bsm9854851cf.85.2024.09.19.11.58.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Sep 2024 11:58:58 -0700 (PDT) Received: from phl-compute-07.internal (phl-compute-07.phl.internal [10.202.2.47]) by mailfauth.phl.internal (Postfix) with ESMTP id 8D986120006E; Thu, 19 Sep 2024 14:58:57 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-07.internal (MEProxy); Thu, 19 Sep 2024 14:58:57 -0400 X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrudeluddgudefvdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg hnthhsucdlqddutddtmdenucfjughrpeffhffvvefukfhfgggtugfgjgesthekredttddt jeenucfhrhhomhepuehoqhhunhcuhfgvnhhguceosghoqhhunhdrfhgvnhhgsehgmhgrih hlrdgtohhmqeenucggtffrrghtthgvrhhnpeevgffhueevkedutefgveduuedujeefledt hffgheegkeekiefgudekhffggeelfeenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegsohhquhhnodhmvghsmhhtphgruhhthhhpvghrshhonhgr lhhithihqdeiledvgeehtdeigedqudejjeekheehhedvqdgsohhquhhnrdhfvghngheppe hgmhgrihhlrdgtohhmsehfihigmhgvrdhnrghmvgdpnhgspghrtghpthhtohepvdejpdhm ohguvgepshhmthhpohhuthdprhgtphhtthhopehmmhhpghhouhhrihguvgesghhmrghilh drtghomhdprhgtphhtthhopehjihgrnhhgshhhrghnlhgrihesghhmrghilhdrtghomhdp rhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh dprhgtphhtthhopehrtghusehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohep lhhinhhugidqmhhmsehkvhgrtghkrdhorhhgpdhrtghpthhtoheplhhkmhhmsehlihhsth hsrdhlihhnuhigrdguvghvpdhrtghpthhtohepphgruhhlmhgtkheskhgvrhhnvghlrdho rhhgpdhrtghpthhtohepfhhrvgguvghrihgtsehkvghrnhgvlhdrohhrghdprhgtphhtth hopehnvggvrhgrjhdruhhprgguhhihrgihsehkvghrnhgvlhdrohhrgh X-ME-Proxy: Feedback-ID: iad51458e:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 19 Sep 2024 14:58:57 -0400 (EDT) Date: Thu, 19 Sep 2024 11:58:31 -0700 From: Boqun Feng To: Alan Huang Cc: Lai Jiangshan , LKML , RCU , linux-mm@kvack.org, lkmm@lists.linux.dev, "Paul E. McKenney" , Frederic Weisbecker , Neeraj Upadhyay , Joel Fernandes , Josh Triplett , "Uladzislau Rezki (Sony)" , Steven Rostedt , Mathieu Desnoyers , Zqiang , Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long , Mark Rutland , Thomas Gleixner , Kent Overstreet , Linus Torvalds , Vlastimil Babka , maged.michael@gmail.com, Neeraj upadhyay Subject: Re: [RFC PATCH 1/4] hazptr: Add initial implementation of hazard pointers Message-ID: References: <20240917143402.930114-1-boqun.feng@gmail.com> <20240917143402.930114-2-boqun.feng@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 25FF54000B X-Stat-Signature: pawbfstfub9zdaeyf1ksiauwkrfe553e X-HE-Tag: 1726772339-169937 X-HE-Meta: U2FsdGVkX185pz3pDRw8mQyB9EMTaGMV/X+0YiUiJGI8tF++rOkvU4SvLQly5S9fPjZKcWMxfHrwIzPs0FeNTWKQSwUZGUrfNRd+uJqQ+HJtRKiK4eXCPKccx+6OqbuDOSEw53TM4o/B+VpS2CHjPOx/tKPl/ugtriOszxJWP74npnsn/1nwoyOpINfaeR1/2wQK7ODKVe0qiTHasQFLfPnOI3d509fTIUSgqK8FIDSF8xFCNmxqN9VEgkkuLOE0ZEEYHPGwIBhdIjI5AhjN4Mwx8PoERPH000iHaTwICofuo2t6KSYZt+27mlykDBwEKl2jqucpvZKinsnlg2tVgQcjB2HMAksj4pyumY+59fFaXzyHUanr4zy4ux0v329XK6fOLiBdsbvmGJm3kXDSemBJRwWeFTbklzpt0btaRheh3n2Ts2+RvpBtlkWflpNs5JyQDsCcCQ/2mAy3p62AXuWS2tOmljAeusyclIKzPPhKfK9jRTqmI2w9FI3yGXTl4Nw63VLt4ua+35OYwixhu3aqymiKliuzmSZadwDt6FC5Ka8d2W234t1Uc775PvCeoR+hPk7eXYQ12ujOmEL0yCnyjJbjQS8knl+6Q+NFgQQBKgnz4Hz3JKmOSpP6OT39xqteMpWxjd3Tq2VWnu04jEOmPSZ2TGtwmzVSiPs4jZO8Ki3quK25dIkkLRVf+pdpb0bPmS0s5k2MR3AlBzxtrj+VAm3+YK/JQzFWZ+mCVeTJZA4TpyK6jQXhs1y4JuWWZEN5HHxSn+5eaDsQFYR0Jd7QzAUmS5kqQaIYjvvXDosu/2qo0fF4TqXFdkvZ7B7Rtvgz0FGVbor3nI/z/+s49/wrclKGXHz0M09ytXQ5JriJsviHwfXH2BDxuBRpNd8cCBV4y3omsfEUBb8zCUxEwEzwXFOs5JJpr7FXgXEY3xnsWiHz6wXbRcB2EWdb8LJl6vAyyDDkWbahFRckhV+ dNG47RKu 1yD2IlXnjVo3jOxKHaj9pM9tMrZkogHPAXOrJ+sSd0twlFiHvi/oBS+xsUpuDM+I4fNgptiOg2mg7usTHAWICWp/FLEzeEKRFfEf3oZ+sV4NreT4SZkDbTvl+teobg7/cu01OzANEih/GV5xa5bTLw+h9LiUeKMVzK/Kv9Q89xUJJH4mSx57OGJSwy2w+YUI1/GI9CkZ0LAS/RZWYjyFrb+fJAelKv0vvUKAq8qtS3kBS2BWhGST2YVtq984UQZYnlcuV43ff+4tBet29r3lRDUzgzEAnL33vMR5IADC7QzIXCHufKouRNh+pUqfRy46y0re4cwHEWKB5YQvx7rhCoqgfAgRxYAXUjap9I5h8Vfu7YSvkvE2H1LCAdXLHfAiWSRwsbzozgsce80sI0IQKkDjp2Xtz1atoihKU+xnBPULFdOGcVF+p7abxqI5vRO1yzrCiPMKpxnwL71LYp6i7PbXkrcxXvCxVGeimuB7ohoPMPAlRtxwFsZhSbsrBG7CwpkWg 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 Thu, Sep 19, 2024 at 09:57:12PM +0800, Alan Huang wrote: [...] > > > > I think you're right. (Although the node will be eventually deleted at > > cleanup_hazptr_context(), however there could be a long-live > > hazptr_context). It should be: > > > > hazptr_t val = smp_load_acquire(&hzcp->slots[i]); > > struct hazptr_slot_snap *snap = &hzcp->snaps[i]; > > > > if (val != snap->slot) { // val changed, need to update the tree node. > > // Already in the tree, need to remove first. > > if (!is_null_or_unused(snap->slot)) { > > reader_del(tree, snap); > > } > > > > // use the latest snapshot. > > snap->slot = val; > > > > // Add it into tree if there is a reader > > if (!is_null_or_unused(val)) > > reader_add(tree, snap); > > } > > It seems like that two different hazptr_context can’t be used to protect the same pointer? > > Otherwise the following can happen? > > thread1 thread2 thread3(worker) thread4 > hazptr_tryprotect(hzp1, ptr1) hazptr_tryprotect(hzp2, ptr1) > add ptr1 to tree Note that we have snapshot rb_node for each hazard pointer slot, so here thread3 actually would add two rb_nodes with ->slot == ptr1 here. > hazptr_clear(hzp1) > hazptr_tryprotect(hzp1, ptr2) > delete ptr1 from tree unpub ptr1 Therefore, there is still one rb_node with ->slot == ptr1 in the tree after the deletion, so updaters won't invoke ptr1's callback. Regards, Boqun > call_hazptr(ptr1) > oops: invoke ptr1's callback > Or am I missing something? > > > > > Regards, > > Boqun > > > >> I'm not so sure... > >> > >> Thanks > >> Lai > >