[PATCH 1/5] i386: cpu hotplug/smpboot misc MODPOST warning fixes

2006-12-18 Thread Vivek Goyal

o Misc smpboot/cpu hotplug path cleanups. I did those to supress the 
  warnings generated by MODPOST. These warnings are visible only 
  if CONFIG_RELOCATABLE=y.
 
o CONFIG_RELOCATABLE compiles the kernel with --emit-relocs option. This
  option retains relocation information in vmlinux file and MODPOST
  is quick to spit out "Section mismatch" warnings. 

o This patch fixes some of those warnings. Many of the functions in 
  smpboot case are __devinit type and they in turn accesses text/data which
  if of type __cpuinit. Now if CONFIG_HOTPLUG=y and CONFIG_HOTPLUG_CPU=n
  then we end up in cases where a function in .text segment is calling
  another function in .init.text segment and MODPOST emits warning. 

WARNING: vmlinux - Section mismatch: reference to .init.text:identify_cpu from 
.text between 'smp_store_cpu_info' (at offset 0xc011020d) and 'do_boot_cpu'
WARNING: vmlinux - Section mismatch: reference to .init.text:init_gdt from 
.text between 'do_boot_cpu' (at offset 0xc01102ca) and '__cpu_up'
WARNING: vmlinux - Section mismatch: reference to .init.text:print_cpu_info 
from .text between 'do_boot_cpu' (at offset 0xc01105d0) and '__cpu_up'

o It also fixes the issues where CONFIG_HOTPLUG_CPU=y and start_secondary()
  is calling smp_callin() which in-turn calls synchronize_tsc_ap() which is
  of type __init. This should have meant broken CPU hotplug.

WARNING: vmlinux - Section mismatch: reference to .init.data: from .text 
between 'start_secondary' (at offset 0xc011603f) and 'initialize_secondary'
WARNING: vmlinux - Section mismatch: reference to .init.data: from .text 
between 'MP_processor_info' (at offset 0xc0116a4f) and 'mp_register_lapic'
WARNING: vmlinux - Section mismatch: reference to .init.data: from .text 
between 'MP_processor_info' (at offset 0xc0116a4f) and 'mp_register_lapic'

Signed-off-by: Vivek Goyal <[EMAIL PROTECTED]>
---

 arch/i386/kernel/mpparse.c |8 
 arch/i386/kernel/setup.c   |2 +-
 arch/i386/kernel/smpboot.c |   10 +-
 3 files changed, 10 insertions(+), 10 deletions(-)

diff -puN 
arch/i386/kernel/mpparse.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata 
arch/i386/kernel/mpparse.c
--- 
linux-2.6.19-rc1-reloc/arch/i386/kernel/mpparse.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata
2006-12-15 14:08:55.0 +0530
+++ linux-2.6.19-rc1-reloc-root/arch/i386/kernel/mpparse.c  2006-12-15 
14:08:55.0 +0530
@@ -36,7 +36,7 @@
 
 /* Have we found an MP table */
 int smp_found_config;
-unsigned int __initdata maxcpus = NR_CPUS;
+unsigned int __cpuinitdata maxcpus = NR_CPUS;
 
 /*
  * Various Linux-internal data structures created from the
@@ -102,9 +102,9 @@ static int __init mpf_checksum(unsigned 
  */
 
 static int mpc_record; 
-static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] 
__initdata;
+static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] 
__cpuinitdata;
 
-static void __devinit MP_processor_info (struct mpc_config_processor *m)
+static void __cpuinit MP_processor_info (struct mpc_config_processor *m)
 {
int ver, apicid;
physid_mask_t phys_cpu;
@@ -822,7 +822,7 @@ void __init mp_register_lapic_address(u6
Dprintk("Boot CPU = %d\n", boot_cpu_physical_apicid);
 }
 
-void __devinit mp_register_lapic (u8 id, u8 enabled)
+void __cpuinit mp_register_lapic (u8 id, u8 enabled)
 {
struct mpc_config_processor processor;
int boot_cpu = 0;
diff -puN 
arch/i386/kernel/setup.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata 
arch/i386/kernel/setup.c
--- 
linux-2.6.19-rc1-reloc/arch/i386/kernel/setup.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata
  2006-12-15 14:08:55.0 +0530
+++ linux-2.6.19-rc1-reloc-root/arch/i386/kernel/setup.c2006-12-15 
14:10:35.0 +0530
@@ -77,7 +77,7 @@ extern struct resource code_resource;
 extern struct resource data_resource;
 
 /* cpu data as detected by the assembly code in head.S */
-struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
+struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 
};
 /* common cpu data for all cpus */
 struct cpuinfo_x86 boot_cpu_data __read_mostly = { 0, 0, 0, 0, -1, 1, 0, 0, -1 
};
 EXPORT_SYMBOL(boot_cpu_data);
diff -puN 
arch/i386/kernel/smpboot.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata 
arch/i386/kernel/smpboot.c
--- 
linux-2.6.19-rc1-reloc/arch/i386/kernel/smpboot.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata
2006-12-15 14:08:55.0 +0530
+++ linux-2.6.19-rc1-reloc-root/arch/i386/kernel/smpboot.c  2006-12-15 
14:08:55.0 +0530
@@ -159,7 +159,7 @@ void __init smp_alloc_memory(void)
  * a given CPU
  */
 
-static void __devinit smp_store_cpu_info(int id)
+static void __cpuinit smp_store_cpu_info(int id)
 {
struct cpuinfo_x86 *c = cpu_data + id;
 
@@ -364,7 +364,7 @@ extern void calibrate_delay(void);
 
 static atomic_t init_deasserted;
 
-static void __devinit smp_callin(void)
+static void 

[PATCH 1/5] i386: cpu hotplug/smpboot misc MODPOST warning fixes

2006-12-18 Thread Vivek Goyal

o Misc smpboot/cpu hotplug path cleanups. I did those to supress the 
  warnings generated by MODPOST. These warnings are visible only 
  if CONFIG_RELOCATABLE=y.
 
o CONFIG_RELOCATABLE compiles the kernel with --emit-relocs option. This
  option retains relocation information in vmlinux file and MODPOST
  is quick to spit out Section mismatch warnings. 

o This patch fixes some of those warnings. Many of the functions in 
  smpboot case are __devinit type and they in turn accesses text/data which
  if of type __cpuinit. Now if CONFIG_HOTPLUG=y and CONFIG_HOTPLUG_CPU=n
  then we end up in cases where a function in .text segment is calling
  another function in .init.text segment and MODPOST emits warning. 

WARNING: vmlinux - Section mismatch: reference to .init.text:identify_cpu from 
.text between 'smp_store_cpu_info' (at offset 0xc011020d) and 'do_boot_cpu'
WARNING: vmlinux - Section mismatch: reference to .init.text:init_gdt from 
.text between 'do_boot_cpu' (at offset 0xc01102ca) and '__cpu_up'
WARNING: vmlinux - Section mismatch: reference to .init.text:print_cpu_info 
from .text between 'do_boot_cpu' (at offset 0xc01105d0) and '__cpu_up'

o It also fixes the issues where CONFIG_HOTPLUG_CPU=y and start_secondary()
  is calling smp_callin() which in-turn calls synchronize_tsc_ap() which is
  of type __init. This should have meant broken CPU hotplug.

WARNING: vmlinux - Section mismatch: reference to .init.data: from .text 
between 'start_secondary' (at offset 0xc011603f) and 'initialize_secondary'
WARNING: vmlinux - Section mismatch: reference to .init.data: from .text 
between 'MP_processor_info' (at offset 0xc0116a4f) and 'mp_register_lapic'
WARNING: vmlinux - Section mismatch: reference to .init.data: from .text 
between 'MP_processor_info' (at offset 0xc0116a4f) and 'mp_register_lapic'

Signed-off-by: Vivek Goyal [EMAIL PROTECTED]
---

 arch/i386/kernel/mpparse.c |8 
 arch/i386/kernel/setup.c   |2 +-
 arch/i386/kernel/smpboot.c |   10 +-
 3 files changed, 10 insertions(+), 10 deletions(-)

diff -puN 
arch/i386/kernel/mpparse.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata 
arch/i386/kernel/mpparse.c
--- 
linux-2.6.19-rc1-reloc/arch/i386/kernel/mpparse.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata
2006-12-15 14:08:55.0 +0530
+++ linux-2.6.19-rc1-reloc-root/arch/i386/kernel/mpparse.c  2006-12-15 
14:08:55.0 +0530
@@ -36,7 +36,7 @@
 
 /* Have we found an MP table */
 int smp_found_config;
-unsigned int __initdata maxcpus = NR_CPUS;
+unsigned int __cpuinitdata maxcpus = NR_CPUS;
 
 /*
  * Various Linux-internal data structures created from the
@@ -102,9 +102,9 @@ static int __init mpf_checksum(unsigned 
  */
 
 static int mpc_record; 
-static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] 
__initdata;
+static struct mpc_config_translation *translation_table[MAX_MPC_ENTRY] 
__cpuinitdata;
 
-static void __devinit MP_processor_info (struct mpc_config_processor *m)
+static void __cpuinit MP_processor_info (struct mpc_config_processor *m)
 {
int ver, apicid;
physid_mask_t phys_cpu;
@@ -822,7 +822,7 @@ void __init mp_register_lapic_address(u6
Dprintk(Boot CPU = %d\n, boot_cpu_physical_apicid);
 }
 
-void __devinit mp_register_lapic (u8 id, u8 enabled)
+void __cpuinit mp_register_lapic (u8 id, u8 enabled)
 {
struct mpc_config_processor processor;
int boot_cpu = 0;
diff -puN 
arch/i386/kernel/setup.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata 
arch/i386/kernel/setup.c
--- 
linux-2.6.19-rc1-reloc/arch/i386/kernel/setup.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata
  2006-12-15 14:08:55.0 +0530
+++ linux-2.6.19-rc1-reloc-root/arch/i386/kernel/setup.c2006-12-15 
14:10:35.0 +0530
@@ -77,7 +77,7 @@ extern struct resource code_resource;
 extern struct resource data_resource;
 
 /* cpu data as detected by the assembly code in head.S */
-struct cpuinfo_x86 new_cpu_data __initdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
+struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 
};
 /* common cpu data for all cpus */
 struct cpuinfo_x86 boot_cpu_data __read_mostly = { 0, 0, 0, 0, -1, 1, 0, 0, -1 
};
 EXPORT_SYMBOL(boot_cpu_data);
diff -puN 
arch/i386/kernel/smpboot.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata 
arch/i386/kernel/smpboot.c
--- 
linux-2.6.19-rc1-reloc/arch/i386/kernel/smpboot.c~i386-cpu-hotplug-make-new-cpu-data-devinitdata
2006-12-15 14:08:55.0 +0530
+++ linux-2.6.19-rc1-reloc-root/arch/i386/kernel/smpboot.c  2006-12-15 
14:08:55.0 +0530
@@ -159,7 +159,7 @@ void __init smp_alloc_memory(void)
  * a given CPU
  */
 
-static void __devinit smp_store_cpu_info(int id)
+static void __cpuinit smp_store_cpu_info(int id)
 {
struct cpuinfo_x86 *c = cpu_data + id;
 
@@ -364,7 +364,7 @@ extern void calibrate_delay(void);
 
 static atomic_t init_deasserted;
 
-static void __devinit smp_callin(void)
+static void __cpuinit