From: Sam Ravnborg <sam@ravnborg.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: Solving section mismatches
Date: Sun, 27 Sep 2009 21:47:47 +0200 [thread overview]
Message-ID: <20090927194747.GA10490@merkur.ravnborg.org> (raw)
In-Reply-To: <20090927190953.GE20093@n2100.arm.linux.org.uk>
On Sun, Sep 27, 2009 at 08:09:53PM +0100, Russell King - ARM Linux wrote:
> On Sun, Sep 27, 2009 at 08:46:45PM +0200, Sam Ravnborg wrote:
> > Please look at the above and realise that cpu_die() is only ever defined
> > in case that HOTPLUG_CPU is defined. So there is nothing to discard if
> > HOTPLUG_CPU equals to n.
> >
> > And just to repeat myself....
> > The only correct use of __cpu* annotation is for function/data that is
> > used with or without HOTPLUG_CPU equals to y.
> > Which is NOT the case for cpu_die().
> >
> > The __cpu* annotation is not a replacement for ifdeffed out code that is
> > not relevant for the non-HOTPLUG_CPU case.
>
> Ok. But that still doesn't solve:
>
> WARNING: arch/arm/kernel/built-in.o(.text+0x6274): Section mismatch in reference from the function cpu_die() to the function .cpuinit.text:secondary_start_kernel()
> The function cpu_die() references
> the function __cpuinit secondary_start_kernel().
> This is often because cpu_die lacks a __cpuinit
> annotation or the annotation of secondary_start_kernel is wrong.
>
> So are you saying secondary_start_kernel should not have __cpuinit?
Lets try it.
- is secondary_start_kernel used only in init context with HOTPLUG_CPU=n - yes
- is secondary_start_kernel used outside init context with HOTPLUG_CPU=y - yes
So the __cpuinit annotation is correct.
cpu_idle is calling secondary_start_kernel() but cpu_idle() does not fulfill
the criteria for any of the __cpu* annotations.
So there is only two ways to tell modpost that this is correct.
Either rename it so it fullfill one of the whitelisted names
or explicitly tell modpost that this function may reference
__*init/__*exit annotated functions/code.
The latter is much preferred.
So the right fix is to annotate it with __ref. (see include/linux/init.h)
Had I looked closely last time I would have know this already - but alas I was
to quick to reply.
Please try this:
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index e0d3277..835188b 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -214,7 +214,7 @@ void __cpuexit __cpu_die(unsigned int cpu)
* of the other hotplug-cpu capable cores, so presumably coming
* out of idle fixes this.
*/
-void __cpuexit cpu_die(void)
+void __ref cpu_die(void)
{
unsigned int cpu = smp_processor_id();
You can add my:
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
or
Acked-by: Sam Ravnborg <sam@ravnborg.org>
as you prefer.
Assuming this works of course.
Sam
next prev parent reply other threads:[~2009-09-27 19:47 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-27 16:41 Russell King - ARM Linux
2009-09-27 18:27 ` Sam Ravnborg
2009-09-27 18:39 ` Russell King - ARM Linux
2009-09-27 18:46 ` Sam Ravnborg
2009-09-27 19:09 ` Russell King - ARM Linux
2009-09-27 19:47 ` Sam Ravnborg [this message]
2009-09-27 20:15 ` Russell King - ARM Linux
2009-09-27 20:22 ` Sam Ravnborg
2009-09-27 20:24 ` Russell King - ARM Linux
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090927194747.GA10490@merkur.ravnborg.org \
--to=sam@ravnborg.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®