• Sam Ravnborg's avatar
    [PATCH] cpufreq: fix section mismatch warnings · bb1a813d
    Sam Ravnborg authored
    cpufreq are the only remaining bit to be solved for me to have a modpost
    clean build for sparc64 - so I took one more look at it.
    changelog entry:
    
    Fix section mismatch warnings in cpufreq:
    WARNING: drivers/cpufreq/cpufreq_stats.o - Section mismatch: reference to .init.text: from .data between 'cpufreq_stat_cpu_notifier' (at offset 0xa8) and 'notifier_policy_block'
    WARNING: drivers/cpufreq/cpufreq_stats.o - Section mismatch: reference to .init.text: from .exit.text after 'cleanup_module' (at offset 0x30)
    
    The culprint is the function: cpufreq_stat_cpu_callback
    It is marked __cpuinit which get's redefined to __init in case
    HOTPLUG_CPU is not enabled as per. init.h:
    
    #ifdef CONFIG_HOTPLUG_CPU
    #define __cpuinit
    #else
    #define __cpuinit       __init
    #endif
    
    $> grep HOTPLUG .config
    CONFIG_HOTPLUG=y
    
    But cpufreq_stat_cpu_callback() is used in:
    __exit cpufreq_stats_exit()
    static struct notifier_block cpufreq_stat_cpu_notifier
    
    cpufreq_stat_cpu_notifier is again used in:
    __init cpufreq_stats_init()
    __exit cpufreq_stats_exit()
    
    So in both cases used from both __init and __exit context.
    Only solution seems to drop __cpuinit tag.
    Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Signed-off-by: default avatarDave Jones <davej@redhat.com>
    bb1a813d
cpufreq_stats.c 9.41 KB