From patchwork Wed Mar 12 13:07:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yang X-Patchwork-Id: 14013511 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 9F6A0C28B28 for ; Wed, 12 Mar 2025 13:07:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 60893280004; Wed, 12 Mar 2025 09:07:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5BAF7280001; Wed, 12 Mar 2025 09:07:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 40C35280004; Wed, 12 Mar 2025 09:07:43 -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 23FA8280001 for ; Wed, 12 Mar 2025 09:07:43 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id E35D11CAB7E for ; Wed, 12 Mar 2025 13:07:43 +0000 (UTC) X-FDA: 83212926006.17.256F645 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf01.hostedemail.com (Postfix) with ESMTP id 083C140014 for ; Wed, 12 Mar 2025 13:07:41 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=kRr6CuJt; spf=pass (imf01.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741784862; 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=DNHZcFex8Px1j83D4c9FcmO0xIGKpZb8OD7DVh1p9Xw=; b=YKOiuD/71NFLcX0a6URTAKi28AHbQnI8hDifIoAsjz0lAq2yiP5EQ5S7OuL0BFbBVml5x9 B2w7u/f/GrswiaIh0zdLGRdcPDZtcEcle22msN//perXrKcWP8c0FwTjXPD5zcMqcnmleD r9bNTXqBB6FPOQ/XawpXwOwReAtnvQI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741784862; a=rsa-sha256; cv=none; b=Yt7tyd27nRkB73UnKLHflmYy657XNZ3Ibz1SDmp1AS4gBbA6cBYAsN5Z7dDoORfkXtOBlJ OlLkyUQ9ukK3yQYow65EIjjh9BekyuoFajdQx5DnHBrmYcq5QNVD6PosxcFUeTQ/al4etf W88Ah6TJlW5G50+6tikbHCyhVymy++U= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=kRr6CuJt; spf=pass (imf01.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.218.49 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-aaeec07b705so1054751666b.2 for ; Wed, 12 Mar 2025 06:07:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741784860; x=1742389660; 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=DNHZcFex8Px1j83D4c9FcmO0xIGKpZb8OD7DVh1p9Xw=; b=kRr6CuJtFKZQPWrM9iWEypOvkEcHLH+DRlHrYhH0xAF3t1BRp7r+TgyZ/wev55CRye 98an+U1QxB9nHJN07jyC8mm0+I0z49xH7jAyuQiLFx4sL22f/DMXGU0lUmxB57M89G/R ZR92suXZAkWuGIdJFT5g3V6WePeLY0K42CxQpqpcU3cOEhWu/Jq5OkA97tK5CE0l8fXK RqoRFypMlHqRhsTwx6W//Up3YdJmi3dh1MDOV/+vRlQ7hxqxop1fzUfMwesJneB66kRt 1EU41aoGWJtFHwWlYad5E634aZ38cXy5uJAnnHFD6gwm4BO+m9myfYvkHIpga96RfzFE zCZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741784860; x=1742389660; 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=DNHZcFex8Px1j83D4c9FcmO0xIGKpZb8OD7DVh1p9Xw=; b=eSEYacWhbj14DR3W9vm4Czr6ICmF+1/ZBEWuMz+M0AOWKwLlTOZFtlTyBr2g76uPsJ oJfFK6qhzhM4ds1oKBTIrhB7x662AVofIrq1xpjIFCYn9U38QTeSbOH4PPtwCku1oHza kNkU7mPBExwhKA4IOozBrwSdWjDw1fxzx6e6r0IEyoPO/QqkxnaToHKu5K4Pjvn2B6Pn 53bBAARHzZrZ97kgPflvXfzJ1oA5hrqcSlwx6aQ3pOGXbmQyyhcNUrCRYiLa/6FCAqeW JdX97p6R8efRUWt5z19m0jxNjPpp4YbYUTcx2euSe8ZQmjW3rpY/X5nlMIFzMFkyZja+ uR1Q== X-Gm-Message-State: AOJu0YxInU0lz5Akjj7AqtAsPSL880zsjowU194P1fJbIrjpL0BdB9Gk n2cc0DazCZH88oLj7WzSp2lVSz/WFdU1JxGtHpzL1BAFOuly75b/ X-Gm-Gg: ASbGncvk8MwwZaKJhpYjFjs6OQdqVs44EE74EhMN2LooBJp8QJr/yApEVo0L/4b4Ead dG1omWkeaAiiUtvAq1Z+uOufOwq+mMZ2Z83w5H0u6vIn0tOZhAeEtfx2C46lxv0TuXB5d4/OWZo laEThrIHbwiq3OfWEPrjcYQBXYTbfhoLC9Coxyucsy4u27cVOrqcCGZxEj2feqGucf7CCrbGAfG g+8RShnP+JA+5oGFKIeEgVJ8d7JAMZz9GohndMooSdgoxqG/demYxuOcuF/uz4LWuuT6KZCVZ7y 3SLVf2AMtDzsjLBfb2MYoUfKbp3duPf/Qy2xCPIzTuoN X-Google-Smtp-Source: AGHT+IEN8u7QOLcSOGSbQarp99oCBB6jfJHA3YxhlG5I8KBsPt5gWTItLzkpJ1ry6WxIs/D+T/UCdA== X-Received: by 2002:a17:906:6a1b:b0:abf:74e1:cfc0 with SMTP id a640c23a62f3a-ac2b9db476amr1098655566b.7.1741784859257; Wed, 12 Mar 2025 06:07:39 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac2e1c23ab1sm96517766b.121.2025.03.12.06.07.38 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 12 Mar 2025 06:07:38 -0700 (PDT) From: Wei Yang To: rppt@kernel.org, akpm@linux-foundation.org Cc: linux-mm@kvack.org, Wei Yang , Yajun Deng , stable@vger.kernel.org Subject: [PATCH 2/3] mm/memblock: repeat setting reserved region nid if array is doubled Date: Wed, 12 Mar 2025 13:07:27 +0000 Message-Id: <20250312130728.1117-3-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20250312130728.1117-1-richard.weiyang@gmail.com> References: <20250312130728.1117-1-richard.weiyang@gmail.com> X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 083C140014 X-Stat-Signature: fzj7mfc36kqy8hef6f8ryuuw41cg6cwf X-HE-Tag: 1741784861-749175 X-HE-Meta: U2FsdGVkX1/qR5zTKIK0IzMBBEOb1h2pyienxc9tH3sVXsxbwS5woXc84bNab3l8GH0NiwdULVDqHJxF46BAUQl65cFMNxqWjKaqb7OFWyHeeRyZhfgkuKwfTMfqypO4NU1F2g6ohOSI8h71RKUWWizjYmdggcfKLnLMcS6J1834IQK8ovHkKOxYXny3auQsQNGtbdVbvGnnjturk3SCCdqDQNVepNqjXDQCuTD6JTtG0x/GaVialfSDtON8NYaEKZtxzjCHpH/KBaOsJY3dD0hV0ReWZ2mKXZelijEBQeKqpxpxoi7o5M95Px3U9a98Tjd5JXlqHrSMelM7tL8zuAAo6nJ0ev9sXIhRdL7F3X+5QE7W9mr+ubpz7uDDNM5g7KMlafjEWpWZKQJt3IcdhyY93Xlvo0WFgzDaVylF1/OmdGZVZlVjStupMU27prICHzRYcL7GFECewBnyDqNkNPDjVXKsf1fHTyAWrQMWxKGQL5qDlSxZ4pqCqc5QfzHQrjH9Osvmeb1NgOby+z0RqSnfEw9kysm7ZZeB2A7lWXXoIahRitZO4Z/P3RdBifRGpGze6ecEKmw6aB0h9N3MezXbpub674D1AAyIUCWhXiOAehYUuAgKkbvO1muSacunzEZosZXm5NJjYjWYn+FxUyo3IeM57pxTs+D4QExyKX/o0pP7h8n0gLMkAwN2oVWtBZwjOtZI83/p6pMOY5CEzcNVzXSagZPv6tF+IfWrQGBr7xCmEsWF762ZAQ2oMsRAQ00Ko8Odds70k1UoakLDdI2/LL4Mc9Su3I91aojuDyssCvtMOEmJee67Ge2r3yzhjYVq7uHyCnJ7rMztXEuSi/exh6oGVf3EPZrE8YMV5oPt3sduxctjjKoXvMcNtG+IB6j9RbvQDq+0NtHP49e9ntZjyFsqTh7D66WuD8hTlq/VRlm3M9Zq2zYsDisIqsFFTJtBcsS5+w+O42u6FlR vg6JD4YI ucvh/XKmLk1KPG6ZbHyZYND4a6kzTqTB2qTaW8QEDBXw5a8GRsmgEixiSwoC44LyvaGkjo8UMSVKYgurTs390z0P7k5jDcdDZkTYalCXg6O5BkegBfyYf87udHUsWCP2MzBfmXDVBB+NkcDmVZX65mZaLaCpL4lgvH7fp3rMYH9MEdEuLBdxdJnEj/allidojVTVgEKA+8UZzgjg9sDRI3sbsRFaoTInUtsxu/8rNNVNrGXZQq9MkEIhe9gCpsPuBzPDHnmQfZg4J1VjmeFciL+2oFG1Zn9y18DZEhwb/KYPLnIN7ZUgRtawTvleNqNC7zq01cFEMmz7qrBu/8wCCoedQTF3Xe9bySyTLCbj8fbXRn/oRKI6e/qqdbiOVcLYlMPMSRYh8cRTw2I9a0pfrS2GVGOfDNfY9aGUMAz1TnwyGzoTbwZb2wfYuKhmoc/01Kn1jaHMzL9o/erStOke0Q2wE68ZrIph0sEhoyUug32lbm69YjCjpLWwPbsKi1O4jVTja X-Bogosity: Ham, tests=bogofilter, spamicity=0.005077, 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: --- mm/memblock.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mm/memblock.c b/mm/memblock.c index 85442f1b7f14..302dd7bc622d 100644 --- a/mm/memblock.c +++ b/mm/memblock.c @@ -2184,7 +2184,10 @@ static void __init memmap_init_reserved_pages(void) * set nid on all reserved pages and also treat struct * pages for the NOMAP regions as PageReserved */ +repeat: for_each_mem_region(region) { + unsigned long max = memblock.reserved.max; + nid = memblock_get_region_node(region); start = region->base; end = start + region->size; @@ -2193,6 +2196,15 @@ static void __init memmap_init_reserved_pages(void) reserve_bootmem_region(start, end, nid); 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 != memblock.reserved.max) + goto repeat; } /*