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 96C22C001B0 for ; Mon, 3 Jul 2023 19:06:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1CD6928002F; Mon, 3 Jul 2023 15:06:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 156DF6B00F7; Mon, 3 Jul 2023 15:06:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F387A28002F; Mon, 3 Jul 2023 15:06:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id DBD056B00F5 for ; Mon, 3 Jul 2023 15:06:36 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id AC710C0245 for ; Mon, 3 Jul 2023 19:06:36 +0000 (UTC) X-FDA: 80971231992.22.1D6F595 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by imf25.hostedemail.com (Postfix) with ESMTP id D87E5A0004 for ; Mon, 3 Jul 2023 19:06:33 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=XV8ARzOe; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf25.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=yuzhao@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688411194; 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=dtH9VX9zQlOrzH25LrN35KBx/OwKQshilIn0Tyi1LzU=; b=ElV6uXf+zGoP2cj0KW/83a34iWXT1fR6L8I7K7hZskplII9YRoUIKWoA6cP9poeNA266uL cymOw0wfDn3l1A93FEtivIww0xB0zly5074Tdr671NB1LXy/RuCuYG/HbnT2ar/d9RWDxX kK188nnrVq93a6ALSbLhK3RYdsJ56f0= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=XV8ARzOe; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf25.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=yuzhao@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688411194; a=rsa-sha256; cv=none; b=fn5KpQtmUxVQl8g2nDDoXvzqaqPrWzrf/7pUsYLljZ5DNs3gYHijMxjyMtaYB96nBt7W5p VX5ZBgTII/SoN0WP0jOQiixWiNzbHkCbHNJ3Lzr7FCL4EVmN+Z5lcU9DqYtLPhpHqz3NNL KAbmva1plZYTKopT0M0T+D93sEhd/5I= Received: by mail-qt1-f174.google.com with SMTP id d75a77b69052e-401f4408955so427471cf.1 for ; Mon, 03 Jul 2023 12:06:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1688411194; x=1691003194; 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=dtH9VX9zQlOrzH25LrN35KBx/OwKQshilIn0Tyi1LzU=; b=XV8ARzOexIi9d51XEZ4LBwpQAJfh5eLRI6V71U/cSAX/3Rg0NKvL7BuFP2kQCO4pUa LYbGqtiacCx4rIVo3E3/+XJFT7/WLipNZh+4ki9QemJgxTL+HFWmc/TeuKo9oE6hdDqH W7TVYUE+hhWYQkCsmc91r55R+Nk4qgs5eW3Ay1X0snZDPJgYbnJNZmMsOTl4monY7Z/q ubHOeI6ivKqY+G2p7RSmO64ddhfjiXzB2STA3f7uyMDy6u7ccEA1zrBxaZb99ZioxvpE KjBYYsnFDL5l+7jEbQc9f+eSqvQ9XfC36SgyCHNxx6x1DRr94vDMexn+CYtY4lxa/OX0 Hk9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688411194; x=1691003194; 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=dtH9VX9zQlOrzH25LrN35KBx/OwKQshilIn0Tyi1LzU=; b=EDeu8XW3ryp0hFSjSDxyfuD21wCYVnpn/iVMOW8QaTKv0mzta9jVtULxNwrNXIlf6W dgoxiFCRuBRqpUL3DLpf/okC3gcXDnirVviG7kNhCz6gMq+vWKtQW32Kk7v0hmikZlX7 H3V6lFoJcN7C4agudHJ3a6ltVNyMVub0meNZl42PIkRg2KbShfyHM5qDNmTOTdbIwE7x bGrCQAZEd48olrMJFsrz/BDqUTDlKRl6kCDfG2hFi4rIwqhL/sGMk+UZlRESIhVR9xzT rrN1ZHKXnTYrn90grRPYqFQuf9Mzxt/Glo4FmvV3+Ql9rxbh4JjT3IJg2WwavKkNKf1+ apMw== X-Gm-Message-State: ABy/qLZ5ZxTYdUPGJiOUwKUIo3qWJ1rj/w+c1STl/jKaXA/aSKrGbo5R 3wxyvRyZQgb4MYTQxUkI+gqKpmzrWjfLpFoI81hTVg== X-Google-Smtp-Source: APBJJlHON4TWi0qQ1gFxI43A3FgOyVsahUaTj0rQqg84esGxECbdTYLcC4IPdg0vrlxsJRPFs13pHyCRSEf7eJpW79w= X-Received: by 2002:ac8:4e4c:0:b0:3f6:97b4:1a4a with SMTP id e12-20020ac84e4c000000b003f697b41a4amr12864qtw.20.1688411193668; Mon, 03 Jul 2023 12:06:33 -0700 (PDT) MIME-Version: 1.0 References: <20230703135330.1865927-1-ryan.roberts@arm.com> <20230703135330.1865927-2-ryan.roberts@arm.com> In-Reply-To: <20230703135330.1865927-2-ryan.roberts@arm.com> From: Yu Zhao Date: Mon, 3 Jul 2023 13:05:57 -0600 Message-ID: Subject: Re: [PATCH v2 1/5] mm: Non-pmd-mappable, large folios for folio_add_new_anon_rmap() To: Ryan Roberts Cc: Andrew Morton , Matthew Wilcox , "Kirill A. Shutemov" , Yin Fengwei , David Hildenbrand , Catalin Marinas , Will Deacon , Anshuman Khandual , Yang Shi , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: D87E5A0004 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: duxjfeuyo45omgh8dwr3we9njashpnse X-HE-Tag: 1688411193-459179 X-HE-Meta: U2FsdGVkX19kxzbfjB00B7TBopuyMbQRbVr1TOWor7MyFeZ0aLLv/TzGVxUO8YCsptsdylHN/RZKouNpQtxPhPcT0H9hu0DHHlQi8biU9tcrhCt7sudnQrQzkWfoSbmVfrfeg1aJOkatFxpH1qOLZlFMztRmS/+PBUy1hy7II45DIjximdl/lYpoCNcU8WF7JTNwIKjEFjpU4ABX8eBDiNk9Dk8prUK6c3srxL0L69P/lGkORTr1ta8mF/OHsQPeJjVwO3BR4uqtYnMMH7WvtcYvfPj/CkmuSk8kN1QGuhpNrbARr4teiuXVP6GSSEpOIrKcVlTn5QMRozHZ2Cm05IFPErDG0eqJfcWHZ9StrAc4kN8CKqIUkXh751vd5hOFSnSgXpLF1ey/5nYitESlhQgS+jERX+W67q8buqAV64FGfgsJJreReQiFEWH2S7xdLnZxxKwbiQEzJu5evXrQMS8c05ZCuEepv6fzOx8203ks2lDfVGTFciDDTD93Iynljo1UySzgzPRXB4gzf0zpW+gkGVnNKApT0q9jEV73Ak4K339vHRpFQfGR4Cv33amaeTpTHtI6agAQ/FXOEU87unr0xNPVxZT2SRzIjTZb7uSf+OZnXTQ+WHkxx8mZtIkQitRtDPSVkXN2nTkC4e2GQZFI57pb7vXWNhPUyCVtomsNNE95rQsjDaCr8TbbMOumuUDNXw4zuN+vfEGACMaszkza9eMOh6Kzx3r1CsrOjYm9XWZFxQqGvqi+2dTsItYfkkjzUAAPfma9LXb5CM7rjv64l/qhZ4KQvwFfvfH6qzbcXdkhhyDVz1tF8hNqz/U69HihUGbGirZ2QmhZZVp3kjYKflbNcQa8eu8QBYvdHF6LLH87RDyx6lNdB6tY+wmfzxc/CxAM7auf/CGPKdLrm8x5Q4y3rN0+YoaaPLIFjyfJ/5Yty+h0+5yw4z5zlrddf7DFh8u2TCZUAQqNfRS vPBy4jgh 888jRwZeHk6nV82AvIK6VavHx6l/UO+JZvTRpApgLRhrPmK5fI33cEquyT24KvAOsNg8uoEDvtEtuUj0uz0LO9nGImK6qxDyUN9Gq1syBRdJWcgFM1i5JTpl0/3lC0LRumUxByOtNI5k/k0726hzReSwOdpztCirduGQc8y6R9gCeyEKbolajJRhEAvac2lXDPN9HS5aWwZW5tgtGLtyTf8h8s8nqTfjj/7jBDqRVl957Y8eLlNlAVm/KJy5KUTx/sO1p0ld0cgZ0UqDU7ih5mSqoelHG0v/Rn4aw09oiASdUf+ceUmfhGDp3ZQHTED8AH30LVe1hluGNWxPQVj8/NH+XdbY6b9Oh27XlKu8KxlqEigM= 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 Mon, Jul 3, 2023 at 7:53=E2=80=AFAM Ryan Roberts = wrote: > > In preparation for FLEXIBLE_THP support, 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 > "small" pages scheme. Nit: In this case, all *subpages* are accounted using the *order-0 folio* (or base page) scheme. > Signed-off-by: Ryan Roberts Reviewed-by: Yu Zhao > mm/rmap.c | 26 +++++++++++++++++++------- > 1 file changed, 19 insertions(+), 7 deletions(-) > > diff --git a/mm/rmap.c b/mm/rmap.c > index 1d8369549424..82ef5ba363d1 100644 > --- a/mm/rmap.c > +++ b/mm/rmap.c > @@ -1278,31 +1278,43 @@ 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); > + int i; > + struct page *page; > > - 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); > > - if (likely(!folio_test_pmd_mappable(folio))) { > + if (!folio_test_large(folio)) { > /* increment count (starts at -1) */ > atomic_set(&folio->_mapcount, 0); > - nr =3D 1; > + __page_set_anon_rmap(folio, &folio->page, vma, address, 1= ); > + } else if (!folio_test_pmd_mappable(folio)) { > + /* increment count (starts at 0) */ > + atomic_set(&folio->_nr_pages_mapped, nr); > + > + page =3D &folio->page; > + for (i =3D 0; i < nr; i++, page++, address +=3D PAGE_SIZE= ) { > + /* increment count (starts at -1) */ > + atomic_set(&page->_mapcount, 0); > + __page_set_anon_rmap(folio, page, vma, address, 1= ); > + } Nit: use folio_page(), e.g., } 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); __page_set_anon_rmap(folio, page, vma, address + PAGE_SIZE * i, 1); } /* increment count (starts at 0) */ atomic_set(&folio->_nr_pages_mapped, nr); } else { > } 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); > __lruvec_stat_mod_folio(folio, NR_ANON_THPS, nr); > + __page_set_anon_rmap(folio, &folio->page, vma, address, 1= ); > } > > __lruvec_stat_mod_folio(folio, NR_ANON_MAPPED, nr); > - __page_set_anon_rmap(folio, &folio->page, vma, address, 1); > }