Structure mc_cpu_notifier references a __cpuinit function, but
isn't declared __cpuinitdata itself:
WARNING: arch/i386/kernel/microcode.o - Section mismatch: reference
to .init.text: from .data after 'mc_cpu_notifier' (at offset 0x118)
Signed-off-by: Jean Delvare <[email protected]>
---
arch/i386/kernel/microcode.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-2.6.20-rc1.orig/arch/i386/kernel/microcode.c 2006-12-15 09:05:20.000000000 +0100
+++ linux-2.6.20-rc1/arch/i386/kernel/microcode.c 2006-12-17 15:23:40.000000000 +0100
@@ -722,7 +722,7 @@
return NOTIFY_OK;
}
-static struct notifier_block mc_cpu_notifier = {
+static struct notifier_block __cpuinitdata mc_cpu_notifier = {
.notifier_call = mc_cpu_callback,
};
--
Jean Delvare
Hi Jean,
Ok, your patch is correct, although I assume you realize that it does
nothing --- both the function and the data it operates on are inside
CONFIG_HOTPLUG_CPU and checking include/linux/init.h I see that
__cpuinitdata is nothing in this case. E.g. msr_class_cpu_notifier in the
msr driver isn't declared __cpuinitdata...
But to tidy up one should add __cpuinitdata as you suggest (to guard for
the case if these two slip out of CONFIG_HOTPLUG_CPU, although they are
meaningless if cpu hotplug support is not configured in).
Kind regards
Tigran
On Sun, 17 Dec 2006, Jean Delvare wrote:
> Structure mc_cpu_notifier references a __cpuinit function, but
> isn't declared __cpuinitdata itself:
>
> WARNING: arch/i386/kernel/microcode.o - Section mismatch: reference
> to .init.text: from .data after 'mc_cpu_notifier' (at offset 0x118)
>
> Signed-off-by: Jean Delvare <[email protected]>
> ---
> arch/i386/kernel/microcode.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-2.6.20-rc1.orig/arch/i386/kernel/microcode.c 2006-12-15 09:05:20.000000000 +0100
> +++ linux-2.6.20-rc1/arch/i386/kernel/microcode.c 2006-12-17 15:23:40.000000000 +0100
> @@ -722,7 +722,7 @@
> return NOTIFY_OK;
> }
>
> -static struct notifier_block mc_cpu_notifier = {
> +static struct notifier_block __cpuinitdata mc_cpu_notifier = {
> .notifier_call = mc_cpu_callback,
> };
>
>
>
> --
> Jean Delvare
>
Hi Tigran,
On Mon, 18 Dec 2006 10:04:39 +0000 (GMT), Tigran Aivazian wrote:
> Ok, your patch is correct, although I assume you realize that it does
> nothing --- both the function and the data it operates on are inside
> CONFIG_HOTPLUG_CPU and checking include/linux/init.h I see that
> __cpuinitdata is nothing in this case. E.g. msr_class_cpu_notifier in the
> msr driver isn't declared __cpuinitdata...
I don't see anything in arch/i386/kernel/microcode.c depending on
CONFIG_HOTPLUG_CPU (in 2.6.20-rc1), sorry.
> But to tidy up one should add __cpuinitdata as you suggest (to guard for
> the case if these two slip out of CONFIG_HOTPLUG_CPU, although they are
> meaningless if cpu hotplug support is not configured in).
>
> Kind regards
> Tigran
>
> On Sun, 17 Dec 2006, Jean Delvare wrote:
>
> > Structure mc_cpu_notifier references a __cpuinit function, but
> > isn't declared __cpuinitdata itself:
> >
> > WARNING: arch/i386/kernel/microcode.o - Section mismatch: reference
> > to .init.text: from .data after 'mc_cpu_notifier' (at offset 0x118)
> >
> > Signed-off-by: Jean Delvare <[email protected]>
> > ---
> > arch/i386/kernel/microcode.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > --- linux-2.6.20-rc1.orig/arch/i386/kernel/microcode.c 2006-12-15 09:05:20.000000000 +0100
> > +++ linux-2.6.20-rc1/arch/i386/kernel/microcode.c 2006-12-17 15:23:40.000000000 +0100
> > @@ -722,7 +722,7 @@
> > return NOTIFY_OK;
> > }
> >
> > -static struct notifier_block mc_cpu_notifier = {
> > +static struct notifier_block __cpuinitdata mc_cpu_notifier = {
> > .notifier_call = mc_cpu_callback,
> > };
--
Jean Delvare
Hi Jean,
On Tue, 19 Dec 2006, Jean Delvare wrote:
> I don't see anything in arch/i386/kernel/microcode.c depending on
> CONFIG_HOTPLUG_CPU (in 2.6.20-rc1), sorry.
I run 2.6.19.1 and there both mc_cpu_notifier (which your patch modified)
and mc_cpu_callback (which uses mc_cpu_notifier) are inside #ifdef
CONFIG_HOTPLUG_CPU.
Kind regards
Tigran
On Tue, 19 Dec 2006 09:10:25 +0000 (GMT)
Tigran Aivazian <[email protected]> wrote:
> Hi Jean,
>
> On Tue, 19 Dec 2006, Jean Delvare wrote:
> > I don't see anything in arch/i386/kernel/microcode.c depending on
> > CONFIG_HOTPLUG_CPU (in 2.6.20-rc1), sorry.
>
> I run 2.6.19.1 and there both mc_cpu_notifier (which your patch modified)
> and mc_cpu_callback (which uses mc_cpu_notifier) are inside #ifdef
> CONFIG_HOTPLUG_CPU.
Yes, we now compile this code unconditionally and rely upon the linker to
throw it away.
Allegedly, this works. How toolchain-version-dependent it is I don't know.