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 62184C3DA4A for ; Fri, 2 Aug 2024 17:29:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A4CC46B0095; Fri, 2 Aug 2024 13:29:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9FB736B0098; Fri, 2 Aug 2024 13:29:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 89BEB6B0099; Fri, 2 Aug 2024 13:29:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 6C5C46B0095 for ; Fri, 2 Aug 2024 13:29:24 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 10149C0694 for ; Fri, 2 Aug 2024 17:29:24 +0000 (UTC) X-FDA: 82407991848.06.763F7F6 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf21.hostedemail.com (Postfix) with ESMTP id 14C241C0008 for ; Fri, 2 Aug 2024 17:29:20 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=WsWPJA17; spf=pass (imf21.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chrisl@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722619683; 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=uO6hCcX/ESlAVkF2d/3VpSD7jjKpBLlQLbfjtFQQPuM=; b=pf9flVt/hLgqaC+5VAj6ROxjfSDErHzT7Zxo5/tIeYr5+CaFfITWzVK27ut6mgZlqx9hud Qqnyl/IZzJ3TFXHRA7aY/a6X5oAEB7Of++tsjn1iEkiZFBR2AukxGaWjuNoVnBbowYj+w+ DcRlQPF+XVuCiHmHJl457yN5XsldWts= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=WsWPJA17; spf=pass (imf21.hostedemail.com: domain of chrisl@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=chrisl@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722619683; a=rsa-sha256; cv=none; b=IgMXUSnFvPGk0SdvfVYA9aOxK5QGN46CLt1d2dgY0HaPlPvPh7OfeATMHCWja/09NvE4Bj Rjrrv2OXomRaz9doK4WpST+9kNVfoMdRYS9Wx1c/+vDsN8YpN23fzuEnmTEL9OVgvcUuRd B5fmtNgph8ePOi4NY2jZpeLTDGDWs60= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 01BAC62B0E for ; Fri, 2 Aug 2024 17:29:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A30CCC4AF09 for ; Fri, 2 Aug 2024 17:29:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1722619759; bh=1aXr1a6cPgOepOy3AhjNqHrv1sNmM2SwAOr0T46pwP4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=WsWPJA17IoDC3awy71KOK0wju0+QYrSCwB4pDoHTOULATBic8IAVkO6bmbHWpAiaC 1o0BtPm+oD5PvZPZmCNjofVcRcmYOyRUlZL4GM4uXRdbQ8cSR0wlCL9OfEOTBMwo+D Ndj096iQFIPKN/DOW1shHtGMpAhA4YDrdQV3ERfRh2UOogzoyQ8RCH+aUp3h1ChYOT El/PiAdzUjm2bk1yd9hdfedm+4PUKnMR1G8GWiVJzXBoS6JaiBta4Gtlp4PcmlA6NK m2EO49KAE1v9mLPSlEbDLtaKthIZRhXwqPwDGUPcHoFAV6fdnHuZ7/nrcpOAjuIKOD LuwuSAxDmy14Q== Received: by mail-yw1-f175.google.com with SMTP id 00721157ae682-685cc5415e8so32408907b3.3 for ; Fri, 02 Aug 2024 10:29:19 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCVnQ6pCjwZr2wFGNSoHXsmS1qGFyI/Q61Wj4GUWev5Bqrz7lXEjZavmgKA6jEw8GwyZ9Wi/41xLGqVyJz00BF8ExOc= X-Gm-Message-State: AOJu0YzOTZ+KOH0Gpw3nIEV6W/wO0ejiapKZcKpFTD50VRryAX0dn7XY 6vQ61UM5hTr5yzTtc9+xjtS9TAOupw0NQdRglW5oBskYxSgvFIfMYke4ytjZ0R6DahLqDeW1wWa gRH3JYiARCoTeIhec/94szb5hsyKHNNx+Iay0aQ== X-Google-Smtp-Source: AGHT+IGgp0/LFOnOVLKTwvr2itlc7DfEpJiEC5mNOsNgKnoG0VxvpaCvtmpTWUcoQdIKztSXOlXn9/ACCsSBd3lfotY= X-Received: by 2002:a81:c20f:0:b0:61b:1e81:4eb8 with SMTP id 00721157ae682-6895fbdb8c3mr47090427b3.9.1722619758887; Fri, 02 Aug 2024 10:29:18 -0700 (PDT) MIME-Version: 1.0 References: <20240726094618.401593-1-21cnbao@gmail.com> <20240802122031.117548-1-21cnbao@gmail.com> <20240802122031.117548-2-21cnbao@gmail.com> In-Reply-To: <20240802122031.117548-2-21cnbao@gmail.com> From: Chris Li Date: Fri, 2 Aug 2024 10:29:08 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6 1/2] mm: add nr argument in mem_cgroup_swapin_uncharge_swap() helper to support large folios To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, linux-mm@kvack.org, baolin.wang@linux.alibaba.com, david@redhat.com, hannes@cmpxchg.org, hughd@google.com, kaleshsingh@google.com, kasong@tencent.com, linux-kernel@vger.kernel.org, mhocko@suse.com, minchan@kernel.org, nphamcs@gmail.com, ryan.roberts@arm.com, senozhatsky@chromium.org, shakeel.butt@linux.dev, shy828301@gmail.com, surenb@google.com, v-songbaohua@oppo.com, willy@infradead.org, xiang@kernel.org, ying.huang@intel.com, yosryahmed@google.com, hch@infradead.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 14C241C0008 X-Stat-Signature: 6fsutrfn4j4qqfn58tprtfwznqdgsonx X-Rspam-User: X-HE-Tag: 1722619760-129114 X-HE-Meta: U2FsdGVkX18miKMGqfnQNd5Ycha47G0Vj/7qClSxM3YqfDHWzsROz/FLm1AKRF7oUy3S+TDA6Pr14jk3acZ0O2sWS8Ix5dhpaqszv2XAlp5sOZTzQ7BmruuGpKNBzuPA33GX0VXeGoLzbVvyMUgXMhZi7Iq7iAzkVUHhOIpBKZ6cIfssvtDewsZwqpmk/4pvl4km+AnsZu0+A8C8EZl5bgiwF5Pcg/anZoj/tS/ECsszA6IiNlLC6usFCWgrFOdat/okSBe6Ng6cjj6Fi6h+ApwL1UhOLVGSr3btv4W8B6s7XJEtiqt5OCl4b7bLa9g7cQ3dRh6lGAvRqSrBJS6lwRJgd5y447UPwimVbbfTTA4I3GD7RLlqoVVF2ECVfK02nntllaQEDZLpQjNy4z48wHthvmab3qkKK0TnpDk3g0kZ0202l3K1+A4e2gD41hg+6Y8sTvmWeo1ry+UgDdrf8UYlIrCuWcSvfQSyhIYvUGNtOS9VCaD4EiPN133/H131OdP/ZAJOPeBnPKXZQA3P+ALk7ewmyw7cVKsG5DJRoBqUm21oIG3GtWEkGj3mWhZ5H5oooGk5IMLZiwh7iRPaAFapJpyAeXd6IxtWZJ0IZe+b6kPjOXsaNyvltIEZMyCG8y/kfC0XNHmeUwgSg777eIzb9Ur8Vu+AxLiUT+f0v4GxgSldEXpYoxV9zGlRen3USSiZHVKlr81GfVJo1odiingqHlrCRdxAg0mAfnvvXVTqi3CDwltDz7cSNX2d9rHOzeRc7VtSkTwtt+DQjDccivRQ+gqXcm1C+BJCDHpTO/TlOdULZ6sE3pszrp9Enu6Xbe/n9wLkh1IEOXzS56cs8lWljG7Nn6KtC38S3ito1x5/rE1Kt8LMMEkWvsSKPhl2DNXBeHCBao6LXLatvWuRMzj8/Nh8Oo/ozuCKx3NKbV9b5y9lVtbl6Yvc1xDBPjbMtqGRMTmo8F2irVaSr47 vvq5pLg0 OcCoioOK1rOCOIeM3SmkBiwnmZ487DWxiOFX3IjuvL+nWA1oBdnXgJTf0XCa3WiU+4dcXoC9u3yrrpeVT9D+dJDE3tg4YO57SwbQQGDFzq23+dWYJ5j4OCuRBXvojab53iwrzX2vba7eo1XQRud94JLoOVpGLxLyPshU1m9iytA3gn5ZV6UiVyM9x8gEgffZ6ekEpgwwqydZexgpn/w7syQCZ5XyPnlS6YViDx/D3rAnrhatFp4BuYJ6soLr/bzOpsx20zewkeKbMpzk+45OJ3SgUT0zZQbNpCr66xHllROLJYBMKSXbe0o5UxEhumFASza+ilGUdFYgUzVvWMtXA2eoAAJ9y9PU+BOq9YKCwadZzq/E0jRizmZ5pXzM7RZhHK/zrTZ8H1IkDAO22ByYlw/BBBKmYSMUwgZEecIcDkC319prrvVl39Hk0eGvNhpPt/oj1 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: Acked-by: Chris Li Chris On Fri, Aug 2, 2024 at 5:21=E2=80=AFAM Barry Song <21cnbao@gmail.com> wrote= : > > From: Barry Song > > With large folios swap-in, we might need to uncharge multiple entries > all together, add nr argument in mem_cgroup_swapin_uncharge_swap(). > > For the existing two users, just pass nr=3D1. > > Signed-off-by: Barry Song > --- > include/linux/memcontrol.h | 5 +++-- > mm/memcontrol.c | 7 ++++--- > mm/memory.c | 2 +- > mm/swap_state.c | 2 +- > 4 files changed, 9 insertions(+), 7 deletions(-) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 1b79760af685..44f7fb7dc0c8 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -682,7 +682,8 @@ int mem_cgroup_hugetlb_try_charge(struct mem_cgroup *= memcg, gfp_t gfp, > > int mem_cgroup_swapin_charge_folio(struct folio *folio, struct mm_struct= *mm, > gfp_t gfp, swp_entry_t entry); > -void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry); > + > +void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry, unsigned int nr_= pages); > > void __mem_cgroup_uncharge(struct folio *folio); > > @@ -1181,7 +1182,7 @@ static inline int mem_cgroup_swapin_charge_folio(st= ruct folio *folio, > return 0; > } > > -static inline void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry) > +static inline void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry, un= signed int nr) > { > } > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index b889a7fbf382..5d763c234c44 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -4572,14 +4572,15 @@ int mem_cgroup_swapin_charge_folio(struct folio *= folio, struct mm_struct *mm, > > /* > * mem_cgroup_swapin_uncharge_swap - uncharge swap slot > - * @entry: swap entry for which the page is charged > + * @entry: the first swap entry for which the pages are charged > + * @nr_pages: number of pages which will be uncharged > * > * Call this function after successfully adding the charged page to swap= cache. > * > * Note: This function assumes the page for which swap slot is being unc= harged > * is order 0 page. > */ > -void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry) > +void mem_cgroup_swapin_uncharge_swap(swp_entry_t entry, unsigned int nr_= pages) > { > /* > * Cgroup1's unified memory+swap counter has been charged with th= e > @@ -4599,7 +4600,7 @@ void mem_cgroup_swapin_uncharge_swap(swp_entry_t en= try) > * let's not wait for it. The page already received a > * memory+swap charge, drop the swap entry duplicate. > */ > - mem_cgroup_uncharge_swap(entry, 1); > + mem_cgroup_uncharge_swap(entry, nr_pages); > } > } > > diff --git a/mm/memory.c b/mm/memory.c > index 4c8716cb306c..4cf4902db1ec 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4102,7 +4102,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) > ret =3D VM_FAULT_OOM; > goto out_page; > } > - mem_cgroup_swapin_uncharge_swap(entry); > + mem_cgroup_swapin_uncharge_swap(entry, 1)= ; > > shadow =3D get_shadow_from_swap_cache(ent= ry); > if (shadow) > diff --git a/mm/swap_state.c b/mm/swap_state.c > index 293ff1afdca4..1159e3225754 100644 > --- a/mm/swap_state.c > +++ b/mm/swap_state.c > @@ -522,7 +522,7 @@ struct folio *__read_swap_cache_async(swp_entry_t ent= ry, gfp_t gfp_mask, > if (add_to_swap_cache(new_folio, entry, gfp_mask & GFP_RECLAIM_MA= SK, &shadow)) > goto fail_unlock; > > - mem_cgroup_swapin_uncharge_swap(entry); > + mem_cgroup_swapin_uncharge_swap(entry, 1); > > if (shadow) > workingset_refault(new_folio, shadow); > -- > 2.34.1 >