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 BCDCEC83F05 for ; Fri, 4 Jul 2025 06:34:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5DC226B8011; Fri, 4 Jul 2025 02:34:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5B5CF6B800A; Fri, 4 Jul 2025 02:34:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4CA8E6B8011; Fri, 4 Jul 2025 02:34:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 369846B800A for ; Fri, 4 Jul 2025 02:34:47 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id DD84C1DAEE5 for ; Fri, 4 Jul 2025 06:34:46 +0000 (UTC) X-FDA: 83625618972.08.C01AAD1 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf07.hostedemail.com (Postfix) with ESMTP id 28F3940007 for ; Fri, 4 Jul 2025 06:34:44 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=I2nrBvR1; spf=pass (imf07.hostedemail.com: domain of hare@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=hare@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751610885; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=yL2cz1MA5QHPNL9R3FzwiegGW5loYrMMjOQeX6NSkkQ=; b=7kN/BX0hgyfDa05PuPpmqdN0XGBFWZKQnw9rf8zo7Yk8Yox5mTCBOF61hcp/iDphYxTDgY DvPKc1tnQG2HcyJJZxERZZLutM2CdeaW2wRy+WrUYwvn37yDKYH5e0icTqgkBbeRyRw/QJ QM6zKRFeUy+XmitNhtrj0dOQVjxU1Ko= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=I2nrBvR1; spf=pass (imf07.hostedemail.com: domain of hare@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=hare@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751610885; a=rsa-sha256; cv=none; b=Ln9JLt3+X8yeZUcIGeujpjqKwGFU4LUsIbKnYmegnLy4BvbGCqKi27Izc5dW49S0Joe+UA EJLTFGVOePlcmx28OxZpq4dnac/EE/RZoaJbQZSyE6Q0HiuP0+55uusWa3xO5AHgUEd4SD zCu2RbKSS6i8IO8EI1y5efy7dntLYLE= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id E5C0446453; Fri, 4 Jul 2025 06:34:43 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B0BDDC4CEEB; Fri, 4 Jul 2025 06:34:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751610883; bh=JUCtBHPtqRuxchB7jhB1Ipp8ubJQVQAdNwDRVfC8Dzs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I2nrBvR1mxSnBvVHJaseh7jUYGt+kQP2+CbNlbOJlfDGa8qDfIkdwIMvpv3zNnj9E nUK4AFXM/lWMlsGFHT2OuU4Pn4h+8GPTxvbDsD0v1bAKHUsCfeBh8i1uNHWYg+2gWz DRpieChZ71Gt0GAtBZ5uBSR/E0Zjgh67B4U3MkzDUSZKd0+1UfHXYtfNCsaEQqUFlm XAvTF5pCvQ+ZsfSSMkqgh22k4oxuBg/xwIMNtqa6qvnr+lxI38hyOR6eXX0Pb5a/mr CS843B/rXZktjI1P+zg++5fESwI6Sgj6sov39sUfPht3gcFN16TuYGGIqes66RWxXq ONSBrS5R5sIdg== From: Hannes Reinecke To: David Hildenbrand Cc: Oscar Salvador , linux-mm@kvack.org, Hannes Reinecke Subject: [PATCH 3/3] drivers/base: move memory_block_add_nid() into the caller Date: Fri, 4 Jul 2025 08:34:04 +0200 Message-ID: <20250704063404.27495-4-hare@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250704063404.27495-1-hare@kernel.org> References: <20250704063404.27495-1-hare@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: ynqhtgiynjeniqqwi15yy7qxd1wd9yr8 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 28F3940007 X-HE-Tag: 1751610884-597038 X-HE-Meta: U2FsdGVkX1+LlALZk8R2Mk4boj73XC59i/5jCSfhvLuZu0Ct6fCSIjdaxV9dWPVX0vEdKK3fNIRRmlwOpKnTa7VJAwHgusx3boppZe4tfy4szL5jjxjA4U1GR8DjtTCX2sINOQPcg0f/lAYv+KhpElN8NDeOtri9p/ohmKIsvynoWmXjizcpJEK/687Axm0mel67CMwQErGwpVDTaNS8lcjvcFGIPHaL/lEh++SqOKmhiwRvl8zHM+ekP+I1enS+Yoxw9T+D9Qmz0MOaY+9fFp+rbr9LKzcH1FKXBIbQjEPsw1PDcfrR+Ccx4LvxfouXEXcvMSW+xWxb0zQmA70lOtJL0MI+EFVu1CMJJxzJbDtng8nXQ1AZZuASZSihEf1HHR2WAGDlOKmwtJ8Kywk1JqsfnsUM/ebTs3/ECXufgH8Cke6t/pHbjvQNEejdwxCSSBQxxLrlPVHHGyoVRaBZz8EazHEgL8JyfhmrMjPvcDSGAFAJ/3pLkA6RlLK6bfNQzk4cA31GB/ANS4oQGCB6hIR8nDM3Qbsg32z02qGkCZ2ek1BZZyXdYlZefgu/w8MoPwETNtourwXkBscTeuxcYmbGU0Ijv1/A5MN6ArweOejAuXLlt/2vuzV4vG5nM90rwcXpDV611V36wt/tq3eXcGbtyfwgyNYYLcz4M/U2d3c7z0mzQeSB/T5q4B4j3YQYLME1AIsxs+1Jb+FPmq02H5cxKZ+s5dFxizkQVa1XQOe5COmXXfI+/asdGKDvxw39JPjjpVD5DxN5rd+5a9Ah/gqxJ2vFIsEQKdi6aFsTC5rHJUc1MWaFQWRKNanc2qfyAd0M8Yx2BcN0qoqpiFZNZCVRVDy0WCJAkl30YCXSK4ceNIquKUgGCc/DRwxGCZllv4qkiteUkGKns8Gmb3gnwHg3CLh5g9MHSnZLtSp2wGHzS8KR2K7Jl8p1ASztVEyqYzD64NxORYtu6cGzl/b ZY/Vtiym SPE8Vq4iok+YnQsrjksGUZKxYCRoyCSlFA4qN5HlwxO3W/3JUzYuad0+//ogt6xrYGZihrjIcN2KKyz/mZuGkRAeOFLLGHOMxlOzWTwIhjK+gJYcUwT45e84wIO23cCIhjeleOC+KXZG3UMT0DpCKb9MQimg/Za6Oeucue6UJQXd/ww3Pyou981p6J9xGExXbl4+3bBNeH38jMWnZ8LGF327lYZT1EhrN5wnIgeCZI+lJkGMOWitDpWHYUKmfOPNcN2hry/Gj4mg/Vjh+B9GYK22x8qNqwYoJtaQz7aZMNZ4t16DRJsimw4T42ptB7cK5nUGeYbkHPHIt0ukDnGnjQlYHNw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Now the node id only needs to be set for early memory, so move memory_block_add_nid() into the caller and rename it into memory_block_add_nid_early(). This allows us to further simplify the code by dropping the 'context' argument to do_register_memory_block_under_node(). Suggested-by: David Hildenbrand Signed-off-by: Hannes Reinecke Acked-by: David Hildenbrand --- drivers/base/memory.c | 36 ++++++++++++++++++------------------ drivers/base/node.c | 10 ++++------ include/linux/memory.h | 3 +-- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/drivers/base/memory.c b/drivers/base/memory.c index 4ce93fb54525..5fb275d7ed7d 100644 --- a/drivers/base/memory.c +++ b/drivers/base/memory.c @@ -782,21 +782,22 @@ static struct zone *early_node_zone_for_memory_block(struct memory_block *mem, #ifdef CONFIG_NUMA /** - * memory_block_add_nid() - Indicate that system RAM falling into this memory - * block device (partially) belongs to the given node. + * memory_block_add_nid_early() - Indicate that early system RAM falling into + * this memory block device (partially) belongs + * to the given node. * @mem: The memory block device. * @nid: The node id. - * @context: The memory initialization context. * - * Indicate that system RAM falling into this memory block (partially) belongs - * to the given node. If the context indicates ("early") that we are adding the - * node during node device subsystem initialization, this will also properly - * set/adjust mem->zone based on the zone ranges of the given node. + * Indicate that early system RAM falling into this memory block (partially) + * belongs to the given node. This will also properly set/adjust mem->zone based + * on the zone ranges of the given node. + * + * Memory hotplug handles this on memory block creation, where we can only have + * a single nid span a memory block. */ -void memory_block_add_nid(struct memory_block *mem, int nid, - enum meminit_context context) +void memory_block_add_nid_early(struct memory_block *mem, int nid) { - if (context == MEMINIT_EARLY && mem->nid != nid) { + if (mem->nid != nid) { /* * For early memory we have to determine the zone when setting * the node id and handle multiple nodes spanning a single @@ -810,15 +811,14 @@ void memory_block_add_nid(struct memory_block *mem, int nid, mem->zone = early_node_zone_for_memory_block(mem, nid); else mem->zone = NULL; + /* + * If this memory block spans multiple nodes, we only indicate + * the last processed node. If we span multiple nodes (not applicable + * to hotplugged memory), zone == NULL will prohibit memory offlining + * and consequently unplug. + */ + mem->nid = nid; } - - /* - * If this memory block spans multiple nodes, we only indicate - * the last processed node. If we span multiple nodes (not applicable - * to hotplugged memory), zone == NULL will prohibit memory offlining - * and consequently unplug. - */ - mem->nid = nid; } #endif diff --git a/drivers/base/node.c b/drivers/base/node.c index c19094481630..8e3225434ae7 100644 --- a/drivers/base/node.c +++ b/drivers/base/node.c @@ -766,13 +766,10 @@ static int __ref get_nid_for_pfn(unsigned long pfn) } static void do_register_memory_block_under_node(int nid, - struct memory_block *mem_blk, - enum meminit_context context) + struct memory_block *mem_blk) { int ret; - memory_block_add_nid(mem_blk, nid, context); - ret = sysfs_create_link_nowarn(&node_devices[nid]->dev.kobj, &mem_blk->dev.kobj, kobject_name(&mem_blk->dev.kobj)); @@ -824,7 +821,8 @@ static int register_mem_block_under_node_early(struct memory_block *mem_blk, if (page_nid != nid) continue; - do_register_memory_block_under_node(nid, mem_blk, MEMINIT_EARLY); + memory_block_add_nid_early(mem_blk, nid); + do_register_memory_block_under_node(nid, mem_blk); return 0; } /* mem section does not span the specified node */ @@ -840,7 +838,7 @@ static int register_mem_block_under_node_hotplug(struct memory_block *mem_blk, { int nid = *(int *)arg; - do_register_memory_block_under_node(nid, mem_blk, MEMINIT_HOTPLUG); + do_register_memory_block_under_node(nid, mem_blk); return 0; } diff --git a/include/linux/memory.h b/include/linux/memory.h index d7c3a4856031..63f076f2d303 100644 --- a/include/linux/memory.h +++ b/include/linux/memory.h @@ -186,8 +186,7 @@ int walk_dynamic_memory_groups(int nid, walk_memory_groups_func_t func, }) #ifdef CONFIG_NUMA -void memory_block_add_nid(struct memory_block *mem, int nid, - enum meminit_context context); +void memory_block_add_nid_early(struct memory_block *mem, int nid); #endif /* CONFIG_NUMA */ int memory_block_advise_max_size(unsigned long size); unsigned long memory_block_advised_max_size(void); -- 2.43.0