lkml.org 
[lkml]   [2009]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] x86, mce: fix __init annotations
    Hidetoshi Seto wrote:
    > Yong Wang wrote:
    >> @@ -268,7 +268,7 @@ void mcheck_intel_therm_init(void)
    >> lvtthmr_init = apic_read(APIC_LVTTHMR);
    >> }
    >>
    >> -void intel_init_thermal(struct cpuinfo_x86 *c)
    >> +void __init intel_init_thermal(struct cpuinfo_x86 *c)
    >> {
    >> unsigned int cpu = smp_processor_id();
    >> int tm2 = 0;
    >
    > But I think this could be called on hot-plugged AP.
    > Should be __cpuinit ?
    >
    > void __cpuinit mcheck_cpu_init(struct cpuinfo_x86 *c)
    > -> static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c)
    > -> void mce_intel_feature_init(struct cpuinfo_x86 *c)
    > -> void intel_init_thermal(struct cpuinfo_x86 *c)

    I found it is called from resume path, so neither __init nor __cpuinit
    will be applicable...

    static int mce_resume(struct sys_device *dev)
    -> static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c)
    -> void mce_intel_feature_init(struct cpuinfo_x86 *c)
    -> void intel_init_thermal(struct cpuinfo_x86 *c)

    Following patch is based on tip:perf/mce.


    Thanks,
    H.Seto

    ===

    Subject: [PATCH] x86, mce: fix __init annotations

    The intel_init_thermal() is called from resume path, so it cannot be
    marked as __init.

    OTOH mce_banks_init() is only called from __mcheck_cpu_cap_init()
    which is marked as __cpuinit, so it can be also marked as __cpuinit.

    Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
    ---
    arch/x86/kernel/cpu/mcheck/mce.c | 4 ++--
    arch/x86/kernel/cpu/mcheck/therm_throt.c | 2 +-
    2 files changed, 3 insertions(+), 3 deletions(-)

    diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
    index 0d41020..5f277ca 100644
    --- a/arch/x86/kernel/cpu/mcheck/mce.c
    +++ b/arch/x86/kernel/cpu/mcheck/mce.c
    @@ -1201,7 +1201,7 @@ int mce_notify_irq(void)
    }
    EXPORT_SYMBOL_GPL(mce_notify_irq);

    -static int mce_banks_init(void)
    +static int __cpuinit __mcheck_cpu_mce_banks_init(void)
    {
    int i;

    @@ -1242,7 +1242,7 @@ static int __cpuinit __mcheck_cpu_cap_init(void)
    WARN_ON(banks != 0 && b != banks);
    banks = b;
    if (!mce_banks) {
    - int err = mce_banks_init();
    + int err = __mcheck_cpu_mce_banks_init();

    if (err)
    return err;
    diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
    index 8a73d5c..4fef985 100644
    --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
    +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
    @@ -268,7 +268,7 @@ void __init mcheck_intel_therm_init(void)
    lvtthmr_init = apic_read(APIC_LVTTHMR);
    }

    -void __init intel_init_thermal(struct cpuinfo_x86 *c)
    +void intel_init_thermal(struct cpuinfo_x86 *c)
    {
    unsigned int cpu = smp_processor_id();
    int tm2 = 0;
    --
    1.6.5.2



    \
     
     \ /
      Last update: 2009-11-12 07:55    [W:0.026 / U:30.288 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site