From patchwork Tue Mar 26 06:11:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baoquan He X-Patchwork-Id: 13603604 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 AAB63C54E67 for ; Tue, 26 Mar 2024 06:11:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 21C5C6B0082; Tue, 26 Mar 2024 02:11:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1A7C46B0083; Tue, 26 Mar 2024 02:11:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EEC2F6B0085; Tue, 26 Mar 2024 02:11:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DCCB26B0082 for ; Tue, 26 Mar 2024 02:11:51 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id AA7F9A077D for ; Tue, 26 Mar 2024 06:11:51 +0000 (UTC) X-FDA: 81938169222.22.E3FE8FC Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf29.hostedemail.com (Postfix) with ESMTP id D207D120017 for ; Tue, 26 Mar 2024 06:11:49 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Je8SAL2+; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf29.hostedemail.com: domain of bhe@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bhe@redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711433509; 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=62MNx0xItSDlm7BWyxiaL7hkcreRJtBILyc9X1U9tZs=; b=LHxmngvG2WmsnCLDcClLwPhpMIFzBICxy2FYMr2FOb0YwLjPCsH3lkGiCUGYJt+vLfuw9p MhJYkR2Okx9oBEQTtnq/5qrv6MOyjnpsBZal274zXSb1NCxxw66wtm/I8+5meKkO48ij2R WQW2dbgiUEJOvjY/oWnQHVZqAcZP7+Q= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Je8SAL2+; dmarc=pass (policy=none) header.from=redhat.com; spf=pass (imf29.hostedemail.com: domain of bhe@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bhe@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711433509; a=rsa-sha256; cv=none; b=8F+JWVyOMNCYx3/XipNu5dX5Oz2jrpuuVQZXJE8Eof3ANTjEDYs7cAoABfH1CUYyR/DxMG u7PA72V2zvozrr70AGZfssxZZCtT4ZGS//ZzjkAcp++KRRVvbMCO84UN6B7VQbyhuGXzNP ToSnk9RBE2aopFq/UyRqQMUTL2Lj50k= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1711433509; 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=62MNx0xItSDlm7BWyxiaL7hkcreRJtBILyc9X1U9tZs=; b=Je8SAL2+wQTEsk3R9TaXFK69xhKMQhoOou0+UeG5GipXqSj3eLShJ4x37/jthOjchuB+Xg HTnl5AFZBA4sPhHPOxG3BoV6qlKHupIw0rXXKVgEec+zDCb+Ds65bl/cNA/nLQwxR2Z6ga 4QKpoCorgMrIQXsGpD/vsVrsLsd3lf4= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-529-khvmhmd4O0GftrrRF8zAvg-1; Tue, 26 Mar 2024 02:11:46 -0400 X-MC-Unique: khvmhmd4O0GftrrRF8zAvg-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A25FA8007AF; Tue, 26 Mar 2024 06:11:45 +0000 (UTC) Received: from MiWiFi-R3L-srv.redhat.com (unknown [10.72.116.12]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5AFD110E47; Tue, 26 Mar 2024 06:11:43 +0000 (UTC) From: Baoquan He To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, rppt@kernel.org, mgorman@suse.de, Baoquan He Subject: [PATCH 1/7] mm: move array mem_section init code out of memory_present() Date: Tue, 26 Mar 2024 14:11:27 +0800 Message-ID: <20240326061134.1055295-2-bhe@redhat.com> In-Reply-To: <20240326061134.1055295-1-bhe@redhat.com> References: <20240326061134.1055295-1-bhe@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.5 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-type: text/plain X-Rspam-User: X-Stat-Signature: 5ow4hrg4ezf6nsqkq7tbqiuc8p9yswso X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: D207D120017 X-HE-Tag: 1711433509-24757 X-HE-Meta: U2FsdGVkX197vBpNn6yVybtB9mHkIbgGvHZXxcA0iF34tO3oIdaBRemWSKtPD/s2vjj4us+VdlRaR+4uXxP3IVzzS6ccERTWwmxwnnRBAabZK5LcKQkDo6CV5NpOKJuEOUwOz509Dw+oR/ZFJH8Hojo/promYdDLHBcfbP81v2uWi7WpeJP3oW6llEknVaJ1e++2+DfvjvogyZ4SLUsA4gDMGInf5lMRluDAu0uniMSMJ6Wbl7dG35XalcOJ6H9FeDxYUwcX+Y20aP9V7vckBOubkcwLYpkS/Y15f5ds4FLFe9eHnjRiS/O6NYmFnWBZtMKFBPdkmUdwINASDtiDKDHNk8J8P4ZszNar/eMCQeS8roAKunols1Kv5gOXYTdi0CSSBZ2KwhpxF9igh1258qn7WRRteq8MfcxQFDViHdHXrflJnHf4K1Gj82OXUBtyuiE79oCE0X4YPLxM1MsTrzTE3myWvDRVka41rRwl8ygfQyfBCI5fEq/1P0wefxAZ47oAZWQwmb9UNzfyhUWFSQ8luuShBOHmQYxXxR7kx+hqf9IVbjIzZUuSCXUwPcr+pGfQFmlxLnUQqWzAug9cHq1EyvG02djTtKGHa9lGsNP9hONcWt+kliq9Prl2X1b5kDTk6PIyKtMJ5rIkciL7CNhEffRMQWz/Ud9+/JsGGKg9u26xTzY7D4x0nLtNTgZkexWwsmIyJ9cm9G6+xwDAgnPIT8RoRlszR/LDtJsBIcBa+47iV5nwtVBet2EmnQg/ERmynr+torgJ/g3lKx4uXYbJXDBonqYiROxQaeMGuT7TdlX1Hj1uHbpnp3CFvh7WvjxuAUSsA2gQatCjweXyE3Y4yj+KyKic3zMItm5uDT2e5yTnIOUpmzFtZR9QVqb9SxNEYZ6fKSPRGrYtpdyBg+WqG3qTjHd7LA1CP5b4RsAg3aEx3QwE3dH3q8oDXsdAWfCTe0emAqZXmMLD+L7 twS+qImq s1/aD/OhkI3Z09WNNDGBkbw4cgSCSnZ1JN3ViFqpfHITTuCSg8DtvAGLVaxpXF2/o4MzHS2I7V9c6mz4Z/ft5KoZCnX9oNyKqhGU/HBdcikZicsMxsZZg7M7gahZrdAAdZnlv9zM253qQtkzya7W88G3XUvzkbJxIPyghdL8KjsXolCi27/rGMwCHqd57anx3f10XnvVWPYagTPm371zvoF33UQ== 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: When CONFIG_SPARSEMEM_EXTREME is enabled, mem_section need be initialized to point at a two-dimensional array, and its 1st dimension of length NR_SECTION_ROOTS will be dynamically allocated. Once the allocation is done, it's available for all nodes. So take the 1st dimension of mem_section initialization out of memory_present()(), and put it into memblocks_present() which is a more appripriate place. Signed-off-by: Baoquan He --- mm/sparse.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index aed0951b87fa..46e88549d1a6 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -226,19 +226,6 @@ static void __init memory_present(int nid, unsigned long start, unsigned long en { unsigned long pfn; -#ifdef CONFIG_SPARSEMEM_EXTREME - if (unlikely(!mem_section)) { - unsigned long size, align; - - size = sizeof(struct mem_section *) * NR_SECTION_ROOTS; - align = 1 << (INTERNODE_CACHE_SHIFT); - mem_section = memblock_alloc(size, align); - if (!mem_section) - panic("%s: Failed to allocate %lu bytes align=0x%lx\n", - __func__, size, align); - } -#endif - start &= PAGE_SECTION_MASK; mminit_validate_memmodel_limits(&start, &end); for (pfn = start; pfn < end; pfn += PAGES_PER_SECTION) { @@ -267,6 +254,19 @@ static void __init memblocks_present(void) unsigned long start, end; int i, nid; +#ifdef CONFIG_SPARSEMEM_EXTREME + if (unlikely(!mem_section)) { + unsigned long size, align; + + size = sizeof(struct mem_section *) * NR_SECTION_ROOTS; + align = 1 << (INTERNODE_CACHE_SHIFT); + mem_section = memblock_alloc(size, align); + if (!mem_section) + panic("%s: Failed to allocate %lu bytes align=0x%lx\n", + __func__, size, align); + } +#endif + for_each_mem_pfn_range(i, MAX_NUMNODES, &start, &end, &nid) memory_present(nid, start, end); }