Thread (5 messages) 5 messages, 3 authors, 2012-07-24
STALE5069d

Re: [PATCH] ARM: tegra: make tegra_cpu_reset_handler_enable() __init

From: Stephen Warren <hidden>
Date: 2012-07-23 20:09:30
Also in: linux-arm-kernel

On 07/18/2012 09:01 AM, Peter De Schrijver wrote:
On Mon, Jun 18, 2012 at 11:01:50PM +0200, Stephen Warren wrote:
quoted
From: Stephen Warren <redacted>

This solves a section mismatch warning. I hadn't noticed this before,
because my compiler was inlining tegra_cpu_reset_handler_enable() inside
tegra_cpu_reset_handler_init(), which is already __init, but I switched
compilers and it stopped doing that.
Why does this generate a section mismatch warning? I see why calling a
a __init marked function from a non __init marked function is a problem, but
the opposite should be ok no?
The issue is that tegra_cpu_reset_handler_enable() itself (which was not
__init but the patch made to be __init) was referencing variable
__tegra_cpu_reset_handler_{start,end}. This wasn't noticed before
because when tegra_cpu_reset_handler_enable() was inlined into
tegra_cpu_reset_handler_init(), tegra_cpu_reset_handler_enable() was
effectively __init. However, when built as a separate function, you
ended up with a non-__init function referencing other things that were
__init.

In other words, this is indeed nothing to do with __init function
tegra_cpu_reset_handler_init() calling non-__init function
tegra_cpu_reset_handler_enable().

You can get the details by reverting the patch and building:-)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help