lkml.org 
[lkml]   [2009]   [Nov]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] x86, mce: fix __init annotations
    On Thu, Nov 12, 2009 at 03:52:40PM +0900, Hidetoshi Seto wrote:
    > 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;
    >

    Oh, yeah. We should only mark mcheck_intel_therm_init as __init for the
    thermal part. Thanks for spotting.



    \
     
     \ /
      Last update: 2009-11-12 09:15    [W:0.027 / U:0.736 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site