Re: [PATCH -V2] tdx, memory hotplug: Check whole hot-adding memory range for TDX

From: David Hildenbrand
Date: Fri Oct 11 2024 - 05:55:38 EST


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.



--
Cheers,

David / dhildenb