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 A4003C001DF for ; Tue, 1 Aug 2023 03:08:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 2EFC62800D5; Mon, 31 Jul 2023 23:08:18 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 29ECA2800C8; Mon, 31 Jul 2023 23:08:18 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1B4832800D5; Mon, 31 Jul 2023 23:08:18 -0400 (EDT) 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 081572800C8 for ; Mon, 31 Jul 2023 23:08:18 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 521A8C045B for ; Tue, 1 Aug 2023 03:08:17 +0000 (UTC) X-FDA: 81074052234.30.6700163 Received: from out-115.mta0.migadu.com (out-115.mta0.migadu.com [91.218.175.115]) by imf11.hostedemail.com (Postfix) with ESMTP id 4D5DD40010 for ; Tue, 1 Aug 2023 03:08:12 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=l08yyRa7; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf11.hostedemail.com: domain of muchun.song@linux.dev designates 91.218.175.115 as permitted sender) smtp.mailfrom=muchun.song@linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690859293; 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=lahItX7popIJQqXeHszW8t+rej/YXgptagMJlzrk/Mc=; b=1+xrO18GnPbUVI1HkleyinvYKkoC0NHAX3SdSQFFKOaugIEo2jOPzXr7DBVMqdSeolhYKj 4o3El7nySCmljziobzp6w7/3WZ1YQgro7A2A/yIyWlQX/C4EFy9ulxSn+HM+dcPKoDu4Qz TgfiRADTi/+o5p6gttcoJNs/cUWpE64= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=l08yyRa7; dmarc=pass (policy=none) header.from=linux.dev; spf=pass (imf11.hostedemail.com: domain of muchun.song@linux.dev designates 91.218.175.115 as permitted sender) smtp.mailfrom=muchun.song@linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690859293; a=rsa-sha256; cv=none; b=A6FBJDl/XFbr11AA/Na7JExjlLzessC6j/L2s5QYNZyfgLnyrjgGY7aVQHbfQFif/uMCzz mbAA9RSg7ajGw0VvE7YXqx1QnhH/sjmEEFmqL8Kstf5xk76B6ZWMaXMvyEgi8QeJk7Q+0J tPcg3aRfWS2MrjUpu1nfxFJ5tBDd7hE= Message-ID: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1690859291; h=from:from: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; bh=lahItX7popIJQqXeHszW8t+rej/YXgptagMJlzrk/Mc=; b=l08yyRa7AVbn9IiRcVL+ldDBYvTwLQe9D1gY5ZuVghPkbtBZ2kDDWcxj08Lh6iEcjGdROZ 8LzM3U1IcGsAklR+IG73Mvn7ucA2MwBEB0zuWAPuSBUMc0mwaAXuwewhNd8oqGDRQB6dYI uH1Xii0P39zeGhc5SfQHe/oUbeTdyZ8= Date: Tue, 1 Aug 2023 11:07:59 +0800 MIME-Version: 1.0 Subject: Re: [v2 5/6] mm: move allocation of gigantic hstates to the start of mm_core_init To: Usama Arif Cc: linux-kernel@vger.kernel.org, fam.zheng@bytedance.com, liangma@liangbit.com, simon.evans@bytedance.com, punit.agrawal@bytedance.com, linux-mm@kvack.org, mike.kravetz@oracle.com, rppt@kernel.org References: <20230730151606.2871391-1-usama.arif@bytedance.com> <20230730151606.2871391-6-usama.arif@bytedance.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Muchun Song In-Reply-To: <20230730151606.2871391-6-usama.arif@bytedance.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 4D5DD40010 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 691qp4k5simfsq5x4pe5fj73jkknuwfb X-HE-Tag: 1690859292-874828 X-HE-Meta: U2FsdGVkX1+ShKDCudKNEFFxAxapCL9yYCnNsUqbgPVlyd56eciIf2ci8qk5URAhvtohS0tLs/YZA9htklFlWQgrwLpMnILCnwq3osJ8AN7pvutfWDz4hdAY3dd1DKB+OjxVYs1Nx5nKKCi8QwQr/Ga0XApWLgCAWD24v2hJAdVIlc2LgUr8q1NL7DkD/DTmXheSdpT2uBS0JThewISsBKLJXietuoe4tqCWOoq/REYhbwyDZ8aYz8vJoIc9sD1wTQJ3uLC57c2J0gQuOEzyQRkZPATI7TE00hYFC8bgWKTFxnSubIfZ/Bb5AZ3b/Wsy0jlFCoWZd9/1QIzF5b2uUhCxeuVa6lhZBN9BJ3M43E6Im6hjekDvrFWs10g4CXCfEKPUS5lx6hnzNMiCIQwsD+uMv4IWiP//CUMeBjqBBTz9ia1oIy3Lt6Jrm1rdY/YmybXln2NrKA7GtLKvpt8Ha1XRE2MMd0LOpCUzuKVUQsFguWG5yplpdJdLPZZWgGG0CGvQQlFPtModgGnXr60KRoTBRxV4k38nTLuscSXQhLCum7PJ13SXyD9EgupgPhUATdf7tHC0+Yh9UvN+sDb8XaZ8Inurhg375bW7/aSiUrjilqdxwbujg2+9nciD2EKSZSAMtMiQ//qIcCTaPjnPr9XKPMfCDpm03bpd0qrW5wTdveBpdEIVMRtWmQ+/mkNvsnSlPRqnzjY2do7pJZq+jHv6XAqM5H5eM5GN3lSFexP0LVMtCi0CDU+II+T3XSy6uVhs9WeHl0mTI1CG7tMUjgRwq+93nP33pWYwDWXMNI2wilrwzDC0KnC5Km+YguvaAt7NbDoG4lRjW38KTeeZdF+6iJVp33bBaj9c/Qc+0s1OSji3bG+5vX1vh5RE1Wy94zfWjYjUfNPBCoGNn1GfGvdugDDgpExf2EPP7RA/oSL+i+K9cCGjGiFl1xF05/MMQYecvvfcXk9tZmK5G1y Nm1SJa+T bW9N9wwHpzDBVFnkKXLN1BoLiwr0oVLD6ve1qrZ3O4txBdyVoP6n7/vX8g1RHZo8T02bo2Mc0vCiHJTJKWVcRAkVrSBAXkplgY7DDeNZXMmXRtm+u0SGqk1YtHLV7VFbvkodEHvk/rAW0mQWB/EHU/LlG4ZvnZs7WwR4eF8o93mIHZQeFY0OYsVXgo2nqRMEdNJbVEdqF6HZbF0VcoE4WIPRAxAzJ209vu4cTTjYstyi8saZjWUxG7mPo/h3pmosvCfZr 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 2023/7/30 23:16, Usama Arif wrote: > Whether the initialization of tail struct pages of a hugepage > happens or not will become dependent on the commandline > parameter hugetlb_free_vmemmap in the future. Hence, > hugetlb_hstate_alloc_pages needs to be after command line parameters > are parsed and the start of mm_core_init is a good point. > > Signed-off-by: Usama Arif > --- > mm/hugetlb.c | 18 ++++++++++-------- > mm/internal.h | 9 +++++++++ > mm/mm_init.c | 6 ++++++ > 3 files changed, 25 insertions(+), 8 deletions(-) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 541c07b6d60f..bf60545496d7 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -4400,14 +4400,6 @@ static int __init hugepages_setup(char *s) > } > } > > - /* > - * Global state is always initialized later in hugetlb_init. > - * But we need to allocate gigantic hstates here early to still > - * use the bootmem allocator. > - */ > - if (hugetlb_max_hstate && hstate_is_gigantic(parsed_hstate)) > - hugetlb_hstate_alloc_pages(parsed_hstate); > - > last_mhp = mhp; > > return 1; > @@ -4419,6 +4411,16 @@ static int __init hugepages_setup(char *s) > } > __setup("hugepages=", hugepages_setup); > > +void __init hugetlb_hstate_alloc_gigantic_pages(void) > +{ > + int i; > + > + for (i = 0; i < HUGE_MAX_HSTATE; i++) { > + if (hstate_is_gigantic(&hstates[i])) > + hugetlb_hstate_alloc_pages(&hstates[i]); > + } > +} > + > /* > * hugepagesz command line processing > * A specific huge page size can only be specified once with hugepagesz. > diff --git a/mm/internal.h b/mm/internal.h > index a7d9e980429a..692bb1136a39 100644 > --- a/mm/internal.h > +++ b/mm/internal.h > @@ -1102,4 +1102,13 @@ struct vma_prepare { > struct vm_area_struct *remove; > struct vm_area_struct *remove2; > }; > + > +#ifdef CONFIG_HUGETLBFS > +void __init hugetlb_hstate_alloc_gigantic_pages(void); > +#else > +static inline void __init hugetlb_hstate_alloc_gigantic_pages(void); > +{ > +} > +#endif /* CONFIG_HUGETLBFS */ > + > #endif /* __MM_INTERNAL_H */ > diff --git a/mm/mm_init.c b/mm/mm_init.c > index a1963c3322af..f2751ccd7d99 100644 > --- a/mm/mm_init.c > +++ b/mm/mm_init.c > @@ -26,6 +26,7 @@ > #include > #include > #include > +#include > #include "internal.h" > #include "slab.h" > #include "shuffle.h" > @@ -2768,6 +2769,11 @@ static void __init mem_init_print_info(void) > */ > void __init mm_core_init(void) > { > + /* > + * We need to allocate gigantic hstates here early to still use the bootmem > + * allocator. Non gigantic hstates are initialized later in hugetlb_init. > + */ > + hugetlb_hstate_alloc_gigantic_pages(); Actually, I don't want to add hugetlb related information into a common code. You just want to make hugetlb_hstate_alloc_gigantic_page() happen after cmdline has been pased, maybe we could review this cleanup [1], but it need some changes to satisfy your need. E.g. adding "hugetlb_free_vmemmap" cmdline parsing in hugetlb_process_arg(). Then we do not need to change mm/mm_init.c. [1] https://lore.kernel.org/linux-mm/20220616071827.3480-1-songmuchun@bytedance.com/ > /* Initializations relying on SMP setup */ > build_all_zonelists(NULL); > page_alloc_init_cpuhp();