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 4BF99C10DC1 for ; Tue, 5 Dec 2023 00:58:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D2CC56B0072; Mon, 4 Dec 2023 19:58:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CDABC6B0089; Mon, 4 Dec 2023 19:58:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BA1AA6B008C; Mon, 4 Dec 2023 19:58:23 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id A737A6B0072 for ; Mon, 4 Dec 2023 19:58:23 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6166516046B for ; Tue, 5 Dec 2023 00:58:23 +0000 (UTC) X-FDA: 81530953686.12.093F24B Received: from mail-ua1-f42.google.com (mail-ua1-f42.google.com [209.85.222.42]) by imf20.hostedemail.com (Postfix) with ESMTP id AB7A51C0021 for ; Tue, 5 Dec 2023 00:58:20 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Ml36/v6k"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.42 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701737900; 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=m97CsDjIvuM5Yw/O14me8+/R6uFBIRKDK86GXz6XBIc=; b=f6d60k1RSNoWTmrxe9yG2M8WK2er9e/hHrklUsrnCZ9RjddnL7FCW8hy5lGcgpxVewOg1A Szox5atSeeBlHylvZTDf7SFCDssmre0Mp36W3QJf5iGwJGVEXo/HN8wHoaQyWXwAoIYbvU 8AOtfd5XcLqa45/A2PlBYMVmlbjSrHU= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="Ml36/v6k"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf20.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.42 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701737900; a=rsa-sha256; cv=none; b=SobrRxQ+D8I+e3mrL1lcz3+cWzJ1Z4ug1voqGz3PLwyLqWsE582XpOYoa1lJ6FOBBg+uCx j+aM2P6K85C2C7SBj+9Kb2OfeFZBETaf7OkpOIoZwq7qtvEU3dqlrMPsykR3zF58uMDcCz Iki+8cQrLXb/431wSNRe0IlOiT50noA= Received: by mail-ua1-f42.google.com with SMTP id a1e0cc1a2514c-7c513dc5815so1736253241.1 for ; Mon, 04 Dec 2023 16:58:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701737900; x=1702342700; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=m97CsDjIvuM5Yw/O14me8+/R6uFBIRKDK86GXz6XBIc=; b=Ml36/v6kwUYlEigsn1NYakeMagAgtS4Bfk0lXg5u53aSFJCgTng1eJxA9mmfbRpJgL JlD/ASUD2I3mVQDqUjCdQQlHAVNQS2+4Fzo2qenVGk/1+3+oQ75HsrFN4vTxkEHtGz4O eRYjamjKboKhccFC78gYieS2IMW388RojqmF2Q5bdK2jZeRalBT1K5WjfznuLcFU2c6Q srExy72hbNMTplqh7w3krorajwCl7LrnD5/e+fo37dAyienVZQ4LZ7BX9lciH5di4E05 fHmj3+Fv/tjHwRnB3+W2eBryPkRHkUHpUJiDj0me3AZ35itAO1UpF1UETeU9mnLob5jS zYcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701737900; x=1702342700; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m97CsDjIvuM5Yw/O14me8+/R6uFBIRKDK86GXz6XBIc=; b=iVC+f/08/9s/G5a7PPXPtlpVBV8dkDcm5itSEyTN7HKmNHP3J7fkkqkA2b3RdPBx91 Hsff1M0WmkMsY74rJEWcz+9hl5Qb0ReCXgvR9RdbgoZqEWxGeitXjeRt9edK5ecuf8WV /897sg2IRMJEL9xvc8kff1ZCGNjSlSzsZJR4u4xW117Qdyrl/yYHYN2u88+ADdTQeIuM +0wk/l525IPml3vhDArb8nZQdRRO+efbTAq+RVD9EpdvzLg5rtOI9dcr+wsLZq0FkV// IXEd00z8TX7MF3qjhx0pIUVLrKZWIRTSxLT0t4CdlTJjyYvhqCqZ9HSt26Rj8fgh7z6o UbqA== X-Gm-Message-State: AOJu0YxwufHiSCcifhBhNY42YsbaFMhIEzkpO28dmEAkmTA8Kd8oKbdO 4L+yxa0w7gEgIwpLURGC42rHtJX65n7efbQE7bU= X-Google-Smtp-Source: AGHT+IF2q2TWOeMqSOd1vGhXRTy8XjsdY6/XzmUXxY7h4GGg4Ey5kD+gl45fWsULNkFj8TX/YlG/FDEoew2Vr7TxtGI= X-Received: by 2002:a67:e444:0:b0:464:a39f:c58b with SMTP id n4-20020a67e444000000b00464a39fc58bmr595462vsm.62.1701737899771; Mon, 04 Dec 2023 16:58:19 -0800 (PST) MIME-Version: 1.0 References: <20231204102027.57185-1-ryan.roberts@arm.com> <20231204102027.57185-3-ryan.roberts@arm.com> In-Reply-To: <20231204102027.57185-3-ryan.roberts@arm.com> From: Barry Song <21cnbao@gmail.com> Date: Tue, 5 Dec 2023 08:58:07 +0800 Message-ID: Subject: Re: [PATCH v8 02/10] mm: Non-pmd-mappable, large folios for folio_add_new_anon_rmap() To: Ryan Roberts Cc: Andrew Morton , Matthew Wilcox , Yin Fengwei , David Hildenbrand , Yu Zhao , Catalin Marinas , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , Itaru Kitayama , "Kirill A. Shutemov" , John Hubbard , David Rientjes , Vlastimil Babka , Hugh Dickins , Kefeng Wang , Alistair Popple , linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: AB7A51C0021 X-Stat-Signature: q8n5ga44kyfz63fjkscsgkkjqydu7ndr X-Rspam-User: X-HE-Tag: 1701737900-278805 X-HE-Meta: U2FsdGVkX18HJLTbKGdsEc8dXOLKaapgjV78KU01RCUrTV2xC2mVFjEllj5ZI00WRxG4I6hVB1fRi4fY/o3QfNlms96i44rYbg8D7K1TsciFSFujz0HvjIighNCqvK33huH0od+fe+a1xzY5m8p7RIT2T8oztYQ9EFvB02VANGju5QwH8CPsnjyKv9WiOc5PUO8NS1SlTu9MM8J5gjlwi9ZVGIuTB5qAMFWPVRrYfTKmi7gTxtt2sZvIt1X7I02gxmDsu/lYFjiXtwaS9M68JUgUapH1BwXmjn/XmRpiUMJX2e/570//mVq1fIYRYNKcHUpBBcRXBGIE3w7hIwkg/TQfx3xfGvl0ZMMQ7WNeDpMkL/FAdzYt9K3Q3OAwdIDgonL+8Vyg9LOURRNrbarXSAfdm9Pf14TjCjsKVXVa8mEoWhQlGbTmpIkpKD06f/0uswgSKbW55c9cfKVjAWxKeHzrDD7W9rsfEVyISnCnT1k6MLEM6ekHIp0sINvRmPt0LvbzJYFBbkah+SW5vSaiJ0HtAGEAqHRor5y+Dof7dOOQk7sOickWSr0gMQ/vhV7zCLzEpjpqJymkPTJCJB9dUpYYGd1fb4wswgeMRMn1lLHJmE9Ai0BEiv8v+lDAPiplbMFDamR2dWVBUzj2mOnTGzoXN/gN1lxgJYiWPez2i6Oa4ja1YiBek1+tC+7YeBgpPHWbjNGwxKh9gGcbPF8rqJ8n71bgmIJn+WK9/4Zv/CWBZ7w8ojM+sj/w1qkrf65qyPWvV6xToJfuvjw2qPsNtGcUSeJ4RDTjWSQdYpK2sXdlqYifxAbAr0aUadS+Y8Ha/zSlAK3CktjnlQvG3adcFfcPHgrwDVEsQ58paDrnetJWq6T64y1rQP1CzJVP28ebR82GqsROykEhyaG8bhw8US6iDfpxaVSMq5wJOeFmG6APuAl4kDbQ7UkhA1JYLdPid7RPZY6djhQLI7YjxvS UZtE/KRE wDp+8qr1Qdtv1WnGi3cJjF3ed5gaLtBBuuynudKgD5MnGlV0g6TTWoxTWWPYri5VWTbxvLxVpc7ZLVd40tKU8gdKqec3mJHBPmjClOfvCjMOpzkYi9mjGvRAM5wQUFylMaj7GW5L597F0XOZCsylVeLFQUoE4w8gNweXmAYSyO9a5c6w8559wGuuEBHKqTJB/OfWI4Q6C794kCknTl5uf7J26pwWg1KTDyVPZYAqaSNQTMGo5ZyUH3TqSDw59ehgIC/BhBvy03f0loB5nxHy/BdYt+ja/zugddCNP7u+i21U3NEwg3u8HCOqC88DDVCbsYw48H3SPuZudPlcxpnryJ+VFvqw0WSLSs7MPOnnvFjYei77UBurChGoMnG7brk00Wb8yKhBSkXyg79kodVDbSQAeJZIoxJc5rsvmZB4QcQwkmZgIr5xjp90HpJ/4CWIAgmwifmT5+YLhLf0x1ooU5AGIBp5iGf+TKwGNdA6kpUbTXo3CN6nmEBDmT4RKmhdTBXLeZb3fm1WYXMky20g/Z4rKIJHfnIIxmN7el/TgynnLUT5iq+WY3T6eCdaJls9+5JoL41DCKXzQ685tFkoMZyRNHnumbuTSwonnT6H59ZC/7fvuHdUey1h/EaISmr2UT7aL4wE8J2Yv+7zFnibfE2xlkA== 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 Mon, Dec 4, 2023 at 6:20=E2=80=AFPM Ryan Roberts = wrote: > > In preparation for supporting anonymous multi-size THP, improve > folio_add_new_anon_rmap() to allow a non-pmd-mappable, large folio to be > passed to it. In this case, all contained pages are accounted using the > order-0 folio (or base page) scheme. > > Reviewed-by: Yu Zhao > Reviewed-by: Yin Fengwei > Reviewed-by: David Hildenbrand > Signed-off-by: Ryan Roberts Reviewed-by: Barry Song > --- > mm/rmap.c | 28 ++++++++++++++++++++-------- > 1 file changed, 20 insertions(+), 8 deletions(-) > > diff --git a/mm/rmap.c b/mm/rmap.c > index 2a1e45e6419f..846fc79f3ca9 100644 > --- a/mm/rmap.c > +++ b/mm/rmap.c > @@ -1335,32 +1335,44 @@ void page_add_anon_rmap(struct page *page, struct= vm_area_struct *vma, > * This means the inc-and-test can be bypassed. > * The folio does not have to be locked. > * > - * If the folio is large, it is accounted as a THP. As the folio > + * If the folio is pmd-mappable, it is accounted as a THP. As the folio > * is new, it's assumed to be mapped exclusively by a single process. > */ > void folio_add_new_anon_rmap(struct folio *folio, struct vm_area_struct = *vma, > unsigned long address) > { > - int nr; > + int nr =3D folio_nr_pages(folio); > > - VM_BUG_ON_VMA(address < vma->vm_start || address >=3D vma->vm_end= , vma); > + VM_BUG_ON_VMA(address < vma->vm_start || > + address + (nr << PAGE_SHIFT) > vma->vm_end, vma); > __folio_set_swapbacked(folio); > + __folio_set_anon(folio, vma, address, true); > > - if (likely(!folio_test_pmd_mappable(folio))) { > + if (likely(!folio_test_large(folio))) { > /* increment count (starts at -1) */ > atomic_set(&folio->_mapcount, 0); > - nr =3D 1; > + SetPageAnonExclusive(&folio->page); > + } else if (!folio_test_pmd_mappable(folio)) { > + int i; > + > + for (i =3D 0; i < nr; i++) { > + struct page *page =3D folio_page(folio, i); > + > + /* increment count (starts at -1) */ > + atomic_set(&page->_mapcount, 0); > + SetPageAnonExclusive(page); > + } > + > + atomic_set(&folio->_nr_pages_mapped, nr); > } else { > /* increment count (starts at -1) */ > atomic_set(&folio->_entire_mapcount, 0); > atomic_set(&folio->_nr_pages_mapped, COMPOUND_MAPPED); > - nr =3D folio_nr_pages(folio); > + SetPageAnonExclusive(&folio->page); > __lruvec_stat_mod_folio(folio, NR_ANON_THPS, nr); > } > > __lruvec_stat_mod_folio(folio, NR_ANON_MAPPED, nr); > - __folio_set_anon(folio, vma, address, true); > - SetPageAnonExclusive(&folio->page); > } > > /** > -- > 2.25.1 >