2007-01-03 11:34:58

by Vivek Goyal

[permalink] [raw]
Subject: [PATCH 3/4] i386: modpost smpboot code warning fix



o Currently synchronize_tsc_ap() is of type __init. It is called by
smp_callin() which is of type __cpuinit. So synchronize_tsc_ap()
should be of type __cpuinit.

o Modpost generates warnings for i386 if CONFIG_RELOCATABLE=y and
CONFIG_HOTPLUG_CPU=y

WARNING: vmlinux - Section mismatch: reference to .init.data: from .text between 'start_secondary' (at offset 0xc01164dc) and 'initialize_secondary'
WARNING: vmlinux - Section mismatch: reference to .init.data: from .text between 'start_secondary' (at offset 0xc01164e8) and 'initialize_secondary'

o tsc is of type __initdata. It should be of type __cpuinitdata.

Signed-off-by: Vivek Goyal <[email protected]>
---

arch/i386/kernel/smpboot.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff -puN arch/i386/kernel/smpboot.c~i386-modpost-smpboot-code-warning-fixes arch/i386/kernel/smpboot.c
--- linux-2.6.20-rc2-mm1-reloc/arch/i386/kernel/smpboot.c~i386-modpost-smpboot-code-warning-fixes 2007-01-03 11:56:55.000000000 +0530
+++ linux-2.6.20-rc2-mm1-reloc-root/arch/i386/kernel/smpboot.c 2007-01-03 11:56:55.000000000 +0530
@@ -227,7 +227,7 @@ static struct {
atomic_t count_start;
atomic_t count_stop;
unsigned long long values[NR_CPUS];
-} tsc __initdata = {
+} tsc __cpuinitdata = {
.start_flag = ATOMIC_INIT(0),
.count_start = ATOMIC_INIT(0),
.count_stop = ATOMIC_INIT(0),
@@ -332,7 +332,7 @@ static void __init synchronize_tsc_bp(vo
printk("passed.\n");
}

-static void __init synchronize_tsc_ap(void)
+static void __cpuinit synchronize_tsc_ap(void)
{
int i;

_