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 BF0B6C54EAA for ; Tue, 24 Jan 2023 10:51:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 305866B0072; Tue, 24 Jan 2023 05:51:33 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2B5EC6B0074; Tue, 24 Jan 2023 05:51:33 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 17D816B0078; Tue, 24 Jan 2023 05:51:33 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 080176B0072 for ; Tue, 24 Jan 2023 05:51:33 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id D9C7B40378 for ; Tue, 24 Jan 2023 10:51:32 +0000 (UTC) X-FDA: 80389376424.20.5EAA409 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by imf06.hostedemail.com (Postfix) with ESMTP id C6DE818000C for ; Tue, 24 Jan 2023 10:51:29 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=0vpQGOsC; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=7gQ0KA93; spf=pass (imf06.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1674557490; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to: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=czUpody6ENC92ZT3Go+G1Ofmisw9/IxxFIe8l7uPtOY=; b=iYqgRTSh0n6qjkDZS0x3eJr8iY41HyXNPIwzv5E/er/e9wZ/Gq/9/gzTYB2HEnVpGOkONL WXv74GpOZyW6CHAjOvSkJn0GjXc/RSnxRUiWiFYTevCDgfNhvJmPFZTPmEjbQB7l5p28D0 ME7O/eCuQH1xC/LKvuwGv23zhmZW6XE= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=0vpQGOsC; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=7gQ0KA93; spf=pass (imf06.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1674557490; a=rsa-sha256; cv=none; b=h9CXP32Rvh7GCc3/zdHqhK2bfIs9JTWHp4bzTLAGTJZeQUsESRELibXmurhNEIRJos+3ZI kCCowdjdNO2u7131U5FhTTuyGXVJBmsNmNKyPGU8kOO0AWgrapmqXox17SlqkdEflxrNlN OIKBWLIl4qdnENRg9PjeFNBgenfBNTk= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 108A021A1D; Tue, 24 Jan 2023 10:51:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1674557488; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=czUpody6ENC92ZT3Go+G1Ofmisw9/IxxFIe8l7uPtOY=; b=0vpQGOsCUOJsL3cUn0+tjOQwCgOfTLM/88+PCU+YWsioUNH+bGUFUi94C9e8oHzwcfJ7Cp wm8cUfCb2M3G+8xf0zxTzMjyVyiKR0d16UmNO0ODVZHhfN6rddy/2EYz4ZieI8IpxCuG9Q lMd69505WYC2o9yZSekzoj6Hdz+DsAU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1674557488; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=czUpody6ENC92ZT3Go+G1Ofmisw9/IxxFIe8l7uPtOY=; b=7gQ0KA93bG+KpxdKvZX7Y4KabBZdtwjFqvbR+yMk432DUslbTOPRK05mp80Q18EhCD9Yh7 JagZ5dEJ7PoyWzAg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id CA27413487; Tue, 24 Jan 2023 10:51:27 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id MXA5MC+4z2OvAwAAMHmgww (envelope-from ); Tue, 24 Jan 2023 10:51:27 +0000 Message-ID: Date: Tue, 24 Jan 2023 11:49:36 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH v2] mm/page_ext: init page_ext early if there are no deferred struct pages Content-Language: en-US To: Pasha Tatashin , rppt@kernel.org, akpm@linux-foundation.org, mhocko@suse.com, david@redhat.com, quic_charante@quicinc.com, lizhe.67@bytedance.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20230118155251.2522985-1-pasha.tatashin@soleen.com> From: Vlastimil Babka In-Reply-To: <20230118155251.2522985-1-pasha.tatashin@soleen.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: C6DE818000C X-Rspam-User: X-Stat-Signature: zffjh7gq8w4jcar9nhse9pdnaw1uoa16 X-HE-Tag: 1674557489-600547 X-HE-Meta: U2FsdGVkX1/J29vnLXUPyOyUSI6YAvdq0hCws28RkuIZtjxW4tBilz1+jp0H69itbYR9Jye4RXuVOlKa8SGTMNkPdo5t32mrc6tPg3/VxpqWEcgKf9BquzAz946du/Pdor4TpdFq2Hv7gTJWkV22HVFcjXo02zp6UAMWvDMo0LUKgKlxBdtfxkk8Dy6VVg0ATqNLyy8jk+ghr6eRSFoQreAF22OqGW9IcHkw1Xs6nNDTQsUsV8O6+susq0QKwsHe9EdpQMIucvoLAjOagNgASrMxoBgxIrd2yMkhjuU3cK9F364moaVuPfqzF5ZMX12CnTAXgo5LU9VdUj2XC5jmrsa6cWrlPHEfurf2Nmn3LLjZ+7toQoVkCdLDyirPdclYaNbZmGSGpdtbdFLVCcsn56M+4r/f5Kl49Cvls4NdtUv9hyHrLPLJi5EjEBRH3wgJhMRZSg8KAm/o3l7fNa38TwYE3AbIYjI67RLUR7dBzaay/7Lzie4OuL8THQwOLrsiyNOliXzOZXS3WglhDvG0l21gu6ta/U2cQjHzoUSlGd8Aey0Pl314xShMxJPZI1LeHcw6TGqPdfh0m/N31aZcNrlzCIlYVmzJXQxLkiuBmT2XNoziDGsTumYmTgsr8hPswT7UNOa1XzPiSo7rOWg9E/uSdkCl7yzCL2hPyd18YpHFQ2tMbDWQFmO+pmjZf5Xlu7MjhXzITDv0N+XI6WAWHsOjQ2olYz1qUmUdm9RHpRBm65cKWbm1OvfO8w4mHlfMnhosFn4x5fOK54PSCVtO+bgleKYNHgE6asR9P3gsKt5f4INiGBGe6YBy6YQknG0BKxllkCLxV7sLQhe5sjFHl3DZ6HevSftddtlJCeRDUWy6F6zxWytF/pQ4ir1ir7qxpiTjldWOLjlWFtv8fhBY3dV5bymn6Gh1GduqF71s/Vu089gKcdc6BlYfHd+gk0qDwGVYYOGNhqohFP9Wt4Q mK6lPYc7 kOV+pgGBm5bilgvakC8Gku8rYoXxb1Tdzyn8MgAOLNICz7ipXxVn4xOZLZ9JoLPZkTz2qjbP0C1PXXoE0gxCTLB7Z/fIDOL4V65XIdl7zxB7a/H2Fo8xoFjXzHlt1L7ckLwfjZ+I3DsgQuiRGXQ1Q27/2qIbirBAXnJZ7G/E5sYtIL/yRSNSr7MMMRzN95Nja3yMVsr6hCNxnfNkd8coYEt/+qK/p1ltxGuE0ehUATGEzbk2/aMnNatyc2N7SJufoCN1b5Me5z5nFdqgnw764iRwJ8HXZQzdWnnitAB9xfYpGulYgYu6aL32Zkhntt9cggK6/ 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 1/18/23 16:52, Pasha Tatashin wrote: > page_ext must be initialized after all struct pages are initialized. > Therefore, page_ext is initialized after page_alloc_init_late(), and > can optionally be initialized earlier via early_page_ext kernel > parameter which as a side effect also disables deferred struct pages. > > Allow to automatically init page_ext early when there are no deferred > struct pages in order to be able to use page_ext during kernel boot > and track for example page allocations early. > > Signed-off-by: Pasha Tatashin Acked-by: Vlastimil Babka > --- > include/linux/page_ext.h | 2 ++ > init/main.c | 6 +++--- > mm/page_alloc.c | 6 +++++- > mm/page_ext.c | 2 +- > 4 files changed, 11 insertions(+), 5 deletions(-) > > Changelog: > v2: Fixed build issue with CONFIG_PAGE_EXTENSION=n > > diff --git a/include/linux/page_ext.h b/include/linux/page_ext.h > index 67314f648aeb..bc2e39090a1f 100644 > --- a/include/linux/page_ext.h > +++ b/include/linux/page_ext.h > @@ -29,6 +29,8 @@ struct page_ext_operations { > bool need_shared_flags; > }; > > +extern bool deferred_struct_pages; > + > #ifdef CONFIG_PAGE_EXTENSION > > /* > diff --git a/init/main.c b/init/main.c > index e1c3911d7c70..64cd2ff051c4 100644 > --- a/init/main.c > +++ b/init/main.c > @@ -855,8 +855,8 @@ static void __init mm_init(void) > pgtable_init(); > debug_objects_mem_init(); > vmalloc_init(); > - /* Should be run after vmap initialization */ > - if (early_page_ext_enabled()) > + /* If no deferred init page_ext now, as vmap is fully initialized */ > + if (!deferred_struct_pages) > page_ext_init(); > /* Should be run before the first non-init thread is created */ > init_espfix_bsp(); > @@ -1628,7 +1628,7 @@ static noinline void __init kernel_init_freeable(void) > padata_init(); > page_alloc_init_late(); > /* Initialize page ext after all struct pages are initialized. */ > - if (!early_page_ext_enabled()) > + if (deferred_struct_pages) > page_ext_init(); > > do_basic_setup(); > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 99ebb08dc3f2..717f12e83b85 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -430,6 +430,8 @@ EXPORT_SYMBOL(nr_online_nodes); > > int page_group_by_mobility_disabled __read_mostly; > > +bool deferred_struct_pages __meminitdata; > + > #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT > /* > * During boot we initialize deferred pages on-demand, as needed, but once > @@ -6803,8 +6805,10 @@ void __meminit memmap_init_range(unsigned long size, int nid, unsigned long zone > if (context == MEMINIT_EARLY) { > if (overlap_memmap_init(zone, &pfn)) > continue; > - if (defer_init(nid, pfn, zone_end_pfn)) > + if (defer_init(nid, pfn, zone_end_pfn)) { > + deferred_struct_pages = true; > break; > + } > } > > page = pfn_to_page(pfn); > diff --git a/mm/page_ext.c b/mm/page_ext.c > index e2c22ffdbb81..dc1626be458b 100644 > --- a/mm/page_ext.c > +++ b/mm/page_ext.c > @@ -92,7 +92,7 @@ unsigned long page_ext_size; > static unsigned long total_usage; > static struct page_ext *lookup_page_ext(const struct page *page); > > -bool early_page_ext; > +bool early_page_ext __meminitdata; > static int __init setup_early_page_ext(char *str) > { > early_page_ext = true;