Re: section mismatch in intel_idle

From: Shaohua Li
Date: Thu Jan 20 2011 - 00:09:55 EST


On Thu, 2011-01-20 at 07:53 +0800, Stefan Richter wrote:
> Hi,
>
> this just showed up in 2.6.38-rc1:
>
> WARNING: drivers/idle/built-in.o(.text+0x112): Section mismatch in reference from the function intel_idle_probe() to the variable .cpuinit.data:setup_broadcast_notifier
> The function intel_idle_probe() references
> the variable __cpuinitdata setup_broadcast_notifier.
> This is often because intel_idle_probe lacks a __cpuinitdata
> annotation or the annotation of setup_broadcast_notifier is wrong.
>
> WARNING: drivers/idle/built-in.o(.exit.text+0x2d): Section mismatch in reference from the function intel_idle_exit() to the variable .cpuinit.data:setup_broadcast_notifier
> The function __exit intel_idle_exit() references
> a variable __cpuinitdata setup_broadcast_notifier.
> This is often seen when error handling in the exit function
> uses functionality in the init path.
> The fix is often to remove the __cpuinitdata annotation of
> setup_broadcast_notifier so it may be used outside an init section.
Len, please add this to your tree.

Fix annotation warning.

Reported-by: Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx>
Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx>

diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index 7acb32e..6a0ff5d 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -263,7 +263,7 @@ static void __setup_broadcast_timer(void *arg)
clockevents_notify(reason, &cpu);
}

-static int __cpuinit setup_broadcast_cpuhp_notify(struct notifier_block *n,
+static int setup_broadcast_cpuhp_notify(struct notifier_block *n,
unsigned long action, void *hcpu)
{
int hotcpu = (unsigned long)hcpu;
@@ -281,7 +281,7 @@ static int __cpuinit setup_broadcast_cpuhp_notify(struct notifier_block *n,
return NOTIFY_OK;
}

-static struct notifier_block __cpuinitdata setup_broadcast_notifier = {
+static struct notifier_block setup_broadcast_notifier = {
.notifier_call = setup_broadcast_cpuhp_notify,
};



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/