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 DF86CC282EC for ; Tue, 18 Mar 2025 02:58:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1E25C280002; Mon, 17 Mar 2025 22:58:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 19182280001; Mon, 17 Mar 2025 22:58:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 05A48280002; Mon, 17 Mar 2025 22:58:14 -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 DE390280001 for ; Mon, 17 Mar 2025 22:58:14 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 8D14CB7A83 for ; Tue, 18 Mar 2025 02:58:15 +0000 (UTC) X-FDA: 83233162950.27.EF2345D Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) by imf22.hostedemail.com (Postfix) with ESMTP id 83285C000D for ; Tue, 18 Mar 2025 02:58:13 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ODBQa2U4; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.54 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742266693; a=rsa-sha256; cv=none; b=4e66UdQEQvKgUWzmA2mf/iYQtEL30KEPH+1uYDCnosWjVP1Ckc0WxaAK0jjjymLx0cUa05 NKG07E1u4D5NQyCTv9rhva6ciBNrGsOVJ2W4z3PnIBVBGBMO/QXe8MSdu0vTSMY3Dx8yqP XmcJoPQPlcQaI3V3GulqbVzhwEB33o4= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ODBQa2U4; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.54 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=1742266693; 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=oi5DV8kK6A8fuA1aYBY10ebP1mOqFbAxgn/Eos6wI3w=; b=qWIsMN8gOGZ4yOK7GpNDHmZ3vXhbdKs9EqdXoWR2Y2kK9KdwvFpxcZZ56SGL+ImVf15qj7 x+5j4ZbVu1XSLnyS+3aRv24NinUMt6V8nxM6NA3ya1Ne2LagGFCSheYPXLIAbuxZNa6eAl katpkfJNKhfEo00v7BMQbUnZ410NwDc= Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-5e61375c108so6664586a12.1 for ; Mon, 17 Mar 2025 19:58:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1742266692; x=1742871492; 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=oi5DV8kK6A8fuA1aYBY10ebP1mOqFbAxgn/Eos6wI3w=; b=ODBQa2U4IeMH3P1XJrzwOyvkUNm2SjgUEVfLYCZpS+g0UKDxtHs8zuxYEJyco7Xg9i NAcMRc638iL0UxSksGN7kK2fmG3jR58ySrAGkfZh9M1E9nTPnct3ljz6mAzm5xiqxo0m vLDLGBG2HYT05NW7uocqWuVk5cWcdyU33Nsh/SeWDNG0NtRJCWxE6olGD7q3zJd1AwI+ m7gUxmi7E4epvCwvqe8DjUDriYpOmnzv1V68vtH93w8/9bde8ncs2j2edzYN8UlyT0oW BwtLMXV6KJTJlg6Ili9lkIUYa6i2N+/Nq0y0CdLrw6WYvW81VL7p8oqvqy01VKKtB24F vRgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742266692; x=1742871492; 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=oi5DV8kK6A8fuA1aYBY10ebP1mOqFbAxgn/Eos6wI3w=; b=gTzzeQ3XEuVhs3Gi/TIIXHqiguBu2mTLLdmb6YzJt/8X6t15VCnlonYS7KPz1WFQxb s+eHsMcSlFEBUQQtKd5rjlQj54raloNSKCVe9EvGxXZPXYDlq/bN+M9ojkjrYiFqKVPn 9sW7Rbee527gJOtU1BJnBfd6qQ06KIqNkfkZaZK3bV9m8t3VGaC0DObmJn4y7/4WHPWd FxlQjTP0M70mzy/Ie3i+K3s7gf2YP51DYWjl9pHbFSLTSVwRkP/Dpn5LeRWUbD/Y1t7c oZFb7LJ7qT802zdxQ/5JgvuA4RvCYWj286gwwnoUhiru4O90CrfgiovK9MVHkD8FH+sE ausw== X-Forwarded-Encrypted: i=1; AJvYcCXdDT9UYvf5xigsdjWIxM+dmcQBRmm3RYl3ieIEIJ7FuE2skiRCKyGRwb16Tm4RLmGPXuhJZsbc9g==@kvack.org X-Gm-Message-State: AOJu0Yx/rvxrXiRzj86QCPOWPLs5b46x1OPY0gplEpMBPAtC28FwvRbP wLSZSrPtBWbhfPncyy6A8QMFGN6/7DfTXKaYyguV2LGqN0aBVX7p X-Gm-Gg: ASbGncuxamPD1FtBzK7CwpYmcvUXs1CaT78elkBWKizWKQcvK9xVm7fLV1yysAVZLfh 9GOxxawI2hkPTkRTM0okCOSnRcrCvSBOXZrI7IU9VtjO1ojgr8rBFxCo1vqsjzmZ/jPvDZo9fSn sZOSe9Vfn92E70vRqxRSnLqCQX0YTSPnuRW9px5neLt5ckqqbmjNuMN/mkAUefWU0cpgPMQrs6e IOeZw8yF3VSYqZoNUifcHIiECMG3LJK4T4A4+hg5YfUrKz0VHQjn+keTIcQaUhwd1pjk+FioNl7 cWblyLL1YJUIos39Fafxvp6enMJ+bzU5xs3kO96sWWv9 X-Google-Smtp-Source: AGHT+IGIxuH9uLjfKi4krgI1q72QT+hWwcEhQZ8W3h8D0Igh5GdoyWgFjfQHt0zyiBgJcYL6KlBk7Q== X-Received: by 2002:a05:6402:278a:b0:5e7:e3f3:8647 with SMTP id 4fb4d7f45d1cf-5e89f645652mr15619188a12.19.1742266691513; Mon, 17 Mar 2025 19:58:11 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5e81692e64asm6836433a12.4.2025.03.17.19.58.09 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 Mar 2025 19:58:10 -0700 (PDT) Date: Tue, 18 Mar 2025 02:58:09 +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: <20250318025809.v2jpjbwy3yhc7cik@master> Reply-To: Wei Yang References: <20250312130728.1117-1-richard.weiyang@gmail.com> <20250312130728.1117-3-richard.weiyang@gmail.com> <20250314020351.bgdjmdjqnobu77s7@master> 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: 83285C000D X-Rspamd-Server: rspam05 X-Stat-Signature: pmxwsmfyej3eypkf3ato8mx6htcjpmh1 X-HE-Tag: 1742266693-823875 X-HE-Meta: U2FsdGVkX18PRCPzntiN9fydgyNbU7/YcxcmmtwlzQGApUAwTWHXk5qkLJfmPPAYAjyJwjZsRif4PpIi8CvxAUVus8x3HHPBc/gMVmrKERojZNCaZlbnh6fmJiXecWz+e8nNh5DWO+2pCVewk0L5FPhWOduGO+FMdArMY7EHKiWag8FXjH4IcdkmCDcm2KaSUQfJaphX6616+6HtWmJIre82bG5+CGsdwg1b4tpZZSoSnijx+vrZhc2UT1OkErg+MIVTHafZm35yjRFNOysgmR0PoBr1imNKqdmLbCCP/cL8D3clCrNI3aYeziaYFrgAVqd9b8g+e7Vz4Qo5HEo1X4vjec19mwGOv95rqU8lDBrkWs03ftHjTbd7wBSuhKITkQk6nuH8tb3zAdQpT/Jwz9BRnELsPn0znwH3HpPvPoN/SsUsHy09vzOxYQXVRd+aZAHt3E1/2APkWV40SgrokcP4HmJrzGR+iaNXDFAC+agSU4xBrhsNT6azWB7+SNusfyPBmFnjyv0dXsAlJ0UFSl2+esO57cpmrPdwla4S7SI1Z0XcGQy9boRRgOCEx7nxoJfwo7QU5txS/hhIYSiFT+Yy3rN8FOsuTX7v9IHYKCYORw7QeIvE+h0/Ldn++UNk9qmjUdCK7oR96U8Mmw/D1KxDhm4Vlp0K5wEV+VRFGWkw1q+n62jsNMTExQ+KehbEu7ruMlfwuEyiVNDWxtdqjB6wEROVheML0c9KmI50fu7Mmlvla13isVSWDJ0+N2SknGvKlENe0HNufJZQh3VQrZ7RSm6jXSLzNufC0p1W3GRgQaDgMObD2fCN5zruLcNebG6fDEbTody0EjpdKxRK29a6BzVQ5Kppf03Y/2WpxXHFpy+l0RElpN3m+6xesrlTPuk85Xg1/7jHPYTRghlCfbB0vn8+ls3a/OAL3cI18T9ULAx0tpdBB66krjF0aRGLqSnjv+L3uVLROeI3KqZ QxMlXCoI QIyDFJ9gOiXaNkrPETcD22PqhPJ0qtWC3NjH2eg/l2/sS6d1dnCFypV9+l8p7AAiaZmp2WaiJW6VvJowZ5f/ufwp7vKFvDtv83MfflflQN9AkkREt1uePCh+hw11wM6IOQzq9AkkMYjJ1ZCjgV6gY4nHRt6I2e5UaXLOdmJVMwKfm0df87qEYePilS3Hxr73K7ZhVjiZfamCmYcMTmt+C61mtC/rfcDXCX8NipLgFV16yKkustZMkVRCKhPyuH+vqwf602y2qLi7200tkxwoh2G7HvpPa9iDwkXPOwBM1Q7rVM53ZHPrV4C2xx30YoQ36uUWz9BfwjfymXW3c7lKWuNE18tgmIyOs40OEIAvHklvPM0F2v6R0Y82ay1mVAVSwmZJlZXYMWMw97SQBmXdt8ych53/wQuXkbebiF2HoOsDQ0fJLP4nQkoYhjsWPMfnf+wApCoWxhn9CeYN+qW9D4tUNmDRFRrGKcVq7x6QAHTKf6A3S3NaTQtaNM8N5fCwCYo6FUqea49a4Y8UM2SATWbLyg0zraxCwAu07ukbx2K7KTs4w8fPabn9bqpJWohrA+az9UtE6NOSoxtAQ3982pMvAiPkqdQNP+pdTe22AYdfo/KgGl1+6MwrYjZHhF/aYeGhFNUM/MqS3ENpZ9uK0LQV96yh9qNYhNbZQCF2e+akLjb8uf/mAqw6MLWCd5dwURSccKELtsutTsxyc5P8yjT2/2w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000325, 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 Sun, Mar 16, 2025 at 05:32:35PM +0200, Mike Rapoport wrote: >On Fri, Mar 14, 2025 at 02:03:51AM +0000, Wei Yang wrote: >> On Thu, Mar 13, 2025 at 05:07:59PM +0200, Mike Rapoport 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? > >Yes, 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; > >maybe max_reserved? Sure, will update it. >> >> /* >> * 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 > >-- >Sincerely yours, >Mike. -- Wei Yang Help you, Help me