Received: by 2002:a05:6a10:6006:0:0:0:0 with SMTP id w6csp920245pxa; Thu, 27 Aug 2020 21:06:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwQ3aoVrFajUf2T39B/UmuStxdXMWoGTJ8gBFB7qNrba1GqnW9aqCNKDkNB6VF2Dj6CeYlr X-Received: by 2002:a05:6402:1210:: with SMTP id c16mr23374017edw.71.1598587587612; Thu, 27 Aug 2020 21:06:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598587587; cv=none; d=google.com; s=arc-20160816; b=POkcihyQ10GOWnHFxA7/cpZXC1CD23gspLuq0baUSHPl6DaU0+blA8YKz38B2bYR7c vnG/yo6OCejabAugmOSgMUpRq6imUr5QP5O/t2RVVKu9gDiNOuDfI5ipuhdAt8Oa6gnA /6Fo9zmHrGuyLvg57/VnJBCTsOGcouW37+J1saUOHqz+nPIKRecjZ37F58fsTfMK7BqG DtVBH8uEDnkaumvzm8YfjCoNCtmcjKz4S3vfzNis9oVmaaz56tSNJaE8LjNRcMv5FowR a4GmhawXCsfHHnvvlFSfBTGG5HpLu4cpcOKaBK6Z8cmVMoO9CG+h5W5kJPjj51Fup/ay bF0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=pGq/lhS7z1CscFynP8v3j9ykp57TDwJZlPMQ1RLom5w=; b=MSbIHL0LfNmINSYpJBBKpHTB9ZHr6UhtbUqnW5XjdLsokExDJ5I8qeqduLVNtOHk+H RN6b9coghWR4/kr9VAU4BSV+7nVruHzHIQAfQ3h8qJfAit6bYx5HubG6IdB9PotFKUPn NuSY84DYTaCD6OTM29geE81DTDXxy1Bvmgav2dEX83wt6tZ8PjxlZiHYRegUsCBpKx0f PBVAQa4RvY7UEvknhYkT08NxuA6zPDoHtz734N+Y6NTZoolf7jiytb75TrbyfJo6bEDF v+vJgV/PJIyjofTkr67BcM9SjGRXZi4slNt8VFbX0kX/EVJtE2w8OjNl7itysFzN8jd3 avYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=M+GMWBOP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a10si2745020ejf.666.2020.08.27.21.05.47; Thu, 27 Aug 2020 21:06:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=M+GMWBOP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725858AbgH1EEI (ORCPT + 99 others); Fri, 28 Aug 2020 00:04:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725536AbgH1EEH (ORCPT ); Fri, 28 Aug 2020 00:04:07 -0400 Received: from mail-io1-xd44.google.com (mail-io1-xd44.google.com [IPv6:2607:f8b0:4864:20::d44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D7A39C061264; Thu, 27 Aug 2020 21:04:06 -0700 (PDT) Received: by mail-io1-xd44.google.com with SMTP id h10so3692903ioq.6; Thu, 27 Aug 2020 21:04:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pGq/lhS7z1CscFynP8v3j9ykp57TDwJZlPMQ1RLom5w=; b=M+GMWBOPeu019snfJtxa4zw8Ysge0SOqctk/DI82xg0dB/M9nXvnL8Ck39rw9h0emT U9jZEAZw3l5indDzQrQdnYsVUJSD3stUdDhN2CG6xx6qC9gisUAEs0WwJHO05IGcZ2G7 OISD1kDZ8KYsSRDoMAMSC6XO3LEO/ySbZA4x3eF3qQOl6+/DFdjwHOgkFoCuXjm1voG7 trQ6iADtrVSawbmPESZ5mqCQZLBLJjNMJrKi70gGcBhKQAHyBIMtVz8glohp9WC1Gir4 wbLxloGJiVffln/hRpxpDE9oxggeSgUTgG1misTtCGv9Yw4sX7IgeSqE12uaCI3m/MM9 Xg/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pGq/lhS7z1CscFynP8v3j9ykp57TDwJZlPMQ1RLom5w=; b=LVz1seRufDAM4Kr9VZ99AsLm5v1zb6VCn9MgLfaCxMc3w1U95RoYVm3h9LM+iYauIC HX4dOElbyNZCOqJDJv0b/1rdDRDdeTOTrImk8QvWvify5NkcMzi0vBOPRrOuRF1WgJyT hvl1xHoyyVYNjjBjCbomB0w3xwwnNI8hS723Z+oG6WQTDOkmEmA0OMQVn3vV3o2LAF1p OfzjRMVutMhuiCITIIGyEyvm3oCX3M7YQTZ/Nt6ln+3h4x+2GfzuJ3yX/pxb/EwHtVBe itY1FGtQhK+BmVWprhqmYgkLZaNipPHVy+F6RHEGu6ust/RB6Vadgk4e5iIk2n5ocLlq GpRg== X-Gm-Message-State: AOAM531umSwe2+razQ4iSZTFai7KI65yMRkIlI9HYDuGaKkRMqMSzt5C cQruqF0xe75FDRJ9F7cum/9GGt5TMRrQ52yJRj0= X-Received: by 2002:a02:340c:: with SMTP id x12mr18279111jae.40.1598587445775; Thu, 27 Aug 2020 21:04:05 -0700 (PDT) MIME-Version: 1.0 References: <20200827161237.889877377@infradead.org> <20200827161754.535381269@infradead.org> In-Reply-To: <20200827161754.535381269@infradead.org> From: Lai Jiangshan Date: Fri, 28 Aug 2020 12:03:54 +0800 Message-ID: Subject: Re: [RFC][PATCH 6/7] freelist: Lock less freelist To: Peter Zijlstra Cc: LKML , Masami Hiramatsu , Eddy_Wu@trendmicro.com, X86 ML , davem@davemloft.net, Steven Rostedt , naveen.n.rao@linux.ibm.com, anil.s.keshavamurthy@intel.com, linux-arch@vger.kernel.org, cameron@moodycamel.com, Oleg Nesterov , Will Deacon , "Paul E. McKenney" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Aug 28, 2020 at 12:23 AM Peter Zijlstra wrote: > +static inline void __freelist_add(struct freelist_node *node, struct freelist_head *list) > +{ > + /* > + * Since the refcount is zero, and nobody can increase it once it's > + * zero (except us, and we run only one copy of this method per node at > + * a time, i.e. the single thread case), then we know we can safely > + > + /* > + * OK, the head must have changed on us, but we still need to decrement > + * the refcount we increased. > + */ > + refs = atomic_fetch_add(-1, &prev->refs); > + if (refs == REFS_ON_FREELIST + 1) > + __freelist_add(prev, list); I'm curious whether it is correct to just set the prev->refs to zero and return @prev? So that it can remove an unneeded "add()&get()" pair (although in an unlikely branch) and __freelist_add() can be folded into freelist_add() for tidier code. Thanks Lai.