Documentation/core-api/memory-hotplug.rst | 78 ++++++-- .../zh_CN/core-api/memory-hotplug.rst | 3 - drivers/acpi/numa/hmat.c | 8 +- drivers/base/node.c | 21 +++ drivers/cxl/core/region.c | 16 +- drivers/cxl/cxl.h | 4 +- include/linux/memory.h | 3 +- include/linux/node.h | 42 +++++ kernel/cgroup/cpuset.c | 2 +- mm/memory-tiers.c | 14 +- mm/memory_hotplug.c | 167 ++++++++---------- mm/mempolicy.c | 10 +- mm/page_ext.c | 12 +- mm/slub.c | 45 +---- 14 files changed, 240 insertions(+), 185 deletions(-)
v4 -> v5:
- Split out conversion for different consumers (per David)
- Renamed node-notifier actions (per David)
- Added new Documentation for new node-notifier and updated
the memory-notifier one to reflect the changes
- Make sure we do not trigger anything when !CONFIG_NUMA (per David)
v3 -> v4:
- Fix typos pointed out by Alok Tiwari
- Further cleanups suggested by Vlastimil
- Add RBs-by from Vlastimil
v2 -> v3:
- Add Suggested-by (David)
- Replace last N_NORMAL_MEMORY mention in slub (David)
- Replace the notifier for autoweitght-mempolicy
- Fix build on !CONFIG_MEMORY_HOTPLUG
v1 -> v2:
- Remove status_change_nid_normal and the code that
deals with it (David & Vlastimil)
- Remove slab_mem_offline_callback (David & Vlastimil)
- Change the order of canceling the notifiers
in {online,offline}_pages (Vlastimil)
- Fix up a couple of whitespaces (Jonathan Cameron)
- Add RBs-by
Memory notifier is a tool that allow consumers to get notified whenever
memory gets onlined or offlined in the system.
Currently, there are 10 consumers of that, but 5 out of those 10 consumers
are only interested in getting notifications when a numa node changes its
memory state.
That means going from memoryless to memory-aware of vice versa.
Which means that for every {online,offline}_pages operation they get
notified even though the numa node might not have changed its state.
This is suboptimal, and we want to decouple numa node state changes from
memory state changes.
While we are doing this, remove status_change_nid_normal, as the only
current user (slub) does not really need it.
This allows us to further simplify and clean up the code.
The first patch gets rid of status_change_nid_normal in slub.
The second patch implements a numa node notifier that does just that, and have
those consumers register in there, so they get notified only when they are
interested.
The third patch replaces 'status_change_nid{_normal}' fields within
memory_notify with a 'nid', as that is only what we need for memory
notifer and update the only user of it (page_ext).
Consumers that are only interested in numa node states change are:
- memory-tier
- slub
- cpuset
- hmat
- cxl
- autoweight-mempolicy
Oscar Salvador (10):
mm,slub: Do not special case N_NORMAL nodes for slab_nodes
mm,memory_hotplug: Remove status_change_nid_normal and update
documentation
mm,memory_hotplug: Implement numa node notifier
mm,slub: Use node-notifier instead of memory-notifier
mm,memory-tiers: Use node-notifier instead of memory-notifier
drivers,cxl: Use node-notifier instead of memory-notifier
drivers,hmat: Use node-notifier instead of memory-notifier
kernel,cpuset: Use node-notifier instead of memory-notifier
mm,mempolicy: Use node-notifier instead of memory-notifier
mm,memory_hotplug: Rename status_change_nid parameter in memory_notify
Documentation/core-api/memory-hotplug.rst | 78 ++++++--
.../zh_CN/core-api/memory-hotplug.rst | 3 -
drivers/acpi/numa/hmat.c | 8 +-
drivers/base/node.c | 21 +++
drivers/cxl/core/region.c | 16 +-
drivers/cxl/cxl.h | 4 +-
include/linux/memory.h | 3 +-
include/linux/node.h | 42 +++++
kernel/cgroup/cpuset.c | 2 +-
mm/memory-tiers.c | 14 +-
mm/memory_hotplug.c | 167 ++++++++----------
mm/mempolicy.c | 10 +-
mm/page_ext.c | 12 +-
mm/slub.c | 45 +----
14 files changed, 240 insertions(+), 185 deletions(-)
--
2.49.0
Hi Oscar,
I don't have time to dig into what's broken here, but this series is breaking
the mm-new build.
NODE_REMOVED_LAST_MEMORY for instance doesn't seem to be defined, but there's a
bunch more errors.
Are you expecting stuff to land from other trees that isn't merged in Andrew's
tree yet? Maybe from slab tree?
We probably need to be careful with series that have dependencies like that
during the merge window, maybe RFC or wait until after merge window in that
case, or maybe add a note saying 'please don't merge to mm-new until after the
merge window' or something.
Thanks, Lorenzo
mm/slub.c: In function ‘slab_mem_going_online_callback’:
mm/slub.c:6168:23: error: invalid use of undefined type ‘struct node_notify’
6168 | int nid = narg->nid;
| ^~
mm/mempolicy.c: In function ‘wi_node_notifier’:
mm/mempolicy.c:3792:22: error: invalid use of undefined type ‘struct node_notify’
3792 | int nid = arg->nid;
| ^~
mm/slub.c: In function ‘slab_memory_callback’:
mm/slub.c:6220:14: error: ‘NODE_ADDING_FIRST_MEMORY’ undeclared (first use in this function)
6220 | case NODE_ADDING_FIRST_MEMORY:
| ^~~~~~~~~~~~~~~~~~~~~~~~
mm/slub.c:6220:14: note: each undeclared identifier is reported only once for each function it appears in
kernel/cgroup/cpuset.c: In function ‘cpuset_init_smp’:
kernel/cgroup/cpuset.c:4054:9: error: implicit declaration of function ‘hotplug_node_notifier’; did you mean ‘hotplug_memory_notifier’? [-Wimplicit-function-declaration]
4054 | hotplug_node_notifier(cpuset_track_online_nodes, CPUSET_CALLBACK_PRI);
| ^~~~~~~~~~~~~~~~~~~~~
| hotplug_memory_notifier
mm/mempolicy.c:3798:14: error: ‘NODE_ADDED_FIRST_MEMORY’ undeclared (first use in this function)
3798 | case NODE_ADDED_FIRST_MEMORY:
| ^~~~~~~~~~~~~~~~~~~~~~~
mm/mempolicy.c:3798:14: note: each undeclared identifier is reported only once for each function it appears in
mm/slub.c:6223:14: error: ‘NODE_REMOVING_LAST_MEMORY’ undeclared (first use in this function)
6223 | case NODE_REMOVING_LAST_MEMORY:
| ^~~~~~~~~~~~~~~~~~~~~~~~~
mm/slub.c: In function ‘kmem_cache_init’:
mm/slub.c:6300:9: error: implicit declaration of function ‘hotplug_node_notifier’; did you mean ‘hotplug_memory_notifier’? [-Wimplicit-function-declaration]
6300 | hotplug_node_notifier(slab_memory_callback, SLAB_CALLBACK_PRI);
| ^~~~~~~~~~~~~~~~~~~~~
| hotplug_memory_notifier
make[4]: *** [scripts/Makefile.build:203: kernel/cgroup/cpuset.o] Error 1
make[3]: *** [scripts/Makefile.build:461: kernel/cgroup] Error 2
make[2]: *** [scripts/Makefile.build:461: kernel] Error 2
make[2]: *** Waiting for unfinished jobs....
mm/mempolicy.c:3804:14: error: ‘NODE_REMOVED_LAST_MEMORY’ undeclared (first use in this function)
3804 | case NODE_REMOVED_LAST_MEMORY:
| ^~~~~~~~~~~~~~~~~~~~~~~~
mm/mempolicy.c: In function ‘add_weighted_interleave_group’:
mm/mempolicy.c:3843:9: error: implicit declaration of function ‘hotplug_node_notifier’; did you mean ‘hotplug_memory_notifier’? [-Wimplicit-function-declaration]
3843 | hotplug_node_notifier(wi_node_notifier, DEFAULT_CALLBACK_PRI);
| ^~~~~~~~~~~~~~~~~~~~~
| hotplug_memory_notifier
On Thu, Jun 05, 2025 at 04:22:51PM +0200, Oscar Salvador wrote:
> v4 -> v5:
> - Split out conversion for different consumers (per David)
> - Renamed node-notifier actions (per David)
> - Added new Documentation for new node-notifier and updated
> the memory-notifier one to reflect the changes
> - Make sure we do not trigger anything when !CONFIG_NUMA (per David)
>
> v3 -> v4:
> - Fix typos pointed out by Alok Tiwari
> - Further cleanups suggested by Vlastimil
> - Add RBs-by from Vlastimil
>
> v2 -> v3:
> - Add Suggested-by (David)
> - Replace last N_NORMAL_MEMORY mention in slub (David)
> - Replace the notifier for autoweitght-mempolicy
> - Fix build on !CONFIG_MEMORY_HOTPLUG
>
> v1 -> v2:
> - Remove status_change_nid_normal and the code that
> deals with it (David & Vlastimil)
> - Remove slab_mem_offline_callback (David & Vlastimil)
> - Change the order of canceling the notifiers
> in {online,offline}_pages (Vlastimil)
> - Fix up a couple of whitespaces (Jonathan Cameron)
> - Add RBs-by
>
> Memory notifier is a tool that allow consumers to get notified whenever
> memory gets onlined or offlined in the system.
> Currently, there are 10 consumers of that, but 5 out of those 10 consumers
> are only interested in getting notifications when a numa node changes its
> memory state.
> That means going from memoryless to memory-aware of vice versa.
>
> Which means that for every {online,offline}_pages operation they get
> notified even though the numa node might not have changed its state.
> This is suboptimal, and we want to decouple numa node state changes from
> memory state changes.
>
> While we are doing this, remove status_change_nid_normal, as the only
> current user (slub) does not really need it.
> This allows us to further simplify and clean up the code.
>
> The first patch gets rid of status_change_nid_normal in slub.
> The second patch implements a numa node notifier that does just that, and have
> those consumers register in there, so they get notified only when they are
> interested.
>
> The third patch replaces 'status_change_nid{_normal}' fields within
> memory_notify with a 'nid', as that is only what we need for memory
> notifer and update the only user of it (page_ext).
>
> Consumers that are only interested in numa node states change are:
>
> - memory-tier
> - slub
> - cpuset
> - hmat
> - cxl
> - autoweight-mempolicy
>
> Oscar Salvador (10):
> mm,slub: Do not special case N_NORMAL nodes for slab_nodes
> mm,memory_hotplug: Remove status_change_nid_normal and update
> documentation
> mm,memory_hotplug: Implement numa node notifier
> mm,slub: Use node-notifier instead of memory-notifier
> mm,memory-tiers: Use node-notifier instead of memory-notifier
> drivers,cxl: Use node-notifier instead of memory-notifier
> drivers,hmat: Use node-notifier instead of memory-notifier
> kernel,cpuset: Use node-notifier instead of memory-notifier
> mm,mempolicy: Use node-notifier instead of memory-notifier
> mm,memory_hotplug: Rename status_change_nid parameter in memory_notify
>
> Documentation/core-api/memory-hotplug.rst | 78 ++++++--
> .../zh_CN/core-api/memory-hotplug.rst | 3 -
> drivers/acpi/numa/hmat.c | 8 +-
> drivers/base/node.c | 21 +++
> drivers/cxl/core/region.c | 16 +-
> drivers/cxl/cxl.h | 4 +-
> include/linux/memory.h | 3 +-
> include/linux/node.h | 42 +++++
> kernel/cgroup/cpuset.c | 2 +-
> mm/memory-tiers.c | 14 +-
> mm/memory_hotplug.c | 167 ++++++++----------
> mm/mempolicy.c | 10 +-
> mm/page_ext.c | 12 +-
> mm/slub.c | 45 +----
> 14 files changed, 240 insertions(+), 185 deletions(-)
>
> --
> 2.49.0
>
>
>
On Fri, Jun 06, 2025 at 12:30:42PM +0100, Lorenzo Stoakes wrote: > Hi Oscar, > > I don't have time to dig into what's broken here, but this series is breaking > the mm-new build. > > NODE_REMOVED_LAST_MEMORY for instance doesn't seem to be defined, but there's a > bunch more errors. Heh, I apologye, I assumed every config has MEMORY_HOTPLUG enabled. (I'll walk on my knees all day long to make up for that!) Fixup was posted this morning in https://lore.kernel.org/linux-mm/aEKdvc8IWgSXSF8Q@localhost.localdomain/T/#u But we can drop the patchset for now as I'll have to respin a new version including David's feedback. -- Oscar Salvador SUSE Labs
Andrew - as per below could you drop this for now to fix the build? On Fri, Jun 06, 2025 at 02:31:36PM +0200, Oscar Salvador wrote: > On Fri, Jun 06, 2025 at 12:30:42PM +0100, Lorenzo Stoakes wrote: > > Hi Oscar, > > > > I don't have time to dig into what's broken here, but this series is breaking > > the mm-new build. > > > > NODE_REMOVED_LAST_MEMORY for instance doesn't seem to be defined, but there's a > > bunch more errors. > > Heh, I apologye, I assumed every config has MEMORY_HOTPLUG enabled. > (I'll walk on my knees all day long to make up for that!) > > Fixup was posted this morning in > > https://lore.kernel.org/linux-mm/aEKdvc8IWgSXSF8Q@localhost.localdomain/T/#u > > But we can drop the patchset for now as I'll have to respin a new > version including David's feedback. Thanks! Yeah sorry, I tried grepping for a define and it wasn't there, but I guess I wasn't grepping at mm-new (I rushed it, was in the middle of looking at a syzbot report :P). Also a small bugbear, there's no subject in the cover letter :P I mean I appreciate the beauty of silence as much as the next fellow but the cover letter subject line is probably not the best place for it ;) I speak as somebody who's made literally every possible post-send-to-list error known to humanity, of course :>) > > > -- > Oscar Salvador > SUSE Labs
On 06.06.25 13:30, Lorenzo Stoakes wrote: > Hi Oscar, > > I don't have time to dig into what's broken here, but this series is breaking > the mm-new build. > > NODE_REMOVED_LAST_MEMORY for instance doesn't seem to be defined, but there's a > bunch more errors. > > Are you expecting stuff to land from other trees that isn't merged in Andrew's > tree yet? Maybe from slab tree? (David replying) no, this is standalone, and probably just an error in the patches. IIUC, the build bots reported this this night as reply to patch #4. -- Cheers, David / dhildenb
© 2016 - 2025 Red Hat, Inc.