2013-10-23 02:17:43

by Chen Gang

[permalink] [raw]
Subject: [PATCH] arc: kernel: remove '__init' for first_lines_of_secondary()

first_lines_of_secondary() is a '__init' function, but it may be called
by __cpu_up() by _cpu_up() by cpu_up() which is a normal export symbol
function. So recommend to remove '__init'.

The related warning (with allmodconfig):

MODPOST vmlinux.o
WARNING: vmlinux.o(.text+0x315c): Section mismatch in reference from the function __cpu_up() to the function .init.text:first_lines_of_secondary()
The function __cpu_up() references
the function __init first_lines_of_secondary().
This is often because __cpu_up lacks a __init
annotation or the annotation of first_lines_of_secondary is wrong.


Signed-off-by: Chen Gang <[email protected]>
---
arch/arc/include/asm/smp.h | 2 +-
arch/arc/kernel/head.S | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arc/include/asm/smp.h b/arch/arc/include/asm/smp.h
index c4fb211..eefc29f 100644
--- a/arch/arc/include/asm/smp.h
+++ b/arch/arc/include/asm/smp.h
@@ -30,7 +30,7 @@ extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
* APIs provided by arch SMP code to rest of arch code
*/
extern void __init smp_init_cpus(void);
-extern void __init first_lines_of_secondary(void);
+extern void first_lines_of_secondary(void);
extern const char *arc_platform_smp_cpuinfo(void);

/*
diff --git a/arch/arc/kernel/head.S b/arch/arc/kernel/head.S
index 0f944f0..2c878e9 100644
--- a/arch/arc/kernel/head.S
+++ b/arch/arc/kernel/head.S
@@ -95,7 +95,7 @@ stext:
;----------------------------------------------------------------
; First lines of code run by secondary before jumping to 'C'
;----------------------------------------------------------------
- .section .init.text, "ax",@progbits
+ .section .text, "ax",@progbits
.type first_lines_of_secondary, @function
.globl first_lines_of_secondary

--
1.7.7.6


2013-10-28 13:53:54

by Vineet Gupta

[permalink] [raw]
Subject: Re: [PATCH] arc: kernel: remove '__init' for first_lines_of_secondary()

On 10/23/2013 07:46 AM, Chen Gang wrote:
> first_lines_of_secondary() is a '__init' function, but it may be called
> by __cpu_up() by _cpu_up() by cpu_up() which is a normal export symbol
> function. So recommend to remove '__init'.
>
> The related warning (with allmodconfig):
>
> MODPOST vmlinux.o
> WARNING: vmlinux.o(.text+0x315c): Section mismatch in reference from the function __cpu_up() to the function .init.text:first_lines_of_secondary()
> The function __cpu_up() references
> the function __init first_lines_of_secondary().
> This is often because __cpu_up lacks a __init
> annotation or the annotation of first_lines_of_secondary is wrong.
>
>
> Signed-off-by: Chen Gang <[email protected]>

Applied for 3.13. But I'm planning to squash all the __init section annotation
fixes into one patch. OK with you ?

Thx,
-Vineet

2013-10-29 01:09:08

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] arc: kernel: remove '__init' for first_lines_of_secondary()

On 10/28/2013 09:53 PM, Vineet Gupta wrote:
> On 10/23/2013 07:46 AM, Chen Gang wrote:
>> first_lines_of_secondary() is a '__init' function, but it may be called
>> by __cpu_up() by _cpu_up() by cpu_up() which is a normal export symbol
>> function. So recommend to remove '__init'.
>>
>> The related warning (with allmodconfig):
>>
>> MODPOST vmlinux.o
>> WARNING: vmlinux.o(.text+0x315c): Section mismatch in reference from the function __cpu_up() to the function .init.text:first_lines_of_secondary()
>> The function __cpu_up() references
>> the function __init first_lines_of_secondary().
>> This is often because __cpu_up lacks a __init
>> annotation or the annotation of first_lines_of_secondary is wrong.
>>
>>
>> Signed-off-by: Chen Gang <[email protected]>
>
> Applied for 3.13. But I'm planning to squash all the __init section annotation
> fixes into one patch. OK with you ?
>

It is OK to me. They are all related with each other, although toolchain
reports several warnings (originally, I made them based on warning items).


Thanks.
--
Chen Gang