The following errors during compilation is corrected by the following
patch (against the latest linus tree):
WARNING: arch/x86/kernel/microcode.o(.exit.text+0x6): Section mismatch
in reference from the function cleanup_module() to the variable
.cpuinit.data:mc_cpu_notifier
Please comment. Thanks.
diff -Nurp /tmp/microcode.c arch/x86/kernel/microcode.c
--- /tmp/microcode.c 2008-02-02 16:46:43.000000000 +0800
+++ arch/x86/kernel/microcode.c 2008-02-02 16:41:58.000000000 +0800
@@ -797,7 +797,7 @@ mc_cpu_callback(struct notifier_block *n
return NOTIFY_OK;
}
-static struct notifier_block __refdata mc_cpu_notifier = {
+static struct notifier_block mc_cpu_notifier __initdata = {
.notifier_call = mc_cpu_callback,
};
@@ -831,7 +831,7 @@ static int __init microcode_init (void)
return 0;
}
-static void __exit microcode_exit (void)
+static void __init microcode_exit (void)
{
microcode_dev_exit();
On Sat, Feb 02, 2008 at 04:39:02PM +0800, Peter Teoh wrote:
> The following errors during compilation is corrected by the following
> patch (against the latest linus tree):
>
> WARNING: arch/x86/kernel/microcode.o(.exit.text+0x6): Section mismatch
> in reference from the function cleanup_module() to the variable
> .cpuinit.data:mc_cpu_notifier
I have missed this one when I did my last fix to that file.
But your patch is not good.
Annotating the microcode_exit() function with __init will
cause the kernel to drop the code long before we need it.
I will look into this later and post a fix for the warning.
Sam
> @@ -831,7 +831,7 @@ static int __init microcode_init (void)
> return 0;
> }
>
> -static void __exit microcode_exit (void)
> +static void __init microcode_exit (void)
> {