From mboxrd@z Thu Jan 1 00:00:00 1970 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 E606AC282DE for ; Fri, 14 Mar 2025 02:03:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5F169280002; Thu, 13 Mar 2025 22:03:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 59ECD280001; Thu, 13 Mar 2025 22:03:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 46793280002; Thu, 13 Mar 2025 22:03:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 28557280001 for ; Thu, 13 Mar 2025 22:03:57 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 950CDB70A2 for ; Fri, 14 Mar 2025 02:03:57 +0000 (UTC) X-FDA: 83218510914.02.4381777 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by imf04.hostedemail.com (Postfix) with ESMTP id 7EC8840007 for ; Fri, 14 Mar 2025 02:03:55 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CNDGqtSO; spf=pass (imf04.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=1741917835; h=from:from:sender:reply-to: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=M9nzqhOs6/BKnKTP8r2tL1HYa8XPeB9VU/fRQe2zQtY=; b=HwFx3GvhQdV1kXjQtXbDfEwnBZCm2NmV2YYrDJcAXvTVIYF2A2GUaowTZcyp9SkEkuHBCW YfhnaUg+1YvNWA4UBRN19+CsXbQkLSp8kF4w3v1LfDSp4OYaOx7rlKUHJis+Z4u0fqX/Ts 3Q7B27cU/JfMRZU2TQfkG3pSCy8Sy6I= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CNDGqtSO; spf=pass (imf04.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-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741917835; a=rsa-sha256; cv=none; b=0+w9dja8e2ajH45fF8B/Hw7ryVeVf/QXFBJKV5KnKYPw5/b9dJUF4bdd0FtU6NnDRF4h1T fQ12LMJG6DCoLxXi33424rySdn88QDXLNsvQ+7KUhZVfmOzoOs3qoqSC3ljEO9s80QfZqG a+dz3NyGiKVRXl2s1+WSxveCy2/QeXA= Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-ac2bfcd2a66so280036066b.0 for ; Thu, 13 Mar 2025 19:03:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741917834; x=1742522634; darn=kvack.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=M9nzqhOs6/BKnKTP8r2tL1HYa8XPeB9VU/fRQe2zQtY=; b=CNDGqtSO/kc6jqwxUab5mRBSZanXiMWz67mnZJYCs6hGoCykUQWABECKtS/s9cLmLt P2TRLvnyo9gCnzL+ZB/8BaDewOwoAtOHccVshzK0/zP+NNGWQh4zUXhPHL7WQJcp+vRf FzMNbec54QmRPyvoDoDpOLqJthmf+TkGSp9ify0YMfDcb3frNi8ECXorCimsIYPZho2Z wl7WSgQkySft8ANmacIQKj+7xc4kZLbcD1XCJ95evj4o8i6leFKHr8CFyqLL/CtqN+Ep J7UAMeoo6jvr7n1COaU1qgTVMYyAHWBdiidJ+0vsttkf5VsuQ8f6/oqwLpASV3nbg2/k 0u7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741917834; x=1742522634; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=M9nzqhOs6/BKnKTP8r2tL1HYa8XPeB9VU/fRQe2zQtY=; b=Rkth9zEIfHZt/SrCHyCMErkJZUv7PYn6xeJPtO4PsYB5yxB21SwxktrtmOYAUpks5R HG5gPqV2Panz71BKfa2KtHcmeLPEZDZ6+wzea+yVBomwKmzsQkY53jk9WvkoE5iZAbXS fVHXSc5DVD1sOYUNYIZ5rAkDJ1YQUucU25Rf1m9v3kZFp4As6iGEmUCcrppYMk9GtljG DJZK3eB+zcfaIH/n/7wOMdR7D4AE1M/0vAaqQ/xah+zo1pKyF6mrCtcapxnii8J+H/J9 C0OV7M4r3i/JN5yFihEUFMKmnuDTxVtiZGqHstx+7+ogPL0i5FUPomIzzEBfpWg+fbgv dzLA== X-Forwarded-Encrypted: i=1; AJvYcCVmqAWn0ZWxBudSLlu4NSyp9EEtBmd9/90T7mLpV5kkrZZfqwvQjNV/QBbJ5ZHin3xpmOdybxE9aw==@kvack.org X-Gm-Message-State: AOJu0YziLHE6D3ZN+1fLZDaKZd9mEznAvOD+N+3pAShpYKwI9kUO+r06 Pq4ZAJyVQKELFStpoWHXdhx7PlJtuROjBkt710HNg1PBVt9Riugw X-Gm-Gg: ASbGncvktc8XdJhTgZhikEuiOCsdUi0rQqx2A42fDT5pKv0DGJSuXOiftXFfjfOnKTP Q2T8AaW0bf5X/0cVtdZ9SknLNho0z4mzGAhGz3yws4M6gbF53FbjJ687JjQNvHevcVOaoXAmF1G 2iO7mgViqM4Dxw1+nJ6VhnLEeFDfF/mQTDCS//rGs+TeWUJn85ZHZsxpM5ImDNcW5DgMFiUNd1y IXPxXV1pYf9O7Z6O5jBy18QO0jPrH97J9MZyVFNWqfjiHVhjdxwu/LXf0D1KF4R3nu29ZABhQOx z/YKF/d7VjOY7dCt13hDYM+uHcauO1DB8f04rcUx6/q2 X-Google-Smtp-Source: AGHT+IGNkXV0HoLuhIBynWg2XSX8uwSHfvFnIHdrebc7kQOopUuWC6IbyA1ceGrcZeHOhxwZZrVtFQ== X-Received: by 2002:a17:907:3f9f:b0:abf:78b6:c565 with SMTP id a640c23a62f3a-ac330105aa3mr56107066b.4.1741917833593; Thu, 13 Mar 2025 19:03:53 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac3147f0cd3sm153836266b.70.2025.03.13.19.03.51 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 13 Mar 2025 19:03:52 -0700 (PDT) Date: Fri, 14 Mar 2025 02:03:51 +0000 From: Wei Yang To: Mike Rapoport Cc: Wei Yang , akpm@linux-foundation.org, linux-mm@kvack.org, Yajun Deng , stable@vger.kernel.org Subject: Re: [PATCH 2/3] mm/memblock: repeat setting reserved region nid if array is doubled Message-ID: <20250314020351.bgdjmdjqnobu77s7@master> Reply-To: Wei Yang References: <20250312130728.1117-1-richard.weiyang@gmail.com> <20250312130728.1117-3-richard.weiyang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170113 (1.7.2) X-Rspam-User: X-Rspamd-Queue-Id: 7EC8840007 X-Rspamd-Server: rspam03 X-Stat-Signature: 3jy4ppsx36yy7meaetpg6i1afnhbtjqd X-HE-Tag: 1741917835-658544 X-HE-Meta: U2FsdGVkX19BnBimVzyT6UctbQCjEa/r9V6Ecun2z8Xl1bQX8vAbox9t5kfaKpBrBLFwe2D7ysxRAQ8ij+lj6a9daqSVIiVvIvH+lgF7+tyE3a1TqwR/sdkHb6wAbp6kh8VjjVXkUGw7VQIb457+TekdkhzaP3kDqASuywkz2E6AD0ad0TZwNv6+2Rb8I9Gp8Lss5oGtvd/UF0Bm618rguvL8xZ2Y4QTxCYVgXEdMfxqKsRdRFDrGCW23NPJ5yMReJqCVHzpbzoRunPf6kElgHZgDsghkJcnv+UUzOea/16+UDjv1UJ2qDXr2DpGnL007EO8E8ntXYeK6y5VpxEUFs1GgmPRfSjocTf1GjTHUDH3PXTPxFo0WRJibJ9JUHnsj7ia1pB/vW/0suqT2AxdHhonrtt17DvukyiNmX6EIDLyt0Y6829XqZ42hNhOVunXWyeqWRQI58PvwBuhMBIHhUKXhy2IOXAq1rRADa2bxWQE/JEZLQNBKjF6V9VqpLf3zVm9NdFF7+VHeOlDXQmJGw02gdnZjEGY5iKUaSgLtvm21WxicOSwsYMySUOzca+HSpIRsLZR/U/0wioMzxr1OjtTBvAoZbNoaINpi7IF7kolpjpYVQuOYGprvaYqgMAaeTxoZgLLSqMGtLDw66Z0ziNyAslbAE5JP6TH17ZpqX3wudGJuHPnDQfmkm8LPE0de1RKxIAPKSwhl3fQuCQ6OV4tdRv2acccoiBYPVJ+kVxPrQ65N/cC7p/VWsXMZ3UFqLPHXxbqKbEPMd80ZedOzj9Xfd+fGXKdzD/ud2IPIiIFboTeDn4EdCBT5GAi+w5hlBWKKTibRICOEqeRWnUcxEYw0LqXXWPFLhCzHcj+MNypbDkR3zD5TI0u5yd2cF3t5R6pmamNJecdpzVujZy6tc6euxh3wXGii+6ltlKJ9/T0ooxT79UZuNem2MRyy7cVr2qjGRNCsIBJFu+Ekfi TE01z9AC rGFJaqI4Zxr56dEmdhwzMFP5QKXN5wMdkQ05XuVj7ob2WiGM9d+mCbI4nAqd0HDPEZ/eyMFo/R6QiPAyotiL7Indi4FpVkowbgtsniQbZQZmD0srsHq8SkZEKI/HSK4+Gs4nwUMUhkXIRHr6O36SnIZw7uggR8VYpuaYJzbEP6yFIkWWjakDrjQmyIGLYoHAEtI0Z0ZP/yDcYDXeFHf2OQ1xVcCyA1KqgXxNJj9SE2PzFDL+ZkQWntlyb+z0HGomGuhdHHsgTUAv1pC4dE8JfU68n0Ad1SJ5gJzQuy7+y82gIAkGCmqSSDgL8YEw55xwDelOkD96G8JeQEw9qNLJ/h9nvybX8sxk3JYyLQVGb3QBIki3yuaD/oJafOXkOXKi7X1kraqxvWiRazpk3qXRtx9OLrMYBFpnQ4oVEjQaKkWxcre0SrDE48sgrMTCY22BTKZnbTxgjSauE+xStRIJIxzTXZU1+Cuwyi5q/hI5sfg9IiBasV/oxsT8xtiGpklQI+27cdt1f7pxN8Yr0rECY9pVrLkUtJIqDWffg/mn8L7LCjtlLIE3BH0dGXLhh9VeO3PAOXVv7yCq26HBlh/ChzIrOwCKaIttQNi8F9sb1ImEth5Q4Ngqd0C4JFt3cih+lSlfBDbEfYYqTEjRKcOKINm8AflzMeovRXCgLnW3a1iAaKIZHSx+tYh618Q1oryhkXusnin24kFlIFZ/KIFf21i4RCQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000116, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Mar 13, 2025 at 05:07:59PM +0200, Mike Rapoport wrote: >Hi Wei, > >On Wed, Mar 12, 2025 at 01:07:27PM +0000, Wei Yang wrote: >> 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; > >This check can be moved outside the loop, can't it? > We can. You mean something like this? diff --git a/mm/memblock.c b/mm/memblock.c index 85442f1b7f14..67fd1695cce4 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; /* * set nid on all reserved pages and also treat struct * pages for the NOMAP regions as PageReserved */ +repeat: + max = 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 != memblock.reserved.max) + goto repeat; /* * initialize struct pages for reserved regions that don't have -- Wei Yang Help you, Help me