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 74D19C282EC for ; Tue, 18 Mar 2025 10:55:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 78277280002; Tue, 18 Mar 2025 06:55:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 70A8C280001; Tue, 18 Mar 2025 06:55:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5AC28280002; Tue, 18 Mar 2025 06:55:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 2C695280001 for ; Tue, 18 Mar 2025 06:55:32 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 562481CA981 for ; Tue, 18 Mar 2025 10:55:32 +0000 (UTC) X-FDA: 83234365704.30.4C492B7 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf04.hostedemail.com (Postfix) with ESMTP id 8652E40002 for ; Tue, 18 Mar 2025 10:55:30 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf04.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742295330; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=w4gd4jsJrLhDRoWc8FeVdhmISDeKlasLeK5qI2zVGOU=; b=Gae8889lnq9VrS3bvnC43AaZOdl/qQtbraIcpEgD0uGdQ3dLRKLQ3guRU7zLAT/2avecV4 iv80RauLhtSz8L/FprkN9OdDpJ1nRa5GL2mMIA6Cz99ZrLOfT1sdGd/tQhhL84hPDRcohE nayZ4HWt5xriPJqww6IVBDHv63DpLIo= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf04.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742295330; a=rsa-sha256; cv=none; b=KH7/E6RZPUMObeuvB2TFJsZy2rnXdZgsyJYn6l7xyeGQmWmyTWviF9G7zSEiGz1qphiCPn h3TmbYjK4r06YmNB1wC5xHGgHpF++VzXzWPzpOiqXOKtukRt+FAg4S/v8IrCGoZhBzVA7F ojfBJ15O/GxH3cR+fiNqhmWHbzMBMK4= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1EB2513D5; Tue, 18 Mar 2025 03:55:38 -0700 (PDT) Received: from [10.163.44.33] (unknown [10.163.44.33]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 81E063F63F; Tue, 18 Mar 2025 03:55:27 -0700 (PDT) Message-ID: <0bce0252-dd32-4cef-99f7-2222add43e2c@arm.com> Date: Tue, 18 Mar 2025 16:25:23 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [Patch v2 2/3] mm/memblock: repeat setting reserved region nid if array is doubled To: Wei Yang , rppt@kernel.org, akpm@linux-foundation.org, yajun.deng@linux.dev Cc: linux-mm@kvack.org, stable@vger.kernel.org References: <20250318071948.23854-1-richard.weiyang@gmail.com> <20250318071948.23854-3-richard.weiyang@gmail.com> Content-Language: en-US From: Anshuman Khandual In-Reply-To: <20250318071948.23854-3-richard.weiyang@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Queue-Id: 8652E40002 X-Rspamd-Server: rspam08 X-Stat-Signature: fgqebf6ucasszi4zij9mq3xbjfbyz1ey X-HE-Tag: 1742295330-603375 X-HE-Meta: U2FsdGVkX19Kp+87kxFxqJUCH143w5+SNU7eqjBEEtOn0eMPaTC9czbtWreaU34xijBkfvdiU1nZXb4VbGbNI5B3lWZAl8QLPUM9rC4iYM3WE3u5kZpH5NDsZlu7FAazCIc/ojBuGpryvBok7m5uQ/mwCRbYBzEuxU0cVVwaD4l4uNlQEDuav9R/YN19PK1YmtXvAossveADhRS120lkqO8Zf+w/ngXoMgJLw4QqKg3+U159EhZtG0qgHpozlUCgXGQDn2I90d+DzCw7sTecLDs8MPFRyd92LZ9DLcxByr7DgmJ1baNFAyvFm5FKPPvbHHEWeqvaWyctNlqmzq4BL4szvxPRYqbc1yu3HNLF/Y9r6Y0QmUg6dQsEOKkwMrSdRfhgCeBmHVYKj7TJIlsQu49XkxZRqYg2+b26QJBjCnNNKTssNmKOcxFCbTf5KO8CMON4Tlql26U9hyE1GpaIEf+BhxXSEztUaunc5AV5fBIewmaYX7AoOBNxdj0cwu/E8pcwzYOliVSOgiyh+15g0L4DI+LflK5Uo59YTHm4YcQaBfE++PQ0ItplmBux9BLLRvnnU+yq4Z11g4L4exPd4Hloa/NfWWn9CzMCQu09/+wWdZvnlMNa9gtxh2hi1wMQzdHI7YNeYXTXIL1+jvjw1VPaYNfOhQSWW97R6+7pi0VQ95C70I+VxOqm1F5IZbXFJowJUA10wE2fHdS+4VGTneRftALwuLBnNkN+d7NHlBjmaOJdwU4d1z/+WWx0NWpG4ciVKupMspUB7PYJGY457ViWVwsi5nrrxUBD4iE2yVXshky7z0S6dPnnubc2oUeaQojDUzuNpeMMmr9znEKSugwp5EAbV4CNm0iXqe8pZQA67yKHkhWGv1+nDdghb1eiU+h/eA+RqGnlCNVhkco3LH0PNqIcVT98Z9CMCAy8sMlIUSX3oMcLtR18uz4/PelXWp1WwtcqqCXHyJ7AHSP sEXaPouU xVt0XkloyIsT0+YxYNMmQTN4PJrZdEEortYFVRsx84KGXrWQyGwAD3qK4Vb0k5lzuKXrir0q38hN/7SEFwNwDcPuxD6gj4UK8lX/JLk9cLWGCxeHJ1VTnzk+m2+Tfy65q6yDIKuDx1mCu7GKVsB3qziU0wxbptUXjqB0WtLZlpadgFeFVTJPxCRHgx2txHvDaC2ce3R5/cJ11XHz7G9aQZ861vq1ccKBsd8+cgTs5590SwtHIuu/UZEXf9opErtPMjOq3 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000015, 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 3/18/25 12:49, 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. But is it really possible for the memblock array to double during memmap_init_reserved_pages() ? Just wondering - could you please give some example scenarios. > > 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