From: Oscar Salvador <osalvador@suse.de>
To: David Hildenbrand <david@redhat.com>
Cc: Donet Tom <donettom@linux.ibm.com>,
Mike Rapoport <rppt@kernel.org>, Zi Yan <ziy@nvidia.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Andrew Morton <akpm@linux-foundation.org>,
rafael@kernel.org, Danilo Krummrich <dakr@kernel.org>,
Ritesh Harjani <ritesh.list@gmail.com>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
Alison Schofield <alison.schofield@intel.com>,
Yury Norov <yury.norov@gmail.com>,
Dave Jiang <dave.jiang@intel.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/3] driver/base: Optimize memory block registration to reduce boot time
Date: Mon, 5 May 2025 09:57:31 +0200 [thread overview]
Message-ID: <aBhva9D6H5BtkSID@localhost.localdomain> (raw)
In-Reply-To: <74c500dd-8d1c-4177-96c7-ddd51ca77306@redhat.com>
On Mon, May 05, 2025 at 09:38:43AM +0200, David Hildenbrand wrote:
> On 05.05.25 09:28, Oscar Salvador wrote:
> > On Mon, May 05, 2025 at 09:16:48AM +0200, David Hildenbrand wrote:
> > > memory hotplug code never calls register_one_node(), unless I am missing
> > > something.
> > >
> > > During add_memory_resource(), we call __try_online_node(nid, false), meaning
> > > we skip register_one_node().
> > >
> > > The only caller of __try_online_node(nid, true) is try_online_node(), called
> > > from CPU hotplug code, and I *guess* that is not required.
> >
> > Well, I guess this is because we need to link the cpus to the node.
> > register_one_node() has two jobs: 1) register cpus belonging to the node
> > and 2) register memory-blocks belonging to the node (if any).
>
> Ah, via __register_one_node() ...
>
> I would assume that an offline node
>
> (1) has no memory
> (2) has no CPUs
That is right.
> When we *hotplug* either memory or CPUs, and we first online the node, there
> is nothing to register. Because if there would be something, the node would
> already be online.
I think I do not understand this, but let us imagine the following
scenario:
- You craft a VM with qemu that has a numa node which is memoryless and cpuless.
This node will be allocated in free_area_init()->alloc_offline_node_data() but
it will not be marked online because it does not have any resources.
Then if you create a cpu device and hotplug in there, this will
trigger try_online_node() from the cpu callback and go all the way to
__register_one_node() to link the hotplugged cpu to the corresponding node.
Now, I do not see an issue with that.
The only think that makes me go "meh", is that register_one_node()
calls register_memory_blocks_under_node() blindly when there might not
be any memory block to register (I am sure we bail out if we see that
somewhere, but still feels kinda of "wrong"?
--
Oscar Salvador
SUSE Labs
next prev parent reply other threads:[~2025-05-05 7:57 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-03 5:40 Donet Tom
2025-05-03 5:40 ` [PATCH v3 2/3] driver/base: remove register_mem_block_under_node_early() Donet Tom
2025-05-03 13:10 ` Zi Yan
2025-05-03 5:40 ` [PATCH v3 3/3] drivers/base : Rename register_memory_blocks_under_node() and remove context argument Donet Tom
2025-05-03 13:10 ` Zi Yan
2025-05-03 13:10 ` [PATCH v3 1/3] driver/base: Optimize memory block registration to reduce boot time Zi Yan
2025-05-04 11:09 ` Mike Rapoport
2025-05-04 16:34 ` Donet Tom
2025-05-04 20:03 ` Andrew Morton
2025-05-05 14:05 ` Mike Rapoport
2025-05-05 7:16 ` David Hildenbrand
2025-05-05 7:28 ` Oscar Salvador
2025-05-05 7:38 ` David Hildenbrand
2025-05-05 7:53 ` Mike Rapoport
2025-05-05 8:18 ` David Hildenbrand
2025-05-05 13:24 ` Mike Rapoport
2025-05-08 9:18 ` David Hildenbrand
2025-05-09 15:40 ` Donet Tom
2025-05-09 21:10 ` Andrew Morton
2025-05-11 6:40 ` Donet Tom
2025-05-11 5:39 ` Mike Rapoport
2025-05-11 12:33 ` Donet Tom
2025-05-05 7:57 ` Oscar Salvador [this message]
2025-05-05 8:12 ` David Hildenbrand
2025-05-05 9:36 ` Oscar Salvador
2025-05-05 10:36 ` David Hildenbrand
2025-05-05 12:51 ` Donet Tom
2025-05-05 13:02 ` David Hildenbrand
2025-05-05 16:40 ` Donet Tom
2025-05-05 13:07 ` Oscar Salvador
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aBhva9D6H5BtkSID@localhost.localdomain \
--to=osalvador@suse.de \
--cc=Jonathan.Cameron@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=alison.schofield@intel.com \
--cc=dakr@kernel.org \
--cc=dave.jiang@intel.com \
--cc=david@redhat.com \
--cc=donettom@linux.ibm.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rafael@kernel.org \
--cc=ritesh.list@gmail.com \
--cc=rppt@kernel.org \
--cc=yury.norov@gmail.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox