During the last months I have spent too many hours trying to figure out the structure of the CPUHOTPLUG code and never came anywhere near a point where I would call myself familiar with the code base. The reson for me looking into the code was to fix a number of section mismatch warnings - which I succeeded doing. But during this process I do not recall I encountered a single real bug. There were sloppy usage of the __cpuinit annotation and stuff like this. And I also realised that __cpuinit was used as replacement for factoring out code only used for CPUHOTPLUG. But again I could not fix this myself. So I have queued up following patch that just drop the section mismatch checks for __cpu* entirely. I noone object I will push it to mainline soon. Sam diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 757294b..007db40 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -738,14 +738,14 @@ static int check_section(const char *modname, const char *sec) #define ALL_INIT_DATA_SECTIONS \ - ".init.data$", ".devinit.data$", ".cpuinit.data$", ".meminit.data$" + ".init.data$", ".devinit.data$", ".meminit.data$" #define ALL_EXIT_DATA_SECTIONS \ - ".exit.data$", ".devexit.data$", ".cpuexit.data$", ".memexit.data$" + ".exit.data$", ".devexit.data$", ".memexit.data$" #define ALL_INIT_TEXT_SECTIONS \ - ".init.text$", ".devinit.text$", ".cpuinit.text$", ".meminit.text$" + ".init.text$", ".devinit.text$", ".meminit.text$" #define ALL_EXIT_TEXT_SECTIONS \ - ".exit.text$", ".devexit.text$", ".cpuexit.text$", ".memexit.text$" + ".exit.text$", ".devexit.text$", ".memexit.text$" #define ALL_INIT_SECTIONS ALL_INIT_DATA_SECTIONS, ALL_INIT_TEXT_SECTIONS #define ALL_EXIT_SECTIONS ALL_EXIT_DATA_SECTIONS, ALL_EXIT_TEXT_SECTIONS @@ -755,12 +755,10 @@ static int check_section(const char *modname, const char *sec) #define INIT_SECTIONS ".init.data$", ".init.text$" #define DEV_INIT_SECTIONS ".devinit.data$", ".devinit.text$" -#define CPU_INIT_SECTIONS ".cpuinit.data$", ".cpuinit.text$" #define MEM_INIT_SECTIONS ".meminit.data$", ".meminit.text$" #define EXIT_SECTIONS ".exit.data$", ".exit.text$" #define DEV_EXIT_SECTIONS ".devexit.data$", ".devexit.text$" -#define CPU_EXIT_SECTIONS ".cpuexit.data$", ".cpuexit.text$" #define MEM_EXIT_SECTIONS ".memexit.data$", ".memexit.text$" /* init data sections */ @@ -847,15 +845,15 @@ const struct sectioncheck sectioncheck[] = { .tosec = { ALL_EXIT_SECTIONS, NULL }, .mismatch = DATA_TO_EXIT, }, -/* Do not reference init code/data from devinit/cpuinit/meminit code/data */ +/* Do not reference init code/data from devinit/meminit code/data */ { - .fromsec = { DEV_INIT_SECTIONS, CPU_INIT_SECTIONS, MEM_INIT_SECTIONS, NULL }, + .fromsec = { DEV_INIT_SECTIONS, MEM_INIT_SECTIONS, NULL }, .tosec = { INIT_SECTIONS, NULL }, .mismatch = XXXINIT_TO_INIT, }, -/* Do not reference exit code/data from devexit/cpuexit/memexit code/data */ +/* Do not reference exit code/data from devexit/memexit code/data */ { - .fromsec = { DEV_EXIT_SECTIONS, CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS, NULL }, + .fromsec = { DEV_EXIT_SECTIONS, MEM_EXIT_SECTIONS, NULL }, .tosec = { EXIT_SECTIONS, NULL }, .mismatch = XXXEXIT_TO_EXIT, }, @@ -1070,7 +1068,6 @@ static Elf_Sym *find_elf_symbol2(struct elf_info *elf, Elf_Addr addr, /* * Convert a section name to the function/data attribute * .init.text => __init - * .cpuinit.data => __cpudata * .memexitconst => __memconst * etc. */ -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html