From patchwork Tue Mar 18 07:19:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yang X-Patchwork-Id: 14020393 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 5649BC282EC for ; Tue, 18 Mar 2025 07:20:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5D1F4280004; Tue, 18 Mar 2025 03:20:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 52EB3280001; Tue, 18 Mar 2025 03:20:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38268280004; Tue, 18 Mar 2025 03:20:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 1F24C280001 for ; Tue, 18 Mar 2025 03:20:05 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 32F12160C7E for ; Tue, 18 Mar 2025 07:20:06 +0000 (UTC) X-FDA: 83233822812.14.2F1CA45 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf26.hostedemail.com (Postfix) with ESMTP id 54F45140009 for ; Tue, 18 Mar 2025 07:20:04 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FOrEGQqK; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742282404; a=rsa-sha256; cv=none; b=dWk7mTIhcAr0R5PNiW4fWTXxPyQ8i1MWI2Wd2En+Ty/Lyb29hW4VN5p8MW7NTzFGdtDrh4 DPfqD4IZkBzO/Cb6qw45YPUzqXsWNULxyus66s/F02s6YgcbuOgu5UpMCfYDIJ4PErSMS2 2mzM5eAV0+ud2IOn4wWwYtQFER9jKTk= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FOrEGQqK; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742282404; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=Y2N+i92fAmW5afCtJ+wC4iVqk8jRVUIClCZRAiQ7H2Q=; b=Il8zDU7K1VFZkGHSKPWqFhD7viIwhdZLBHf5FQHxUpKHMwYno6sAX1prpIS5pyg4I/mcaH Lze1EUljrcq3vXK+6bw8lwPhPglajIPu3ord3XFHP4Vk+XI6FeELehT7dBRddmToUpy3Pp 0GphhbhiLpzpp/tS4FQNZSZPL9STwxM= Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-ac34257295dso117827066b.2 for ; Tue, 18 Mar 2025 00:20:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742282403; x=1742887203; darn=kvack.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=Y2N+i92fAmW5afCtJ+wC4iVqk8jRVUIClCZRAiQ7H2Q=; b=FOrEGQqKrMTlX/QAd/Fx0o8LpXDXbdQdyaU4T41aVp/s9G5UA9B136Msf8QI+TqG5/ yARUJ+mGqmAJf3SYZLuzELYfHYNNXrSts+BB+3n/Gn2EDOEsXzLZkWFqwRBpxoNsoPyY lEWetMz7GiWaOOKczTwS3wvhdN1t//AqKT8dHWsUkcWK44AoTH/9Si0DRv6tkxYjMWyb cNUW2p80URTQ57zP3s6XHbBGhB5/SR+iO9D+Aqu+EIWGtp+yo39kNBFiefwbWKV8HYCV +rbU6Wrg8qnUBj5q+nawvsbAfquY8RRcvj2UoHhGo35KECFuqTYo6ij1qqhXcXz7uhF2 h+Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742282403; x=1742887203; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Y2N+i92fAmW5afCtJ+wC4iVqk8jRVUIClCZRAiQ7H2Q=; b=IVbvsEOJqIrNm1iUJPBOcxjRKfPqkVVJdKpTND2vEXYagW/fJzejmvFjLkWNhD0a+D 4vn31ZCyNjCm/yniFK8Rysyq+qaYd8IlIxAxS+3BjwQlijM5/79qGbV6o5Xzz14HmhWx N15pp4rEH9Buma2Md6LR0luwd3stzQ3/qu+0vVDIWZYqie9mwa5DjuXeqm+6V8VpOb6p IEm/ZuLk+BIAnA5R2xsySsCpm+qc8VfWBgaurQKItId1bsYoV0btNogYi2rIIJMrbX3v Qs31HHnQIdt35ldZkTU3JEVqxl45FrRzpDK0m0RJA/aqoH4Ie/aXXsZV3TI+dumhBXL4 T+LA== X-Gm-Message-State: AOJu0YxEIFYGlT/dovEot0aNRZpzi84dCcorVgx4l6qDJy9SzXIJe/aF UDPvwowESXKJLti5gTI8zWj9j/Ch3rBesecJam5CiojQfY96eQOl X-Gm-Gg: ASbGnctEDqzsg21xk2iGwlHA5n4d5MhJXPRZU/5uER9gIpN56lkNj3XInE6hlkcFhnC EB25v6GYGOVCZdnTYLko8r3ow4GrGRrq+mWVn4SxnyBoFwuO5XA3ue4lWqn9g7TLjAucvELKN8q a4OZjiVBfc5U10t9uRJezfzRiCoDKOP+S9lpGt9Y2qvodWRL9gLufgkFIYquYdlXF1GjbalUUPT QLt24NGR/YiCgCdGK+4WosJLry4l0YByWiU5b4Qn2UpBiWWbB2wkLJgi7oJaCsCsmUO+x/l3cTk 47p8UIycb/J7c9sRxHmECdiKtN+fVjjLNzxbsMlB6o4o X-Google-Smtp-Source: AGHT+IFTrUaIZvqpSOupkfSU++2j4fNVNAxXa+4OPtJq3dlti+yGn7AS1teR3IpPUf3Y+VUdCzBPvg== X-Received: by 2002:a17:906:6a27:b0:ac2:7be7:95c5 with SMTP id a640c23a62f3a-ac3303225c3mr1613675066b.33.1742282402610; Tue, 18 Mar 2025 00:20:02 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac314858a8fsm781703766b.80.2025.03.18.00.20.02 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 18 Mar 2025 00:20:02 -0700 (PDT) From: Wei Yang To: rppt@kernel.org, akpm@linux-foundation.org, yajun.deng@linux.dev Cc: linux-mm@kvack.org, Wei Yang , stable@vger.kernel.org Subject: [Patch v2 2/3] mm/memblock: repeat setting reserved region nid if array is doubled Date: Tue, 18 Mar 2025 07:19:47 +0000 Message-Id: <20250318071948.23854-3-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20250318071948.23854-1-richard.weiyang@gmail.com> References: <20250318071948.23854-1-richard.weiyang@gmail.com> X-Rspam-User: X-Rspamd-Queue-Id: 54F45140009 X-Rspamd-Server: rspam05 X-Stat-Signature: 58dzq383xk3i3megf5ebsqsnwaod643h X-HE-Tag: 1742282404-497403 X-HE-Meta: U2FsdGVkX19z7rXB7Ccyub3fBp7ZEhVOZSjphQoHbmfo4u9Wwe5+p8Tp2JLPL9jeJHOAJeO1gy6qknXy3xpbkKo5LfWJEdVyNZVxm+FlazgNfaRRlVZKsA0+0EcCDj1fVgktXntvwFKE2HaWKJpIXDW5UDtlWn9d4ZTlJCEM2OW7lsZvOrRcFyttQzAc3Q7YX8G+ovGH5hZBUpEbxg9mq6wV9+beifLax/CmlS0KxS79bODYp420KUqQdTMKQLPzf6j9Eejdqnfi/FlzZaVzKGpNSPSC8H58MnfYx1i0yzffZmN1vG8U/jHwxzhT6fUXSHllYkFBpYdjOXHToBLrQPPT4+Q/17+44Lyo64Le2KGBHn4P5b5XI5qHBe1U4GESvDOTSGKobHzhNU3kR4DBI79iXI/62Ec+U8gNyP+rcZMQ5i1139SlrUqvsEKGHAicj6MuI61vqkbS+NGPj5v6yrCa58MQvNSUwmzu947wWxDfq6ZfX+asA+c++nAekLDOFz2FDB1RLF6dYMHVfUxNYq3CDOHGCeS1VFnQTv7VPJRQDc7N9sMReDfv7yE2i1jJ+WGiZT5Oti+uh/BB4JdMPcC8nHHWi8klX55KFo2/ggMUVO+2ESwMqbdMMYwe7orkEmCIC/h4Ln4ra8XYoeQfMK/TDeVakdYoDkkAE+ddsNWZz4waOsxDTBXSzoXYXLzXEyrchmdGDhfB3OePfn/VTmUaV5pSVsZVXGfd5TY1dR7RFzgJcnl5cLIN6A387kx0PcDaaq+SNrOyvwsO8oRaZQr7fZmIHFCB0k/F8LWizcSrjD3l9u6QfgPZX8/Zqyhu3TVFiVktLIfql6306sIcgin910Yb1el/FmWjO7iHQqQ5Xv2T14xuPjN/8ip0hZY2WHAOslJBgg5+CI8WXlzvcrwXDvkIGbOjWZpJ0mXkcQT95nEMZK5sO2EPcIKLHB6m+CYZWNh2qAOLT9mTVrW vjZ4k1sm 9E21FylGxRHBdmxeuX9bmws05qWe7GeI6xOeWRulXVnqi2aBuw0mAKJEbodq/tUlrQJqhtEqn28eJVmNgZThXX2YiZeQqaWjAWmxCo0w9ms7byGzrH8BaCcjn6mycCspcvaXB9/bOOE5l5M41mfr9DFqyGAzUGiI8BJhyGQzXjj1LXzunCDaYBdfnLV2XkgtmneIqP+70Dz3zwRXm375oO42QQkJyHxEJoAlx+3w27wnKi07QgQjzJsMF6fbDFjNXuy4rpwtuIL03vL+8HN2EXr8eBze/dgDkWaV2CET6MAFGm5iXicg8LPIBBhWn5+kd6mAoSps+cfkb7nIKsAHuIKD2131lCO+awV5Ec9mkccNBs8tpP3fOKsFoVUYwEwYSDJ4/Uf7XiGxhMb0myva911Eld0bzfYI/dqrK79oz5TV+1wfZfh1ZRVNMUQvrVnZczPyE6a6mtKFJxqqScaLuciapJFIQOHb3KSNGXtZ4a0No5yGicjhtDG2c+6QD9ocU+kr7 X-Bogosity: Ham, tests=bogofilter, spamicity=0.001488, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Commit 61167ad5fecd ("mm: pass nid to reserve_bootmem_region()") introduce a way to set nid to all reserved region. But there is a corner case it will leave some region with invalid nid. When memblock_set_node() doubles the array of memblock.reserved, it may lead to a new reserved region before current position. The new region will be left with an invalid node id. Repeat the process when detecting it. Fixes: 61167ad5fecd ("mm: pass nid to reserve_bootmem_region()") Signed-off-by: Wei Yang CC: Mike Rapoport CC: Yajun Deng CC: --- v2: move check out side of the loop --- mm/memblock.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mm/memblock.c b/mm/memblock.c index 85442f1b7f14..0bae7547d2db 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -2179,11 +2179,14 @@ static void __init memmap_init_reserved_pages(void) struct memblock_region *region; phys_addr_t start, end; int nid; + unsigned long max_reserved; /* * set nid on all reserved pages and also treat struct * pages for the NOMAP regions as PageReserved */ +repeat: + max_reserved = memblock.reserved.max; for_each_mem_region(region) { nid = memblock_get_region_node(region); start = region->base; @@ -2194,6 +2197,13 @@ static void __init memmap_init_reserved_pages(void) memblock_set_node(start, region->size, &memblock.reserved, nid); } + /* + * 'max' is changed means memblock.reserved has been doubled its + * array, which may result a new reserved region before current + * 'start'. Now we should repeat the procedure to set its node id. + */ + if (max_reserved != memblock.reserved.max) + goto repeat; /* * initialize struct pages for reserved regions that don't have