History

init/modpost: conditionally check section mismatch to __meminit*

This reverts commit eb8f689046b8 ("Use separate sections for __dev/ _cpu/__mem code/data"). Check section mismatch to __meminit* only when CONFIG_MEMORY_HOTPLUG=n. With this change, the linker script and modpost become simpler, and we can get rid of the __ref annotations from the memory hotplug code. [sfr@canb.auug.org.au: remove MEM_KEEP from arch/powerpc/kernel/vmlinux.lds.S] Link: https://lkml.kernel.org/r/20240710093213.2aefb25f@canb.auug.org.au Link: https://lkml.kernel.org/r/20240706160511.2331061-2-masahiroy@kernel.org Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Reviewed-by: Wei Yang <richard.weiyang@gmail.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Masahiro Yamada committed 2 years ago

Commit 73db3ab1 parent 7a7127a4 files · +15 −38Browse files

Showing the changes to scripts (1 of 4 files). Show all

Unified · Split

scripts/mod/modpost.c+4−15
@@ -776,17 +776,14 @@ static void check_section(const char *modname, struct elf_info *elf, · 775 unmodified lines
776776
777777
778778 #define ALL_INIT_DATA_SECTIONS \
779− ".init.setup", ".init.rodata", ".meminit.rodata", \
780− ".init.data", ".meminit.data"
779+ ".init.setup", ".init.rodata", ".init.data"
781780
782781 #define ALL_PCI_INIT_SECTIONS \
783782 ".pci_fixup_early", ".pci_fixup_header", ".pci_fixup_final", \
784783 ".pci_fixup_enable", ".pci_fixup_resume", \
785784 ".pci_fixup_resume_early", ".pci_fixup_suspend"
786785
787−#define ALL_XXXINIT_SECTIONS ".meminit.*"
788−
789−#define ALL_INIT_SECTIONS INIT_SECTIONS, ALL_XXXINIT_SECTIONS
786+#define ALL_INIT_SECTIONS ".init.*"
790787 #define ALL_EXIT_SECTIONS ".exit.*"
791788
792789 #define DATA_SECTIONS ".data", ".data.rel"
@@ -797,9 +794,7 @@ static void check_section(const char *modname, struct elf_info *elf, · 4 unmodified lines
797794 ".fixup", ".entry.text", ".exception.text", \
798795 ".coldtext", ".softirqentry.text"
799796
800−#define INIT_SECTIONS ".init.*"
801−
802−#define ALL_TEXT_SECTIONS ".init.text", ".meminit.text", ".exit.text", \
797+#define ALL_TEXT_SECTIONS ".init.text", ".exit.text", \
803798 TEXT_SECTIONS, OTHER_TEXT_SECTIONS
804799
805800 enum mismatch {
@@ -839,12 +834,6 @@ static const struct sectioncheck sectioncheck[] = { · 33 unmodified lines
839834 .bad_tosec = { ALL_INIT_SECTIONS, ALL_EXIT_SECTIONS, NULL },
840835 .mismatch = TEXTDATA_TO_ANY_INIT_EXIT,
841836 },
842−/* Do not reference init code/data from meminit code/data */
843−{
844− .fromsec = { ALL_XXXINIT_SECTIONS, NULL },
845− .bad_tosec = { INIT_SECTIONS, NULL },
846− .mismatch = XXXINIT_TO_SOME_INIT,
847−},
848837 /* Do not use exit code/data from init code */
849838 {
850839 .fromsec = { ALL_INIT_SECTIONS, NULL },
@@ -859,7 +848,7 @@ static const struct sectioncheck sectioncheck[] = { · 8 unmodified lines
859848 },
860849 {
861850 .fromsec = { ALL_PCI_INIT_SECTIONS, NULL },
862− .bad_tosec = { INIT_SECTIONS, NULL },
851+ .bad_tosec = { ALL_INIT_SECTIONS, NULL },
863852 .mismatch = ANY_INIT_TO_ANY_EXIT,
864853 },
865854 {