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 ADEB9C433F5 for ; Wed, 20 Apr 2022 00:39:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4656D6B0071; Tue, 19 Apr 2022 20:39:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4144A6B0072; Tue, 19 Apr 2022 20:39:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2B71E6B0074; Tue, 19 Apr 2022 20:39:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.28]) by kanga.kvack.org (Postfix) with ESMTP id 1F4976B0071 for ; Tue, 19 Apr 2022 20:39:55 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id DC6B723E67 for ; Wed, 20 Apr 2022 00:39:54 +0000 (UTC) X-FDA: 79375399908.18.AF3683C Received: from mail-vs1-f42.google.com (mail-vs1-f42.google.com [209.85.217.42]) by imf14.hostedemail.com (Postfix) with ESMTP id D1EF210000D for ; Wed, 20 Apr 2022 00:39:53 +0000 (UTC) Received: by mail-vs1-f42.google.com with SMTP id j16so157882vsv.2 for ; Tue, 19 Apr 2022 17:39:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KT16lddZpOeYEOzxjkpuLBwqew5J7d3LxwdLjYYWCDQ=; b=sctCgxK1K3o1FcCO7rvQr3ADGC+2y/q5zKIjHhpp8W+eXKQaq+DYjntlCpz7UR9H81 Tv5YrcqPtfHJzmdKz9P80FH3XA7nIEBfI2SwjV9PwgwTIyvcDxCDY/ahHe4b9Y29ubQS ZZuUKsJTeqbluvdFLtz6CwI3+FWQY4RjkNiEQhQrJtX5EFCjClPp+ZSEkCiY6TejT/m/ 2n+FES1CNoeKXkI9nvvM9uUg3IBqLEA2B/SjcEQ/TTR6KJM4SXYQXXBaJN8W8BDSXgZX rUmsCxlXsk1u1leLF4gcOGUcacKgrve+KnL4WN1a7FtjdIBjU8L11UzWS8weJnlr8/qd 63gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KT16lddZpOeYEOzxjkpuLBwqew5J7d3LxwdLjYYWCDQ=; b=EeP4i6j12V9wfRS/BO+TNxCD1TabD+i8CIbrcmG6UpOqbectdafUeLWcMN9Cat7YIU 5LUVYYHJPf3VSldyawVAGcUSauC5+nckJpolWvYMrXoeVr8FBnngLWVnzYyDJbaC1oLf 3jeDtm0wP5CLsnoeKcYUObP2bKr+KtgQSFLvHsLUPl138tO4kWw/hIXlcNeigJ2MJQU1 M16N9ayUusSc++cCazCHdXnJWPGBcx3hi2wegQ1NuZWy42+AYAUn9jYMLtKtGLHaLxg/ Elie6vUxvroryQSyoo4uTCBpDQHChMdki9ON60/BqO/DQSSfxmkWogjZvBHtR5BlJk4Y 0Qmw== X-Gm-Message-State: AOAM531W8/koHTfG+FnZVKJ783MZJ1PMLLUJCoCGR+UrubIlg27aw5pj 8fAmXu1P5yJf3BxRQfS+uA5Z78Ic7NWzmY0MZ1UJ3g== X-Google-Smtp-Source: ABdhPJxtK3l4fn9+QFdiu0rNZ2xlRrzY2+o6YQzD7NeHRc8+S6Z7hXRtCYNygpfogrJcYbf8Hrjskc6cyluLwGUtJnM= X-Received: by 2002:a05:6102:5113:b0:32a:76b1:e1bc with SMTP id bm19-20020a056102511300b0032a76b1e1bcmr622157vsb.41.1650415193573; Tue, 19 Apr 2022 17:39:53 -0700 (PDT) MIME-Version: 1.0 References: <20220407031525.2368067-1-yuzhao@google.com> <20220407031525.2368067-6-yuzhao@google.com> <20220411191615.a34959bdcc25ef3f9c16a7ce@linux-foundation.org> <20220412070616.GT2731@worktop.programming.kicks-ass.net> In-Reply-To: <20220412070616.GT2731@worktop.programming.kicks-ass.net> From: Yu Zhao Date: Tue, 19 Apr 2022 18:39:17 -0600 Message-ID: Subject: Re: [PATCH v10 05/14] mm: multi-gen LRU: groundwork To: Peter Zijlstra Cc: Andrew Morton , Stephen Rothwell , Linux-MM , Andi Kleen , Aneesh Kumar , Barry Song <21cnbao@gmail.com>, Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Jesse Barnes , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Rik van Riel , Vlastimil Babka , Will Deacon , Ying Huang , Linux ARM , "open list:DOCUMENTATION" , linux-kernel , Kernel Page Reclaim v2 , "the arch/x86 maintainers" , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , =?UTF-8?Q?Holger_Hoffst=C3=A4tte?= , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh , Vaibhav Jain Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: toz8awbioamm9ufoydpeptba3h9fbedz X-Rspam-User: Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=sctCgxK1; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf14.hostedemail.com: domain of yuzhao@google.com designates 209.85.217.42 as permitted sender) smtp.mailfrom=yuzhao@google.com X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: D1EF210000D X-HE-Tag: 1650415193-26117 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: On Tue, Apr 12, 2022 at 1:06 AM Peter Zijlstra wrote: > > On Mon, Apr 11, 2022 at 07:16:15PM -0700, Andrew Morton wrote: > > > > +{ > > > + int gen; > > > + unsigned long old_flags, new_flags; > > > + > > > + do { > > > + new_flags = old_flags = READ_ONCE(folio->flags); > > > + if (!(new_flags & LRU_GEN_MASK)) > > > + return false; > > > + > > > + VM_BUG_ON_FOLIO(folio_test_active(folio), folio); > > > + VM_BUG_ON_FOLIO(folio_test_unevictable(folio), folio); > > > + > > > + gen = ((new_flags & LRU_GEN_MASK) >> LRU_GEN_PGOFF) - 1; > > > + > > > + new_flags &= ~LRU_GEN_MASK; > > > + /* for shrink_page_list() */ > > > + if (reclaiming) > > > + new_flags &= ~(BIT(PG_referenced) | BIT(PG_reclaim)); > > > + else if (lru_gen_is_active(lruvec, gen)) > > > + new_flags |= BIT(PG_active); > > > + } while (cmpxchg(&folio->flags, old_flags, new_flags) != old_flags); > > Also; please use the form: > > unsigned long new, old = READ_ONCE(folio->flags); > > do { > new = /* something */ old; > } while (!try_cmpxchg(&folio->flags, &old, new)) Sweet. Thanks. A related question: if I pass new = old to try_cmpxchg(), does it know that and avoid an unnecessary atomic op?