Re: 2.6.21-mm1

Sam Ravnborg
2007-05-06T20:22:17Z

On Sun, May 06, 2007 at 12:22:16AM +0100, Simon Arlott wrote:
> On 05/05/07 09:49, Andrew Morton wrote:
> >ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.21/2.6.21-mm1/
>
> WARNING: init/built-in.o - Section mismatch: reference to .init.text: from
> .text between 'rest_init' (at offset 0x9) and 'run_init_process'

On i386 binutils fails to pick up reference to kernel_init
in the:
kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
line from rest_init in init/main.c

Wy binutils throw away the info about the kernel_init symbol
is beyond me.
A workaround is to simply declare kernel_init non-static.

> WARNING: arch/i386/kernel/built-in.o - Section mismatch: reference to
> .init.text: from .data between 'thermal_throttle_cpu_notifier' (at offset
> 0x21cc) and 'mce_work'
This is because:
static struct notifier_block thermal_throttle_cpu_notifier =
{
.notifier_call = thermal_throttle_cpu_callback,
};

thermal_throttle_cpu_notifier is not marked __initdata
but thermal_throttle_cpu_callback is __cpuinit.
So this is a bug.
I do not see it with my config (a slightly modified defconfig)
so I cannot test it.
Could you try to change the line to:
static struct notifier_block __cpuinitdata thermal_throttle_cpu_notifier =
And check if this makes the warning go away.

> WARNING: kernel/built-in.o - Section mismatch: reference to .init.text:
> from .text between 'kthreadd' (at offset 0x181d8) and 'init_waitqueue_head'

We have kthread that calls kthreadd_setup - the latter marked __init.
The only user of kthreadd is init/main.c:rest_init() but I do not know
enough about the kernel boot process to say if it is OK to mark
kthreadd __init (that would be my fist proposal).

Andrew or anyone?

Sam