From patchwork Fri Feb 28 18:29:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank van der Linden X-Patchwork-Id: 13996911 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 F268CC282D1 for ; Fri, 28 Feb 2025 18:30:21 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 91E9D28000E; Fri, 28 Feb 2025 13:30:12 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8F47E280001; Fri, 28 Feb 2025 13:30:12 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7962028000E; Fri, 28 Feb 2025 13:30:12 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 553BF280001 for ; Fri, 28 Feb 2025 13:30:12 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id ECBC4121140 for ; Fri, 28 Feb 2025 18:30:11 +0000 (UTC) X-FDA: 83170193022.03.86BF0BD Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) by imf13.hostedemail.com (Postfix) with ESMTP id 1DD2020008 for ; Fri, 28 Feb 2025 18:30:09 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=vzEwIPcF; spf=pass (imf13.hostedemail.com: domain of 3sADCZwQKCP0k0iqlttlqj.htrqnsz2-rrp0fhp.twl@flex--fvdl.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=3sADCZwQKCP0k0iqlttlqj.htrqnsz2-rrp0fhp.twl@flex--fvdl.bounces.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=1740767410; 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=K94kLlqGeFQ+aFx16P/h3vYpIISWhF2cF1hUz7z5Syk=; b=EfVXRtQX5STHFIFihccnDqsDLWRufqlPigZTUo0oXUWbtFuAdi+CnjEEB9Nx4l/h3bRVWt lJBj5sOY7FgwM41mL+Pw28a9FudDOsmQ6Yp6CLKQk3te8H1rJwYqBMmp2GoTAtXDOBIwiZ TKtrIVgApM3A5iaatpDe8ULVZIvmhMk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740767410; a=rsa-sha256; cv=none; b=qWURIXekoxwPUZLIsgo0Op1IJy+IVj7la1Q6isD4m5CqNXwTtjcc5BzOITGfkKsHhYLQ96 Emis1/wd9xvyzVjgMzENKFM21xtSHKwJ2NyWYkSVgkQA+ByJd9QZFd8OdUy2SiYZW+zKCz FXBo1o1UICBY/7AzeTHE6fsO3EJf76M= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=vzEwIPcF; spf=pass (imf13.hostedemail.com: domain of 3sADCZwQKCP0k0iqlttlqj.htrqnsz2-rrp0fhp.twl@flex--fvdl.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=3sADCZwQKCP0k0iqlttlqj.htrqnsz2-rrp0fhp.twl@flex--fvdl.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-21f6cb3097bso65128055ad.3 for ; Fri, 28 Feb 2025 10:30:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1740767409; x=1741372209; 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=K94kLlqGeFQ+aFx16P/h3vYpIISWhF2cF1hUz7z5Syk=; b=vzEwIPcFuPaYnketRIBMuavUx6zpjOVhE7gQA/2qn3rKaTSWhpYUiBo2Oaanq1SSDf ef9Nj3oTzUHLqHvecsPQgVYsSKQP8EotJLTdjR39AJazrKYjsLWN2cTvLfvRJgbDLoaU 4nzWrPbDjQZMjfk3lnzFIBF+UxNabQ2LYiZY6NkUG/5EAhxlw2enohLvEhMgYPdK83A6 8gNUyTtbmx000BiPxKZCwnPZByovfFFeNsVEWH32r51unyN+iQIzXIYvBOuK1W0yb4Zd 9s4hycWS6yAVSPHR1scZSvAsRER7qGeXK1QT25ZEd07oXg5ZC7b/V2xvUvqu0WF0p5mM vqHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740767409; x=1741372209; 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=K94kLlqGeFQ+aFx16P/h3vYpIISWhF2cF1hUz7z5Syk=; b=kUtIoMIfDwtLcCkmtmoAj3WdnJCq/IFPxX8i2jOi60QrTukBIHxgTS3jnvPLkoBHuZ P1L0s2ob8u2ff62euuSx1QauQrFMupe3qi5N58RG3kwYoR+o5Ac6H7h4GB35lh/orXFN gr04sJe7BFCJMzcKAnoY6HjdgKBUMMT1+8nxat1V/mz0qEyWxKgActIRCtJs3kG+1jAX foHMCOcScTzRFzSYZrMef4YEZ3F+ZYJJUwWO9/Gu1revs7Bho/lRC4GYrai0D86F7Xoj tVRrvUAYmOb+ZX721QNCDKSE/yANUfJtuwTs4TrJlGT6hhNJ71XwWIOMbX5NCOakMFzb 9sSw== X-Forwarded-Encrypted: i=1; AJvYcCW/S6gxEpxnua2chZpZBnzUCJt3KVRRXynoVA7A2ChIm0EEX+FZtgP2dSO6bC45EXSaFU+5dWiOFA==@kvack.org X-Gm-Message-State: AOJu0YwpAeepTJmw5AaNWKR/qv5W0Cb17cnus8q8F8u2tlWouh0+Rr+u cwfjHNJTo0YWBkrEiGW2Yycd4Gc79y4M6wvjezbGthfDRG6IG04tpVozY11AcKo04GTOjw== X-Google-Smtp-Source: AGHT+IFDWi4N9QdQQBBc9RlXjvM6dqwf/CPH36DP/o8uLrYBQ+/2fZBTUs+cvUB/toGJpVVERB85nZsx X-Received: from pjur16.prod.google.com ([2002:a17:90a:d410:b0:2fa:1fac:269c]) (user=fvdl job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:e750:b0:21f:ba96:5de9 with SMTP id d9443c01a7336-2236926f502mr89499265ad.49.1740767408967; Fri, 28 Feb 2025 10:30:08 -0800 (PST) Date: Fri, 28 Feb 2025 18:29:13 +0000 In-Reply-To: <20250228182928.2645936-1-fvdl@google.com> Mime-Version: 1.0 References: <20250228182928.2645936-1-fvdl@google.com> X-Mailer: git-send-email 2.48.1.711.g2feabab25a-goog Message-ID: <20250228182928.2645936-13-fvdl@google.com> Subject: [PATCH v5 12/27] mm: define __init_reserved_page_zone function From: Frank van der Linden To: akpm@linux-foundation.org, muchun.song@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: yuzhao@google.com, usamaarif642@gmail.com, joao.m.martins@oracle.com, roman.gushchin@linux.dev, ziy@nvidia.com, david@redhat.com, Frank van der Linden X-Stat-Signature: hwnrpfdcuohaq9uyu6si3n88du1pfucr X-Rspamd-Queue-Id: 1DD2020008 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1740767409-539985 X-HE-Meta: U2FsdGVkX18L+OAqIGV7nJNVbA6MNPCmtvFW7KXR0RjJE75fh2p5X1gDg1rC6a0IZihk9MnBXFL2KmpeMsIh/DIcXuazZVNOddl6RJhWto/wkQ4mKDqvdiczBSNrEpNA/hGVyt4NJgnJbAPIwnIVKC8CHOIxDojTjY0w2r3oGVST1s7CZ+DrVloKu3oPVbkptVmR+Cwi/IRudHsbsjEJLEyLc5JLUmU6dBRUlVgU+29SIkB5mCVjrv+SZ8+fIHj5HsjhSM7rvMa3bINbndtPcIez+oG9PbFOGSbZeh5AfTi5/8k8gIc6DgQLSg3xBssWzHcJWMeyvEEn9KCJrDNs0ID7EQnWRwQKUbQ5oWZ0R5dnIjbBGF2vQzfIFaeeeoAGp7Gijuqi/dDmlOTTTdbDZxyRewsnI/neVay81yw/Hpfzm/epaRl603q8djO5obksv5lbidSX7Qfwpk0O7Ltk8QGAX7KWro6vAgI7u0wwRDLojh0ng/mB/5zN7/f/+5zdNAqxkFOBoac0stYs70HFSz/MgWWKQVtuhzWnVm4poROyHM1FlBhkhCfhOXgyQau6jjce9pjUtg1bvu++QItB2ECZJ+5/luCpgvjhFR6WW2lQX0Hhwiir1nVAYUvYwJ1E0CSkB3HtlTEsm3R2tqtd4ULeFltrYQl+RjYiRyzfzo8bcQvrW4wxZ8vpeXEcjEW3l3x20HYAWYkvIquZgr5n+i/npiPqM1QHNsRHmsnYcczTzlUJuV/K7nx44+GcQJ/puSoEZf2oBRv2J/t483mi/xdH/hjUzlamshTCDFqq3CppLFRLIlwiCAslNR4v9U8bzbTneb9iCMWwe9+nkzq2bSpmgJV2Tv2OeAJyJ9syK/OuMRQ9k6VStLl1Dg0qgsBPw3GMDKBM0OD9z/2Hw6lBZGwy126Q7ggWxXjn+PpEC+jDTMzrJuudx0IcXYfZ/yxH9VXbMa/oyazJrpeVdgm 6fLxdVTv zV+p/q9izQcrSl7UGjMlKXBU9C/JbiHqXV1NvMv9hQciatIBa4Xz83FgnzeG78CUu6ujDL6n2X4UXjHhSSbNt1SS/skTOfiM6uKnPcoQDlPIiOHdI55RC1LbznNK0kYNLfUcPbhsRELKVjwpuZtzT4Z4bOXBpIC4WV7hMpe2cBbEfxCidVi1EgfQj6DrqPxH9DfCP3904pU2dHUUP9RkSjUWMQbgAP5x4tP77lJGKs0liOH1G0qXnlN9dirKN7fWNyXqvD2DpOL6KC0qqz/ONlya2CVWfo6rPDqX1wvy42SAJqW/oxxoOSequlf+TlbMSKDMD79f0WqydCIGUs/rciN29LnlswBvnXQSJGL+ZSFDjEhO+EkFY1OzTinLrJIBpqmgT6w9yMUVRjTe3qVCguTr/t6KK2tRAPgaoYWwjNoH6i98AWBMmTt6xPM+c5a7fdldQLWtlLcjOKrDde4BslURzpF9JJG3q+d5s+GyrgbW5e2rAaQcHRIR4qBfLZj/bXscZ4IfCk3Cf43udMMRhEcErN231K3aBEkvX4ylAGPqMCCmseJQSuscxXaSI19xesE7BUTPpxlv3J3/ufaE+okH7UidjE1fDa73+Gwoa9y+tfW8= 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: Sometimes page structs must be unconditionally initialized as reserved, regardless of DEFERRED_STRUCT_PAGE_INIT. Define a function, __init_reserved_page_zone, containing code that already did all of the work in init_reserved_page, and make it available for use. Signed-off-by: Frank van der Linden --- mm/internal.h | 1 + mm/mm_init.c | 38 +++++++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/mm/internal.h b/mm/internal.h index 109ef30fee11..57662141930e 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -1448,6 +1448,7 @@ static inline bool pte_needs_soft_dirty_wp(struct vm_area_struct *vma, pte_t pte void __meminit __init_single_page(struct page *page, unsigned long pfn, unsigned long zone, int nid); +void __meminit __init_reserved_page_zone(unsigned long pfn, int nid); /* shrinker related functions */ unsigned long shrink_slab(gfp_t gfp_mask, int nid, struct mem_cgroup *memcg, diff --git a/mm/mm_init.c b/mm/mm_init.c index 9f1e41c3dde6..925ed6564572 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -650,6 +650,28 @@ static inline void fixup_hashdist(void) static inline void fixup_hashdist(void) {} #endif /* CONFIG_NUMA */ +/* + * Initialize a reserved page unconditionally, finding its zone first. + */ +void __meminit __init_reserved_page_zone(unsigned long pfn, int nid) +{ + pg_data_t *pgdat; + int zid; + + pgdat = NODE_DATA(nid); + + for (zid = 0; zid < MAX_NR_ZONES; zid++) { + struct zone *zone = &pgdat->node_zones[zid]; + + if (zone_spans_pfn(zone, pfn)) + break; + } + __init_single_page(pfn_to_page(pfn), pfn, zid, nid); + + if (pageblock_aligned(pfn)) + set_pageblock_migratetype(pfn_to_page(pfn), MIGRATE_MOVABLE); +} + #ifdef CONFIG_DEFERRED_STRUCT_PAGE_INIT static inline void pgdat_set_deferred_range(pg_data_t *pgdat) { @@ -708,24 +730,10 @@ defer_init(int nid, unsigned long pfn, unsigned long end_pfn) static void __meminit init_reserved_page(unsigned long pfn, int nid) { - pg_data_t *pgdat; - int zid; - if (early_page_initialised(pfn, nid)) return; - pgdat = NODE_DATA(nid); - - for (zid = 0; zid < MAX_NR_ZONES; zid++) { - struct zone *zone = &pgdat->node_zones[zid]; - - if (zone_spans_pfn(zone, pfn)) - break; - } - __init_single_page(pfn_to_page(pfn), pfn, zid, nid); - - if (pageblock_aligned(pfn)) - set_pageblock_migratetype(pfn_to_page(pfn), MIGRATE_MOVABLE); + __init_reserved_page_zone(pfn, nid); } #else static inline void pgdat_set_deferred_range(pg_data_t *pgdat) {}