On 07/18/2012 09:01 AM, Peter De Schrijver wrote: > On Mon, Jun 18, 2012 at 11:01:50PM +0200, Stephen Warren wrote: >> From: Stephen Warren <swarren@xxxxxxxxxx> >> >> 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:-) -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html