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 30A61EB64D9 for ; Tue, 27 Jun 2023 08:30:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A0DC18D0002; Tue, 27 Jun 2023 04:30:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 995E38D0001; Tue, 27 Jun 2023 04:30:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 80FC78D0002; Tue, 27 Jun 2023 04:30:01 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 6AF1A8D0001 for ; Tue, 27 Jun 2023 04:30:01 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 390641208D9 for ; Tue, 27 Jun 2023 08:30:01 +0000 (UTC) X-FDA: 80947855002.19.F59FFB7 Received: from mail-qt1-f172.google.com (mail-qt1-f172.google.com [209.85.160.172]) by imf29.hostedemail.com (Postfix) with ESMTP id 62DD0120002 for ; Tue, 27 Jun 2023 08:29:59 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=VpUHivcq; spf=pass (imf29.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.172 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687854599; 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=42jADAOC7MZeTbDlvQImONhBTFD+TYlgsjaZgjq+r6w=; b=AntRU0gLhnMbdblnue7ONGaRaAKNuWlD2i2XhL8JYzfIuisMjJX44A+L+qAP6u222DJGR+ fx3NjjbwsVQiPveD67QdagLU1AsXtguhW1kjJKvOK+r53dh+5HNP+/gUXflIMyRgF/Tex1 xwSbN8u77HORS+/JsKKD53UvwF10Ejs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687854599; a=rsa-sha256; cv=none; b=t0WCCWBoagIlsZ1Hmw5Y7CXxU3/4+RL9e5vTkk9ks5eeN2lEmSnH7pikHJmTaty/rooX1+ i4AyRrCB2mozl9uTda67URX4Kfnr8oNT2o3foGWJ5f46z5nqPEu2IdxOfwkT19Jcb7YefP dz3xzaYmQUTboB1CPuRp5xS384707Js= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20221208 header.b=VpUHivcq; spf=pass (imf29.hostedemail.com: domain of yuzhao@google.com designates 209.85.160.172 as permitted sender) smtp.mailfrom=yuzhao@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f172.google.com with SMTP id d75a77b69052e-4007b5bafceso153341cf.1 for ; Tue, 27 Jun 2023 01:29:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1687854598; x=1690446598; 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=42jADAOC7MZeTbDlvQImONhBTFD+TYlgsjaZgjq+r6w=; b=VpUHivcqvdUZrgCRoZwbsCsrDHhYaYFcsFaeAfGB+kCFckJgv9C01BvGN7jtR5nsY4 HQcueTVDNqcIMaUYqjBVwihu6lYI6bfIM3pKFCtOYc7iaIumcdkrpQuM/LMDhLV1YoII sN+SrgrTedc0+L9S4RRMyWUtAZ3mBNF40ufDFY+rRoM4mNQOBfPdAXOrKLfC+DTXxl1T tC9pivLeFKSbhdaC0QRd6FoML3RCBD2NWh9k9jCs4Lma13vQN5ZuOaIzCrfSnQlro4qX MabKVbrPXuLu/C79k5WxkAoG21mlNwBJ8ocvaep3wOCVgalzbEjgVw/ubMrj6jPz4ekv VwYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687854598; x=1690446598; 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=42jADAOC7MZeTbDlvQImONhBTFD+TYlgsjaZgjq+r6w=; b=Kzf6BG16cmFIBk6DbtZtL0te17YBJDPSeF69tqzL6QhA2jDLioFd64ezbn9Qm1oWw9 a8VtaleiTdbtZznHtuS9i9iDldnxw5r4PhFebbues19S+SySXTqH4m+B6wk2YW2xQCa6 UixD0IU04oREWfM4UxSe4Z++sHvCqFz8iHWMcbiii5eT1Acm8XZ9pWJikSdmTW8AfOB/ 5iALuwInjTS/a821xl2D0KglSTElwgSL8n6fi/fMW+jGuHizWeSyCrA1WEE3FC9sNHL3 eDHdccl6bPXTzHMFht7V+v+E3jW580r7KtRfgZvJBbihAOvQMM0KnKEQ/OHRE9Ycd66R Lj6A== X-Gm-Message-State: AC+VfDyM9BuDxkOM3IV+b9Km9hUzhdyDWdyXrSRf0u+j3q6+9+3O+8OX OaaT14uXx4mFqCO26uoAH30Ho+5Mbj8+u5TpOmJcZw== X-Google-Smtp-Source: ACHHUZ7VSWNEPBv6EO/KQhU17J+bBSs3DTF1ZjREFJjlroYQvM0LGCDq5w6tGC66l2NxGKuHVUaC3aBPWro3od4ACDk= X-Received: by 2002:ac8:5fd6:0:b0:3ef:3083:a437 with SMTP id k22-20020ac85fd6000000b003ef3083a437mr130383qta.18.1687854598290; Tue, 27 Jun 2023 01:29:58 -0700 (PDT) MIME-Version: 1.0 References: <20230626171430.3167004-1-ryan.roberts@arm.com> <20230626171430.3167004-2-ryan.roberts@arm.com> <2ff8ccf6-bf36-48b2-7dc2-e6c0d962f8b7@arm.com> In-Reply-To: <2ff8ccf6-bf36-48b2-7dc2-e6c0d962f8b7@arm.com> From: Yu Zhao Date: Tue, 27 Jun 2023 02:29:22 -0600 Message-ID: Subject: Re: [PATCH v1 01/10] mm: Expose clear_huge_page() unconditionally To: Ryan Roberts Cc: Andrew Morton , "Matthew Wilcox (Oracle)" , "Kirill A. Shutemov" , Yin Fengwei , David Hildenbrand , Catalin Marinas , Will Deacon , Geert Uytterhoeven , Christian Borntraeger , Sven Schnelle , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-alpha@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-ia64@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-s390@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 62DD0120002 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: btejcofs1fts85gwmpfazs46z8rox3o4 X-HE-Tag: 1687854599-254958 X-HE-Meta: U2FsdGVkX18cku8ilb6Y+Xkb3/QowjYd8lprzIxaZne4NDefyX2RuBuENIUmjBqN3FmwqEnnM49f/CBVWDtJ61B2JdmWarsxPlRo5droRyDM+BnQ/nKdyLvJD2WPhHS8a6BKWtXHiZTDaz3UX3bhpogWNiIxD1uvTEOkKS/4WXlKRpZ0jvcUQCJMhwwhGvkTrdr/kK5SnwEXOeADcKwzXib/mLJODTuU4mwCW0k/9z511O7AseHSIO8M0MryqQaUS3TSZLWgcrAF5pN3Q9/l4Bg9pJWfTzDVqgpmaDYN7BGg4xlBtDyreOq1Z426ss/lB/yGlyYREOipCcniq2NQSZTFj/FehIrOm7aYmFtUFXd584rGxcDklmyHoBDdpfOjrKuJw4b6xPR66fr3sadkfIhLnBch+93haarecXXKsH2qrUIRX3q/lDodlSlheKhrRufBHEC1y9WVJeCcFSxpB3zwe6fkU9hsyQzcXjAHYxqE0o62H2wSH/ZVOIfNutfCxK5pQ4yLB7fKRf8wuhY7veg26WFV2HT2zNVnGDkkc0VrrvmdislggOuLq0nEKmyfWImKFR+UnyQHB4cCf43sntrjLsJeTsgNBtewdEW6Ds84XLdeso51RYZCTr1mtStYes3037SwkagovBLXfZu3iSUM/1mG+iZdZWxUck+lIWK5+AggcdoJhEKmiyoYm8sme3amg0ZTNmhDSb+QjG7IGIKzEIMy2utGeWYFTgdcEct2gfJznmz9NP2IalbSMAzVxIjxMAee9p3Lv/LJq9ylVqbXJ1Gpzg5LMa9cjpt+OpBPFOjcm8YvmaDyNOXTm3GCD2WWgDN0DuqDoLLf/fjbo4esCAZYrkDWOSunhr9TRQvCflsW8VIEnOhruB5lP6TYISPGKsVRuKuZUiif+fRngCZwxRmtSR8ij821RdQkr2nfPa75QSPlOMDG5ZFdPg2L1LANstmoZDVGpXTmv9L mAE9KYZz K3qMf846e4yuKYxSy9g4NBoNnm3KfKnqyZ+GiRQxrM7rRdox9vABM0UX6x5G80pe0whzl423LR7EGfY8mhMVzRI1+ObnADjsIAHzQGAjOzx6Hqc5dtitzod6m/8t106DcMkJGE8okkpYMuyjXS1UzsZqOgnIvsZ9UtulbYPB1SFXFC4MaN1DO9HVEgckQUAtNKCA9j+UHXD/eVXk0Ndg68H9DZQRBeOYUunwDr8OxuGZ1mUGayKPQAeiAwMR6gCkRJAN+DQBfajA5EzHtZPOTIv9CJ5MyHjf+msAjseKnXSr9V+Z0qzLomvUBB772zImfx1+9tQUdmIrjTUF1F695Wv/57g== 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, Jun 27, 2023 at 1:21=E2=80=AFAM Ryan Roberts = wrote: > > On 27/06/2023 02:55, Yu Zhao wrote: > > On Mon, Jun 26, 2023 at 11:14=E2=80=AFAM Ryan Roberts wrote: > >> > >> In preparation for extending vma_alloc_zeroed_movable_folio() to > >> allocate a arbitrary order folio, expose clear_huge_page() > >> unconditionally, so that it can be used to zero the allocated folio in > >> the generic implementation of vma_alloc_zeroed_movable_folio(). > >> > >> Signed-off-by: Ryan Roberts > >> --- > >> include/linux/mm.h | 3 ++- > >> mm/memory.c | 2 +- > >> 2 files changed, 3 insertions(+), 2 deletions(-) > >> > >> diff --git a/include/linux/mm.h b/include/linux/mm.h > >> index 7f1741bd870a..7e3bf45e6491 100644 > >> --- a/include/linux/mm.h > >> +++ b/include/linux/mm.h > >> @@ -3684,10 +3684,11 @@ enum mf_action_page_type { > >> */ > >> extern const struct attribute_group memory_failure_attr_group; > >> > >> -#if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS) > >> extern void clear_huge_page(struct page *page, > >> unsigned long addr_hint, > >> unsigned int pages_per_huge_page); > >> + > >> +#if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_HUGETLBFS) > > > > We might not want to depend on THP eventually. Right now, we still > > have to, unless splitting is optional, which seems to contradict > > 06/10. (deferred_split_folio() is a nop without THP.) > > Yes, I agree - for large anon folios to work, we depend on THP. But I don= 't > think that helps us here. > > In the next patch, I give vma_alloc_zeroed_movable_folio() an extra `orde= r` > parameter. So the generic/default version of the function now needs a way= to > clear a compound page. > > I guess I could do something like: > > static inline > struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma, > unsigned long vaddr, gfp_t gfp, int or= der) > { > struct folio *folio; > > folio =3D vma_alloc_folio(GFP_HIGHUSER_MOVABLE | gfp, > order, vma, vaddr, false); > if (folio) { > #ifdef CONFIG_LARGE_FOLIO > clear_huge_page(&folio->page, vaddr, 1U << order); > #else > BUG_ON(order !=3D 0); > clear_user_highpage(&folio->page, vaddr); > #endif > } > > return folio; > } > > But that's pretty messy and there's no reason why other users might come = along > that pass order !=3D 0 and will be surprised by the BUG_ON. #ifdef CONFIG_LARGE_ANON_FOLIO // depends on CONFIG_TRANSPARENT_HUGE_PAGE struct folio *alloc_anon_folio(struct vm_area_struct *vma, unsigned long vaddr, int order) { // how do_huge_pmd_anonymous_page() allocs and clears vma_alloc_folio(..., *true*); } #else #define alloc_anon_folio(vma, addr, order) vma_alloc_zeroed_movable_folio(vma, addr) #endif