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 139CFCF6493 for ; Sat, 28 Sep 2024 11:22:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3660C6B0085; Sat, 28 Sep 2024 07:22:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 316296B0170; Sat, 28 Sep 2024 07:22:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1DFF76B012B; Sat, 28 Sep 2024 07:22:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id F06A76B01A6 for ; Sat, 28 Sep 2024 07:22:46 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 6E5111A1214 for ; Sat, 28 Sep 2024 11:22:46 +0000 (UTC) X-FDA: 82613909532.05.A925488 Received: from frasgout12.his.huawei.com (frasgout12.his.huawei.com [14.137.139.154]) by imf16.hostedemail.com (Postfix) with ESMTP id A2272180010 for ; Sat, 28 Sep 2024 11:22:40 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=none; spf=pass (imf16.hostedemail.com: domain of jonas.oberhauser@huaweicloud.com designates 14.137.139.154 as permitted sender) smtp.mailfrom=jonas.oberhauser@huaweicloud.com; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727522441; 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; bh=Vn+C8xm7CaTf9qjhD9ert10wEX71fCZcjw67V37hg48=; b=NVxTi3Onwq8aUaO0sAlLvzaTocdM/dTIJlBY1kB5NYb7uTznxavyf9pZiGNJ8fJ+Z31SS0 rogwQi9nxZ0w/RfHNBqDrW5v17TzjizhEkOUJ+XzCY44SUqY+FC/gmtKQCtqXEHx9QFuRA a53sb3weVxedcwzeSu6PZxyWu2xb9WQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727522441; a=rsa-sha256; cv=none; b=AVkoLoFiTmyScyuo0XNdz6IVqOuZoEpHAHpDwwVA7LcWqfDvsGysVmXMxEx/nxUvX+Sj4n +a7T0xk2se4BD/+LRp4mWtBSMzVnCmkwAkTEp9cFTfG6T/ei3i/OBffghbpwU5Nh0sQKyj IyXSgE1XOsgE6iKxvRelPjkWNmloN3g= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=none; spf=pass (imf16.hostedemail.com: domain of jonas.oberhauser@huaweicloud.com designates 14.137.139.154 as permitted sender) smtp.mailfrom=jonas.oberhauser@huaweicloud.com; dmarc=none Received: from mail.maildlp.com (unknown [172.18.186.51]) by frasgout12.his.huawei.com (SkyGuard) with ESMTP id 4XG45z3f6Tz9v7Jk for ; Sat, 28 Sep 2024 18:56:55 +0800 (CST) Received: from mail02.huawei.com (unknown [7.182.16.27]) by mail.maildlp.com (Postfix) with ESMTP id F275F140EA2 for ; Sat, 28 Sep 2024 19:22:33 +0800 (CST) Received: from [10.81.205.100] (unknown [10.81.205.100]) by APP2 (Coremail) with SMTP id GxC2BwAn18fr5vdmdwnRAQ--.57386S2; Sat, 28 Sep 2024 12:22:33 +0100 (CET) Message-ID: Date: Sat, 28 Sep 2024 13:22:18 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [RFC PATCH 1/1] hpref: Hazard Pointers with Reference Counter To: Mathieu Desnoyers , Boqun Feng , "Paul E. McKenney" Cc: linux-kernel@vger.kernel.org, Will Deacon , Peter Zijlstra , Alan Stern , John Stultz , Linus Torvalds , 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 , rcu@vger.kernel.org, linux-mm@kvack.org, lkmm@lists.linux.dev References: <20240921164210.256278-1-mathieu.desnoyers@efficios.com> From: Jonas Oberhauser In-Reply-To: <20240921164210.256278-1-mathieu.desnoyers@efficios.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-CM-TRANSID:GxC2BwAn18fr5vdmdwnRAQ--.57386S2 X-Coremail-Antispam: 1UD129KBjvJXoW7Zr1rCw17uFyxWrykZrWDArb_yoW8Jw13pa yUKay2yFW8Jr4fC3yvv3WUC3sakFs8JFsrX3y0vrWfZ398Wa1rAF10kayjyF93CrZ5Ww45 ZrWYqwsxCF9FqFJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvjb4IE77IF4wAFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k2 6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4 vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Jr0_JF4l84ACjcxK6xIIjxv20xvEc7Cj xVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4A2jsIEc7CjxV AFwI0_Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40E x7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x 0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lFIxGxcIEc7CjxVA2Y2ka0xkIwI1lc7CjxVAaw2AF wI0_GFv_Wryl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r4a6rW5 MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWU JVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJbIYCTnIWIevJa73UjIFyTuYvjxUIF 4iUUUUU X-CM-SenderInfo: 5mrqt2oorev25kdx2v3u6k3tpzhluzxrxghudrp/ X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: A2272180010 X-Stat-Signature: w3jb6a85wt6b84pi7p74pdjfeu5rsqpz X-HE-Tag: 1727522560-367395 X-HE-Meta: U2FsdGVkX18IBYQEo4DAYzKS4Mi0kqnc0BMYZNmUP/aY1bZ9HwpLiKkxG7M0OvHpkZ7tl6RHbPvL5qsyIgXM99LseRaos5CDkBB9x2iEu1TW13gFH9kua3tSLPdesToeoq7mQ+kUxJpV+4x9S+Vbx3aIGWbRMpFGQ1XIDfc3yxQ+CIYJC55BCDGd9ZedA+/yFUWqzz24Hjhs11xtYcLyEF/FywqNPd/KG+7a4GwuBKASpMM/oN9EP3pY19ipYnrUYc3vhrvZRaLAFsOvxT44DMHJXbSKLSOhQxZ2V6T9P8C5jYJZEz/mmPcKwo30HFVbvkdjI5X1Lgy2ltVDvFHjkp5DR4XMZowgbaYfjjA0wYxYQcp5uVNOPhKWI0GN8f7LjrQZi8FEttiJpFG00WEZsAfmmTviCP6wVwL392jIQcEbInSHXk841TysccEy53KgswUjIvckzm2vYpahS5EPHiZhaimDKxI2O6ZBNdDwzVhs1Mn8KzuCgIW2xObg89dpfexO0EfZO7zfRDXjLBSWgL28ULTSQOhenxVPDeGB/CSpwl1VhayJ/lMNo4Kw4z/AVQgPTcwQd+iLBq4iprmWVhKVHkTuzxTg2rTQjsN13go8D8Et/KavJlPmnfX3psoPocI2uHx934iAMRcnv2gx2klqYtut9jZVIvnZb1SAXTt8ITeUnGj3v8JJS4g02Exvq9Z6Vp49ChA95b5uzAw5VXwTS1C6VEOoIS2G73GwLE3HQ8rEi5CPHJKMuM5WGXWudaKr1DCOmdq+3nsrzzlWVnVSjeCzvu7NQQ0Vo5Ksx976qy2o6LqNFmaO0QydSG2N4aahApM626FjJfUxQ/WaVoRRFu6XGquzq10xBAa6t8DD6JBXyA2ATT6dEWz5NhVy0j/7JTcfcvZgFWbzJ4QGa1jmYsMh1fPaEefq2c7T7s0VRItMApfuts19CXQdyRqZX54ym7Iuc6saPoLvXsA HXZyTz68 933fZl7ltxMv+T8uDkCYmczoLZ/a6E1mGx/TWG3QwS33wr2VqdQVCrspXb8GeQGWBQEBWt7IC1TcL9b7++M13JbM/+20FN312P9OBKpUMVR9CJhHfArUzGSQHQASWBk9WfsfPHZh2QohRVxJFlZhv8o9tCnBMp+u7lHcGo5ECGzfi1iL2gMnkdOfOmFXujTkP4n4EuE35hA6E7fn9NveNjZx3Ol+2mMzbELwrzBEvcszrcLk= 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: Two more questions below: Am 9/21/2024 um 6:42 PM schrieb Mathieu Desnoyers: > +#define NR_PERCPU_SLOTS_BITS 3 Have you measured any advantage of this multi-slot version vs a version with just one normal slot and one emergency slot? With just one normal slot, the normal slot version would always be zero, and there'd be no need to increment etc., which might make the common case (no conflict) faster. Either way I recommend stress testing with just one normal slot to increase the chance of conflict (and hence triggering corner cases) during stress testing. > +retry: > + node = uatomic_load(node_p, CMM_RELAXED); > + if (!node) > + return false; > + /* Use rseq to try setting current slot hp. Store B. */ > + if (rseq_load_cbne_store__ptr(RSEQ_MO_RELAXED, RSEQ_PERCPU_CPU_ID, > + (intptr_t *) &slot->node, (intptr_t) NULL, > + (intptr_t) node, cpu)) { > + slot = &cpu_slots->slots[HPREF_EMERGENCY_SLOT]; > + use_refcount = true; > + /* > + * This may busy-wait for another reader using the > + * emergency slot to transition to refcount. > + */ > + caa_cpu_relax(); > + goto retry; > + } I'm not familiar with Linux' preemption model. Can this deadlock if a low-interrupt-level thread is occupying the EMERGENCY slot and a higher-interrupt-level thread is also trying to take it? Best wishes, jonas