Message ID | 1310033919-4245-5-git-send-email-w.sang@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Wolfram Sang wrote: > > If mini2440_init() is in __init, mini2440_parse_features() should also > be in __init. Fixes: > > (.text+0x9adc): Section mismatch in reference from the function > mini2440_parse_features.clone.0() to the (unknown reference) .init.data:(unknown) > The function mini2440_parse_features.clone.0() references the (unknown reference) > __initdata (unknown). But I couldn't find above "Section mismatch" in my building with CONFIG_DEBUG_SECTION_MISMATCH=y. Hmm... > > Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> > Cc: Michel Pollet <buserror@gmail.com> > Cc: Kukjin Kim <kgene.kim@samsung.com> > --- > arch/arm/mach-s3c2440/mach-mini2440.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach- > s3c2440/mach-mini2440.c > index dd3120d..fc2dc0b 100644 > --- a/arch/arm/mach-s3c2440/mach-mini2440.c > +++ b/arch/arm/mach-s3c2440/mach-mini2440.c > @@ -552,7 +552,7 @@ struct mini2440_features_t { > struct platform_device *optional[8]; > }; > > -static void mini2440_parse_features( > +static void __init mini2440_parse_features( > struct mini2440_features_t * features, > const char * features_str ) > { > -- > 1.7.5.4 Thanks. Best regards, Kgene. -- Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.
On Fri, Jul 08, 2011 at 03:06:17PM +0900, Kukjin Kim wrote: > Wolfram Sang wrote: > > > > If mini2440_init() is in __init, mini2440_parse_features() should also > > be in __init. Fixes: > > > > (.text+0x9adc): Section mismatch in reference from the function > > mini2440_parse_features.clone.0() to the (unknown reference) > .init.data:(unknown) > > The function mini2440_parse_features.clone.0() references the (unknown > reference) > > __initdata (unknown). > > But I couldn't find above "Section mismatch" in my building with > CONFIG_DEBUG_SECTION_MISMATCH=y. Your compiler may have inlined the function, so defeating the check. static struct s3c2410fb_display mini2440_lcd_cfg[] __initdata = { and mini2440_parse_features() references this variable. Therefore either mini2440_parse_features() needs to be marked __init (it's only caller is from __init, so that seems sensible) or the __initdata markers on the referenced data need to be removed. Adding __init looks like the right thing.
diff --git a/arch/arm/mach-s3c2440/mach-mini2440.c b/arch/arm/mach-s3c2440/mach-mini2440.c index dd3120d..fc2dc0b 100644 --- a/arch/arm/mach-s3c2440/mach-mini2440.c +++ b/arch/arm/mach-s3c2440/mach-mini2440.c @@ -552,7 +552,7 @@ struct mini2440_features_t { struct platform_device *optional[8]; }; -static void mini2440_parse_features( +static void __init mini2440_parse_features( struct mini2440_features_t * features, const char * features_str ) {
If mini2440_init() is in __init, mini2440_parse_features() should also be in __init. Fixes: (.text+0x9adc): Section mismatch in reference from the function mini2440_parse_features.clone.0() to the (unknown reference) .init.data:(unknown) The function mini2440_parse_features.clone.0() references the (unknown reference) __initdata (unknown). Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Cc: Michel Pollet <buserror@gmail.com> Cc: Kukjin Kim <kgene.kim@samsung.com> --- arch/arm/mach-s3c2440/mach-mini2440.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)