> > On 11/22/2010 8:16 AM, Mansoor, Illyas wrote: > > > Hi Arjan, > > > > > > Please find the patch that fixes this, thanks. > > > > > > > > > From 0fa3f051da35f148605a29ca5cc15eac33c08697 Mon Sep 17 00:00:00 > > 2001 > > > From: Illyas Mansoor<[email protected]> > > > Date: Tue, 23 Nov 2010 00:43:01 +0530 > > > Subject: [PATCH] fix for section mismatch warnings > > > > > > sfi_processor_register_performance() was not > > > annotated with __init fixed this. > > > > it's customary to put the actual compiler warning in the description > if > > you're fixing one... > > > > Okay, will take care of this, Thanks.
Arjan, resubmitting patch after adding compiler warnings in the description that have fixed. >From 98d3d353287abc0ef0fd01c58bebaf506d6de5d6 Mon Sep 17 00:00:00 2001 From: Illyas Mansoor <[email protected]> Date: Wed, 24 Nov 2010 09:13:24 +0530 Subject: [PATCH] Fix for section mismatch warnings sfi_processor_register_performance(), sfi_cpufreq_cpu_init was not annotated with __init fixed this. Also because of the above changes sfi_cpufreq_driver variable also had to be changed to sfi_cpufreq_driver_ops since it was being refrenced in sfi_processor_register_performance, that was annotated with __init. Fixed the following compiler warnings: WARNING: vmlinux.o(.text+0x12d4e): Section mismatch in reference from the function sfi_processor_register_performance() to the function .init.text:parse_freq() The function sfi_processor_register_performance() references the function __init parse_freq(). This is often because sfi_processor_register_performance lacks a __init annotation or the annotation of parse_freq is wrong. WARNING: arch/x86/kernel/cpu/built-in.o(.text+0x9356): Section mismatch in reference from the function sfi_cpufreq_cpu_init() to the function .init.text:sfi_processor_register_performance() The function sfi_cpufreq_cpu_init() references the function __init sfi_processor_register_performance(). This is often because sfi_cpufreq_cpu_init lacks a __init annotation or the annotation of sfi_processor_register_performance is wrong. WARNING: arch/x86/kernel/cpu/built-in.o(.data+0x1f24): Section mismatch in reference from the variable sfi_cpufreq_driver to the function .init.text:sfi_cpufreq_cpu_init() The variable sfi_cpufreq_driver references the function __init sfi_cpufreq_cpu_init() If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, Signed-off-by: Illyas Mansoor <[email protected]> --- arch/x86/kernel/cpu/cpufreq/sfi-cpufreq.c | 19 +++++++++---------- 1 files changed, 9 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/cpu/cpufreq/sfi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/sfi-cpufreq.c index 11d1438..aa0d935 100644 --- a/arch/x86/kernel/cpu/cpufreq/sfi-cpufreq.c +++ b/arch/x86/kernel/cpu/cpufreq/sfi-cpufreq.c @@ -96,7 +96,7 @@ static struct sfi_cpu_table_entry sfi_cpu_array[SFI_CPU_MAX]; /* sfi_perf_data is a pointer to percpu data. */ static struct sfi_processor_performance *sfi_perf_data; -static struct cpufreq_driver sfi_cpufreq_driver; +static struct cpufreq_driver sfi_cpufreq_driver_ops; static unsigned int sfi_pstate_strict; @@ -179,7 +179,7 @@ void set_cpu_to_gfm(void) wrmsr(MSR_IA32_PERF_CTL, l, h); } -int +int __init sfi_processor_register_performance(struct sfi_processor_performance *performance, unsigned int cpu) { @@ -557,8 +557,7 @@ static int __init sfi_cpufreq_early_init(void) return 0; } - -static int sfi_cpufreq_cpu_init(struct cpufreq_policy *policy) +static int __init sfi_cpufreq_cpu_init(struct cpufreq_policy *policy) { unsigned int i; unsigned int valid_states = 0; @@ -578,7 +577,7 @@ static int sfi_cpufreq_cpu_init(struct cpufreq_policy *policy) per_cpu(drv_data, cpu) = data; if (cpu_has(c, X86_FEATURE_CONSTANT_TSC)) - sfi_cpufreq_driver.flags |= CPUFREQ_CONST_LOOPS; + sfi_cpufreq_driver_ops.flags |= CPUFREQ_CONST_LOOPS; result = sfi_processor_register_performance(data->sfi_data, cpu); @@ -647,7 +646,7 @@ static int sfi_cpufreq_cpu_init(struct cpufreq_policy *policy) if (result) goto err_freqfree; - sfi_cpufreq_driver.get = get_cur_freq_on_cpu; + sfi_cpufreq_driver_ops.get = get_cur_freq_on_cpu; policy->cur = get_cur_freq_on_cpu(cpu); /* Check for APERF/MPERF support in hardware */ @@ -655,7 +654,7 @@ static int sfi_cpufreq_cpu_init(struct cpufreq_policy *policy) unsigned int ecx; ecx = cpuid_ecx(6); if (ecx & CPUID_6_ECX_APERFMPERF_CAPABILITY) - sfi_cpufreq_driver.getavg = get_measured_perf; + sfi_cpufreq_driver_ops.getavg = get_measured_perf; } dprintk("CPU%u - SFI performance management activated.\n", cpu); @@ -719,7 +718,7 @@ static struct freq_attr *sfi_cpufreq_attr[] = { NULL, }; -static struct cpufreq_driver sfi_cpufreq_driver = { +static struct cpufreq_driver sfi_cpufreq_driver_ops = { .verify = sfi_cpufreq_verify, .target = sfi_cpufreq_target, .init = sfi_cpufreq_cpu_init, @@ -790,7 +789,7 @@ static int __init sfi_cpufreq_init(void) if (ret) return ret; - return cpufreq_register_driver(&sfi_cpufreq_driver); + return cpufreq_register_driver(&sfi_cpufreq_driver_ops); } static void __exit sfi_cpufreq_exit(void) @@ -803,7 +802,7 @@ static void __exit sfi_cpufreq_exit(void) pr = per_cpu(sfi_processors, 0); kfree(pr); - cpufreq_unregister_driver(&sfi_cpufreq_driver); + cpufreq_unregister_driver(&sfi_cpufreq_driver_ops); free_percpu(sfi_perf_data); -- 1.7.2.3
0001-fix-for-section-mismatch-warnings.patch
Description: 0001-fix-for-section-mismatch-warnings.patch
_______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
