David Hildenbrand <david@xxxxxxxxxx> writes: > On 11.10.24 11:48, David Hildenbrand wrote: >> On 11.10.24 10:51, Huang, Ying wrote: >>> David Hildenbrand <david@xxxxxxxxxx> writes: >>> >>>> On 11.10.24 03:27, Huang, Ying wrote: >>>>> 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. >>>> >>>> Probably better to avoid new ones. >>> >>> Sure. Will do that in the future versions. >>> >>>> See also >>>> Documentation/dev-tools/checkpatch.rst >>>> >>>> I assume checkpatch.pl should complain as well? >>> >>> Double checked again. It doesn't complain for that. >> Indeed, it only checks for usage of "weak" for *declarations*. So >> maybe >> it's fine after all and I am misremembering things. So just leave it as >> is for the time being. >> > > For completeness, this is the issue I remembered: > > commit 65d9a9a60fd71be964effb2e94747a6acb6e7015 > Author: Naveen N Rao <naveen@xxxxxxxxxx> > Date: Fri Jul 1 13:04:04 2022 +0530 > > kexec_file: drop weak attribute from functions > As requested > (http://lkml.kernel.org/r/87ee0q7b92.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx), > this series converts weak functions in kexec to use the #ifdef approach. > Quoting the 3e35142ef99fe ("kexec_file: drop weak attribute > from > arch_kexec_apply_relocations[_add]") changelog: > : Since commit d1bcae833b32f1 ("ELF: Don't generate unused > section symbols") > : [1], binutils (v2.36+) started dropping section symbols that it thought > : were unused. This isn't an issue in general, but with kexec_file.c, gcc > : is placing kexec_arch_apply_relocations[_add] into a separate > : .text.unlikely section and the section symbol ".text.unlikely" is being > : dropped. Due to this, recordmcount is unable to find a non-weak symbol in > : .text.unlikely to generate a relocation record against. Good to know this, Thanks! -- Best Regards, Huang, Ying