mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-18 03:23:53 -04:00
mm,memory_hotplug: implement numa node notifier
There are at least six consumers of hotplug_memory_notifier that what they really are interested in is whether any numa node changed its state, e.g: going from having memory to not having memory and vice versa. Implement a specific notifier for numa nodes when their state gets changed, which will later be used by those consumers that are only interested in numa node state changes. Add documentation as well. [dan.carpenter@linaro.org: set failure reason in offline_pages()] Link: https://lkml.kernel.org/r/be4fd31b-7d09-46b0-8329-6d0464ffa7a5@sabinyo.mountain Link: https://lkml.kernel.org/r/20250616135158.450136-4-osalvador@suse.de Signed-off-by: Oscar Salvador <osalvador@suse.de> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Harry Yoo <harry.yoo@oracle.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Acked-by: David Hildenbrand <david@redhat.com> Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: Rakie Kim <rakie.kim@sk.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
8d2882a8ed
commit
67929de108
@@ -112,6 +112,27 @@ static const struct attribute_group *node_access_node_groups[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
static BLOCKING_NOTIFIER_HEAD(node_chain);
|
||||
|
||||
int register_node_notifier(struct notifier_block *nb)
|
||||
{
|
||||
return blocking_notifier_chain_register(&node_chain, nb);
|
||||
}
|
||||
EXPORT_SYMBOL(register_node_notifier);
|
||||
|
||||
void unregister_node_notifier(struct notifier_block *nb)
|
||||
{
|
||||
blocking_notifier_chain_unregister(&node_chain, nb);
|
||||
}
|
||||
EXPORT_SYMBOL(unregister_node_notifier);
|
||||
|
||||
int node_notify(unsigned long val, void *v)
|
||||
{
|
||||
return blocking_notifier_call_chain(&node_chain, val, v);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void node_remove_accesses(struct node *node)
|
||||
{
|
||||
struct node_access_nodes *c, *cnext;
|
||||
|
||||
Reference in New Issue
Block a user