David Hildenbrand <david@xxxxxxxxxx> writes: >> extern u64 max_mem_size; >> extern int mhp_online_type_from_str(const char *str); >> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c >> index 621ae1015106..c4769f24b1e2 100644 >> --- a/mm/memory_hotplug.c >> +++ b/mm/memory_hotplug.c >> @@ -1305,6 +1305,11 @@ int try_online_node(int nid) >> return ret; >> } >> +int __weak arch_check_hotplug_memory_range(u64 start, u64 size) >> +{ >> + return 0; >> +} > > BTW, I remember that "__weak" doesn't always behave the way it would > seem, which is the reason we're usually using > > #define arch_check_hotplug_memory_range arch_check_hotplug_memory_range > > #ifndef arch_check_hotplug_memory_range > ... > #endif > > > Not that I remember the details, just that it can result in rather > surprising outcomes (e.g., the wrong function getting called). I can replace __weak with #define/#ifndef. However, it appears that "__weak" is still widely used now. $ grep __weak -r mm kernel init | wc -l 231 -- Best Regards, Huang, Ying