From patchwork Thu Mar 20 01:55:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Changyuan Lyu X-Patchwork-Id: 14023305 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 99D65C36002 for ; Thu, 20 Mar 2025 01:56:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D12F0280007; Wed, 19 Mar 2025 21:56:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C995E280001; Wed, 19 Mar 2025 21:56:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A9E08280007; Wed, 19 Mar 2025 21:56:10 -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 80DF6280001 for ; Wed, 19 Mar 2025 21:56:10 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id BFA411604C7 for ; Thu, 20 Mar 2025 01:56:10 +0000 (UTC) X-FDA: 83240264100.05.9793AE6 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) by imf15.hostedemail.com (Postfix) with ESMTP id 3577FA000D for ; Thu, 20 Mar 2025 01:56:09 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=dpcPSI4+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf15.hostedemail.com: domain of 3uHXbZwoKCFc16zC5NJzCA5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--changyuanl.bounces.google.com designates 209.85.216.73 as permitted sender) smtp.mailfrom=3uHXbZwoKCFc16zC5NJzCA5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--changyuanl.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742435769; a=rsa-sha256; cv=none; b=WCbhv4efoPStpa0CHYKiOpc4WkYPesX2u4OTdQqDetjXRBf6GkNLwdkV0yOZ/sSHi/Fz6q u8k+F29bSjafmpXE6z8NTQ5MkBovor9wJH1FcNKMul7SAn4qHSXdqJVRfzP3OtuGRPDyOH JC3F4i8JV8g1mPsjkdAMz0sOZwXVQgQ= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=dpcPSI4+; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf15.hostedemail.com: domain of 3uHXbZwoKCFc16zC5NJzCA5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--changyuanl.bounces.google.com designates 209.85.216.73 as permitted sender) smtp.mailfrom=3uHXbZwoKCFc16zC5NJzCA5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--changyuanl.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742435769; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=PiwjRVxMAh+aRSJQzROvUDuvUP7bfHphETD8QOGYAo8=; b=vtqZlOcnZGMSXoGIJaljNNGXKMlLJTPbxfm0aBEta3L78gLGdDpeSHkvgOzxra7vLsZgn0 +sFfyJ9sLYTu1sqOd8vLY0P6kJjCQs7vSuUXDrTCle8NEc6Qoczzrf4uOkjXOe9lhLCQTz QQZWJWEqrTwOjyxgSc2aZJ4KSOJImpE= Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-300fefb8e05so325507a91.3 for ; Wed, 19 Mar 2025 18:56:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1742435768; x=1743040568; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=PiwjRVxMAh+aRSJQzROvUDuvUP7bfHphETD8QOGYAo8=; b=dpcPSI4+6PdTm2w3o+QRghLpILxS6Ids5Hw+A8pZxMEY+Iy2TCwXucR5BTMqcvkBJq P9rI/l7NzZWFHuHkufeOyGHFS/LYY/GukoCZbXS3azD8+gfBrvHxB5wB9x7x/v71njqI b14XjIC+2wahxi6KhCFBnQfWR46umZTLel2BCJIZ3sJvOQxEVSjpZ/vU0bT9aGHcfWy6 mIo9hhZCB174gNYmVxdyZJ/AR2Q44gIr0oz3CJ7bSDFXcgLXNwAzJvbvzHkYQ15aphKS uC/NNmadkviLB2W96NAQG5+uvyFu9yyx4naJrU5WQAknyhmNbHTfj0bT5BTyGeDfPqy8 XyTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742435768; x=1743040568; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PiwjRVxMAh+aRSJQzROvUDuvUP7bfHphETD8QOGYAo8=; b=Dz/+mFelHEcqYIUxjUdtrvy9S2tZmNZKctUMyEnjiS9Cek5Fm1D8aBva282kPgmOSs lxQWbchQTjpWzKIg/UypeDZ3eDWipqiMRe5V1RYe23uahQGKH8h5KuCs9HyJy+gSFfuR 49cJ0DOchmsICEC7OwEbStL9Csp8RvPPzy/f8/aOcrFdq2OKF16afCuF5fWioXXmax6h VbndkBS8QvqzcLDroWYyQ6MpBsZLsqZcgGYItM2DNAWeNYCo8zDCCeRgoKpAKnOj9/36 YFNRZ3lcu9Q79HL2Ths/P5Eb9QoHnqu6v1g17++0ZElKLOUEZc/H949EV/ST276iGp2C wXjA== X-Forwarded-Encrypted: i=1; AJvYcCXhGlfxeMABd3YLaSxE8r3DmtYfHygDfk+HS3vbNnlyBU8uk2txG8ajZZA6IVQbkLgNLj7sQkdKKQ==@kvack.org X-Gm-Message-State: AOJu0YxTY1fUfTt76VBgPgBppQSEg78qQkdl5mCsLKg4fCI381+wpWz+ /AUQVcLAbk7HQ/1EtnJwf7ORUak92alXsJWtivcxupFHWOanj1Auipt4asWIN07U0T8r3FLFNcB 4d1a8JSjtYfeN2V2EDw== X-Google-Smtp-Source: AGHT+IEhVbWDRhW3hPJYHJMT+HzW9sk9EOurakKCEQdD5tgMb9uQ2NYyCFbTRsSUUBpQ3kTf4vM/PmcUJOjFZ+gE X-Received: from pglu36.prod.google.com ([2002:a63:1424:0:b0:af2:22fe:cfb3]) (user=changyuanl job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:4cc7:b0:1ee:e96a:d9ed with SMTP id adf61e73a8af0-1fbeaf88adfmr8896191637.7.1742435768113; Wed, 19 Mar 2025 18:56:08 -0700 (PDT) Date: Wed, 19 Mar 2025 18:55:40 -0700 In-Reply-To: <20250320015551.2157511-1-changyuanl@google.com> Mime-Version: 1.0 References: <20250320015551.2157511-1-changyuanl@google.com> X-Mailer: git-send-email 2.49.0.rc1.451.g8f38331e32-goog Message-ID: <20250320015551.2157511-6-changyuanl@google.com> Subject: [PATCH v5 05/16] memblock: introduce memmap_init_kho_scratch() From: Changyuan Lyu To: linux-kernel@vger.kernel.org Cc: graf@amazon.com, akpm@linux-foundation.org, luto@kernel.org, anthony.yznaga@oracle.com, arnd@arndb.de, ashish.kalra@amd.com, benh@kernel.crashing.org, bp@alien8.de, catalin.marinas@arm.com, dave.hansen@linux.intel.com, dwmw2@infradead.org, ebiederm@xmission.com, mingo@redhat.com, jgowans@amazon.com, corbet@lwn.net, krzk@kernel.org, rppt@kernel.org, mark.rutland@arm.com, pbonzini@redhat.com, pasha.tatashin@soleen.com, hpa@zytor.com, peterz@infradead.org, ptyadav@amazon.de, robh+dt@kernel.org, robh@kernel.org, saravanak@google.com, skinsburskii@linux.microsoft.com, rostedt@goodmis.org, tglx@linutronix.de, thomas.lendacky@amd.com, usama.arif@bytedance.com, will@kernel.org, devicetree@vger.kernel.org, kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org X-Stat-Signature: znrswdgaxmddapdzy6w1w61amx4d39eb X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 3577FA000D X-Rspam-User: X-HE-Tag: 1742435769-535909 X-HE-Meta: U2FsdGVkX18of8q/vT1qdW+w6c+/Fo/3zDZFN8/83O0fHjdD2pxVO9BGBJxqwuZnROxzJ21cbNmyboBwje2H4JHvaTf+w5Gw+ILeqizPbf4cZCeSSH3tgHmbY4DZpEjHjA7H1wKvY5jg7WiZxFV4w7/FDh/HC8GbdPy/IOfTZW/iySWsfmm3gvHNOfIFxrDO2GzzIUQ2mikprNr2Js2M5FNDlSwXPKy1m3cNO0VQnbBinKVygmVyD9GzOdC8CjjY1/Q3bc5sAzY3e50ZxhrHqjTAvI8rOrdXw+U5pE8X+ZprqFrohWKw5GaFV+pq4tyVWhU1x6RZW6AE55e9q6CQWFNjNbkc4Fttgc5m4qloQ7uNgRfgL3XZoPZfQIDT3JN9rsMrl+dIOK6FUpAaTZ2myi6/mh1D/4WR04lX6Mqt5aD73K2V9frmUOeoOHiPqzzbdL5xNVrerTqzEKWVvjCsfxp90XeKAvu/bvO6c2lktAnmpZDZH5jUszS2LuoD7r2/EIayRtbQJ26yjnPdS6Vi2P9F1bzeO0+N+FlzeHIYRdnefye6nnEodPEchiNyn6y++zcTsiCtAQs/GAfgl+VIEssceYX+2YmWqlv2MU6utTJ2vlwlLd+y8JopUD3HnRC1X9QjNH77ilmh5p6v4bBSveXMCjEh8i4kAeHPwxLQ+C0FMHgOp62Mkxou1lqsqn99zm0Zsp5IHm780vTkXiZIMOdrjJyzjJkUcTjmthdRDTznUfBWiFLSBlEXcSQnfkP+nR6ajYkeD0SCtxbeuUKKzJqG/NJQNXZ6/qC7FqtaBthPJFvoWe8TTLxldEbhKSw4KP5lKj5QY4iwoZ1GFGYAq9Uk0dCs6zPUEeK89ps0Timd5rS7tObSwB8hVkUbj3X50Vd37Ax2iX94ybm8TSfjRGmOPC5IqHxGdLwW8B0HDBxBtjqdYDGxLVx43REK8NN0+RluGwU1wh9RwhlHTPV KADbyyV8 XyoS9D0XvaA74y9x45Tuw835K354z0bskSqe1dp1wJYczoal5kPuf9xDg4vpw+AAROjU7+azamx25W8HfEt5GaQkyjg4I3zkuV50qkolLcKn9cQvt/bE5+ONV65ULuvzgohxpbpbTIqHriH588uKGYVUKr0Z2NqcKmdDs7wmawGiXnVJ6RxsG14dXM7m2ihssHr+qzJ/HiOepLhBjlNlKDnBdN3NRX5ZCyIdFk6L96Duh8Az7ZDYo7csFXqpxVKohPt+z1rpjLUfs2xsfvKGNtJBUCG6Xmh9U5Kw2SH7284foAFxBtLXJIAYd50Z88fdvrwDzf1tYMq0xQ7AnXJ5wbBt5S1M0kpwfgRu2gXcG6YxIZOqBNbvZbIby7iwXzSXcOTu3R7tvwCUTyGXz7/J70WJ17BuKZiy5aTLt 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: From: "Mike Rapoport (Microsoft)" With deferred initialization of struct page it will be necessary to initialize memory map for KHO scratch regions early. Add memmap_init_kho_scratch() method that will allow such initialization in upcoming patches. Signed-off-by: Mike Rapoport (Microsoft) --- include/linux/memblock.h | 2 ++ mm/internal.h | 2 ++ mm/memblock.c | 22 ++++++++++++++++++++++ mm/mm_init.c | 11 ++++++++--- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/include/linux/memblock.h b/include/linux/memblock.h index a83738b7218b..497e2c1364a6 100644 --- a/include/linux/memblock.h +++ b/include/linux/memblock.h @@ -636,9 +636,11 @@ static inline void memtest_report_meminfo(struct seq_file *m) { } #ifdef CONFIG_MEMBLOCK_KHO_SCRATCH void memblock_set_kho_scratch_only(void); void memblock_clear_kho_scratch_only(void); +void memmap_init_kho_scratch_pages(void); #else static inline void memblock_set_kho_scratch_only(void) { } static inline void memblock_clear_kho_scratch_only(void) { } +static inline void memmap_init_kho_scratch_pages(void) {} #endif #endif /* _LINUX_MEMBLOCK_H */ diff --git a/mm/internal.h b/mm/internal.h index 20b3535935a3..8e45a2ae961a 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1053,6 +1053,8 @@ DECLARE_STATIC_KEY_TRUE(deferred_pages); bool __init deferred_grow_zone(struct zone *zone, unsigned int order); #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */ +void init_deferred_page(unsigned long pfn, int nid); + enum mminit_level { MMINIT_WARNING, MMINIT_VERIFY, diff --git a/mm/memblock.c b/mm/memblock.c index c0f7da7dff47..d5d406a5160a 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -945,6 +945,28 @@ __init_memblock void memblock_clear_kho_scratch_only(void) { kho_scratch_only = false; } + +void __init_memblock memmap_init_kho_scratch_pages(void) +{ + phys_addr_t start, end; + unsigned long pfn; + int nid; + u64 i; + + if (!IS_ENABLED(CONFIG_DEFERRED_STRUCT_PAGE_INIT)) + return; + + /* + * Initialize struct pages for free scratch memory. + * The struct pages for reserved scratch memory will be set up in + * reserve_bootmem_region() + */ + __for_each_mem_range(i, &memblock.memory, NULL, NUMA_NO_NODE, + MEMBLOCK_KHO_SCRATCH, &start, &end, &nid) { + for (pfn = PFN_UP(start); pfn < PFN_DOWN(end); pfn++) + init_deferred_page(pfn, nid); + } +} #endif /** diff --git a/mm/mm_init.c b/mm/mm_init.c index c4b425125bad..04441c258b05 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -705,7 +705,7 @@ defer_init(int nid, unsigned long pfn, unsigned long end_pfn) return false; } -static void __meminit init_deferred_page(unsigned long pfn, int nid) +static void __meminit __init_deferred_page(unsigned long pfn, int nid) { pg_data_t *pgdat; int zid; @@ -739,11 +739,16 @@ static inline bool defer_init(int nid, unsigned long pfn, unsigned long end_pfn) return false; } -static inline void init_deferred_page(unsigned long pfn, int nid) +static inline void __init_deferred_page(unsigned long pfn, int nid) { } #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */ +void __meminit init_deferred_page(unsigned long pfn, int nid) +{ + __init_deferred_page(pfn, nid); +} + /* * Initialised pages do not have PageReserved set. This function is * called for each range allocated by the bootmem allocator and @@ -760,7 +765,7 @@ void __meminit reserve_bootmem_region(phys_addr_t start, if (pfn_valid(start_pfn)) { struct page *page = pfn_to_page(start_pfn); - init_deferred_page(start_pfn, nid); + __init_deferred_page(start_pfn, nid); /* * no need for atomic set_bit because the struct