[lkml]   [2007]   [Jun]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] x86: fix improper .init-type section references
    On Tue, Jun 12, 2007 at 02:43:55PM +0200, Jan Beulich wrote:
    > >> The cacheinfo_cpu_notifier itself is called out from _cpu_down() which
    > >> is ... yep, *not* __cpuinit (and obviously *cannot* be so). _cpu_down()
    > >> is called from cpu_down() which is (thankfully!) protected inside
    > >> #ifdef CONFIG_HOTPLUG_CPU, so we've /just about/ escaped trouble
    > >> so far, but another of it's callers is disable_nonboot_cpus() which does
    > >> *not* depend on HOTPLUG_CPU, but is #ifdef'ed inside SUSPEND_SMP
    > >> (gargh!) instead, and ... is _not_ __cpuinit either (obviously, again).
    > >
    > >Wait, SUSPEND_SMP again depends on HOTPLUG_CPU, so there
    > >are no issues here in marking cache_remove_dev() __cpuexit
    > >(which effectively simply becomes #ifdef HOTPLUG_CPU) as all
    > >callsites that call out the notifier with CPU_DEAD/FROZEN are also
    > >going to be disabled. [ Ok, looks like using __cpuexit as this kind of
    > >pseudo-#ifdef HOTPLUG_CPU is a standard practice? ]
    > >
    > >But modpost will still complain (bogus warning) about calling __exit
    > >from __init (when HOTPLUG_CPU=n) for cacheinfo_cpu_callback()
    > >calling cache_remove_dev(), no?
    > No, it doesn't, at least not for me. And from a purely theoretical
    > perspective I don't think such references should be considered bad -
    > .exit.* should be discarded together with .init.* if unloading is
    > impossible (built-in or configured off), not before module/kernel
    > initialization. This is specifically because init code may want to utilize
    > exit code in case of initialization failure.

    For the builtin case some arch's drop exit code during link time
    so using function marked __exit from __init will cause a
    linker bug. For i386 __exit is discarded at runtime - but dunno when in the
    init sequence.

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-06-12 19:57    [W:0.021 / U:4.196 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site