Message ID | 20140911190136.GM3755@pengutronix.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
* Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140911 12:02]: > On Thu, Sep 11, 2014 at 10:39:43AM -0700, Tony Lindgren wrote: > > * Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140910 01:27]: > > > of_device_ids (i.e. compatible strings and the respective data) are not > > > supposed to change at runtime. All functions working with of_device_ids > > > provided by <linux/of.h> work with const of_device_ids. So mark the > > > non-const function parameters and structs for OMAP2+ as const, too. > > > > Hmm this does not seem to compile with omap2plus_defconfig because > > of section type conflicts. Looks like there's some issue now with the > > use of __initconst: > > > > arch/arm/mach-omap2/board-generic.c:262:20: error: dra72x_boards_compat causes a section type conflict with omap_dt_match_table > > arch/arm/mach-omap2/board-generic.c:30:34: note: ‘omap_dt_match_table’ was declared here > > scripts/Makefile.build:257: recipe for target 'arch/arm/mach-omap2/board-generic.o' failed > The problem is dra74x_boards_compat though: > > static const char *dra74x_boards_compat[] __initconst = { > ... > > *dra74x_boards_compat is const, but dra74x_boards_compat isn't, so > either the variable must go into __initdata or it must be declared as: > > static const char * const dra74x_boards_compat[] __initconst = { > ... Ah OK. > (but then I guess you get another warning because struct machine_desc's > dt_compat is declared as > > const char **dt_compat; > > .) > > With the patch below, arch/arm/mach-omap2/board-generic.c compiles just > fine. Don't know yet if the additional const in <asm/mach_desc.h> is > problematic ... Yes OK thanks. It Would be nice to have those as __initconst to discard the unused ones. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello, On Thu, Sep 11, 2014 at 09:01:36PM +0200, Uwe Kleine-König wrote: > On Thu, Sep 11, 2014 at 10:39:43AM -0700, Tony Lindgren wrote: > > * Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140910 01:27]: > > > of_device_ids (i.e. compatible strings and the respective data) are not > > > supposed to change at runtime. All functions working with of_device_ids > > > provided by <linux/of.h> work with const of_device_ids. So mark the > > > non-const function parameters and structs for OMAP2+ as const, too. > > > > Hmm this does not seem to compile with omap2plus_defconfig because > > of section type conflicts. Looks like there's some issue now with the > > use of __initconst: > > > > arch/arm/mach-omap2/board-generic.c:262:20: error: dra72x_boards_compat causes a section type conflict with omap_dt_match_table > > arch/arm/mach-omap2/board-generic.c:30:34: note: ‘omap_dt_match_table’ was declared here > > scripts/Makefile.build:257: recipe for target 'arch/arm/mach-omap2/board-generic.o' failed > The problem is dra74x_boards_compat though: > > static const char *dra74x_boards_compat[] __initconst = { > ... > > *dra74x_boards_compat is const, but dra74x_boards_compat isn't, so > either the variable must go into __initdata or it must be declared as: > > static const char * const dra74x_boards_compat[] __initconst = { > ... > > (but then I guess you get another warning because struct machine_desc's > dt_compat is declared as > > const char **dt_compat; > > .) > > With the patch below, arch/arm/mach-omap2/board-generic.c compiles just > fine. Don't know yet if the additional const in <asm/mach_desc.h> is > problematic ... > > diff --git a/arch/arc/include/asm/mach_desc.h b/arch/arc/include/asm/mach_desc.h > index e8993a2be6c2..f4a7bc8d8967 100644 > --- a/arch/arc/include/asm/mach_desc.h > +++ b/arch/arc/include/asm/mach_desc.h this is obviously non-sense. The definition for arm already has the const I added here for arc. So the patch for board-generic.c below is fine. I will create a proper patch for it. Best regards Uwe
Hello Tony, On Thu, Sep 11, 2014 at 12:14:50PM -0700, Tony Lindgren wrote: > * Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140911 12:02]: > > On Thu, Sep 11, 2014 at 10:39:43AM -0700, Tony Lindgren wrote: > > > * Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140910 01:27]: > > > > of_device_ids (i.e. compatible strings and the respective data) are not > > > > supposed to change at runtime. All functions working with of_device_ids > > > > provided by <linux/of.h> work with const of_device_ids. So mark the > > > > non-const function parameters and structs for OMAP2+ as const, too. > > > > > > Hmm this does not seem to compile with omap2plus_defconfig because > > > of section type conflicts. Looks like there's some issue now with the > > > use of __initconst: > > > > > > arch/arm/mach-omap2/board-generic.c:262:20: error: dra72x_boards_compat causes a section type conflict with omap_dt_match_table > > > arch/arm/mach-omap2/board-generic.c:30:34: note: ‘omap_dt_match_table’ was declared here > > > scripts/Makefile.build:257: recipe for target 'arch/arm/mach-omap2/board-generic.o' failed > > The problem is dra74x_boards_compat though: > > > > static const char *dra74x_boards_compat[] __initconst = { > > ... > > > > *dra74x_boards_compat is const, but dra74x_boards_compat isn't, so > > either the variable must go into __initdata or it must be declared as: > > > > static const char * const dra74x_boards_compat[] __initconst = { > > ... > > Ah OK. > > > (but then I guess you get another warning because struct machine_desc's > > dt_compat is declared as > > > > const char **dt_compat; > > > > .) > > > > With the patch below, arch/arm/mach-omap2/board-generic.c compiles just > > fine. Don't know yet if the additional const in <asm/mach_desc.h> is > > problematic ... > > Yes OK thanks. It Would be nice to have those as __initconst to discard > the unused ones. __initdata is discarded, too, but I already send a patch that adds the additional consts. On top of this one the patch from this thread is fine. Best regards Uwe
* Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140911 12:42]: > Hello Tony, > > On Thu, Sep 11, 2014 at 12:14:50PM -0700, Tony Lindgren wrote: > > * Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140911 12:02]: > > > On Thu, Sep 11, 2014 at 10:39:43AM -0700, Tony Lindgren wrote: > > > > * Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140910 01:27]: > > > > > of_device_ids (i.e. compatible strings and the respective data) are not > > > > > supposed to change at runtime. All functions working with of_device_ids > > > > > provided by <linux/of.h> work with const of_device_ids. So mark the > > > > > non-const function parameters and structs for OMAP2+ as const, too. > > > > > > > > Hmm this does not seem to compile with omap2plus_defconfig because > > > > of section type conflicts. Looks like there's some issue now with the > > > > use of __initconst: > > > > > > > > arch/arm/mach-omap2/board-generic.c:262:20: error: dra72x_boards_compat causes a section type conflict with omap_dt_match_table > > > > arch/arm/mach-omap2/board-generic.c:30:34: note: ‘omap_dt_match_table’ was declared here > > > > scripts/Makefile.build:257: recipe for target 'arch/arm/mach-omap2/board-generic.o' failed > > > The problem is dra74x_boards_compat though: > > > > > > static const char *dra74x_boards_compat[] __initconst = { > > > ... > > > > > > *dra74x_boards_compat is const, but dra74x_boards_compat isn't, so > > > either the variable must go into __initdata or it must be declared as: > > > > > > static const char * const dra74x_boards_compat[] __initconst = { > > > ... > > > > Ah OK. > > > > > (but then I guess you get another warning because struct machine_desc's > > > dt_compat is declared as > > > > > > const char **dt_compat; > > > > > > .) > > > > > > With the patch below, arch/arm/mach-omap2/board-generic.c compiles just > > > fine. Don't know yet if the additional const in <asm/mach_desc.h> is > > > problematic ... > > > > Yes OK thanks. It Would be nice to have those as __initconst to discard > > the unused ones. > __initdata is discarded, too, but I already send a patch that adds the > additional consts. On top of this one the patch from this thread is > fine. OK great thanks. I'll apply both into omap-for-v3.18/fixes-not-urgent. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello Tony,
On Thu, Sep 11, 2014 at 12:47:17PM -0700, Tony Lindgren wrote:
> OK great thanks. I'll apply both into omap-for-v3.18/fixes-not-urgent.
I would have put "make of_device_ids const" into cleanups, but that's up
to you.
Best regards
Uwe
* Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [140911 12:53]: > Hello Tony, > > On Thu, Sep 11, 2014 at 12:47:17PM -0700, Tony Lindgren wrote: > > OK great thanks. I'll apply both into omap-for-v3.18/fixes-not-urgent. > I would have put "make of_device_ids const" into cleanups, but that's up > to you. Yes that would have worked too but already applied and building randconfigs :) Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arc/include/asm/mach_desc.h b/arch/arc/include/asm/mach_desc.h index e8993a2be6c2..f4a7bc8d8967 100644 --- a/arch/arc/include/asm/mach_desc.h +++ b/arch/arc/include/asm/mach_desc.h @@ -35,7 +35,7 @@ */ struct machine_desc { const char *name; - const char **dt_compat; + const char *const *dt_compat; void (*init_early)(void); void (*init_irq)(void); diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 5827abb080e4..0b311d51425f 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c @@ -43,7 +43,7 @@ static void __init omap_generic_init(void) } #ifdef CONFIG_SOC_OMAP2420 -static const char *omap242x_boards_compat[] __initconst = { +static const char *const omap242x_boards_compat[] __initconst = { "ti,omap2420", NULL, }; @@ -62,7 +62,7 @@ MACHINE_END #endif #ifdef CONFIG_SOC_OMAP2430 -static const char *omap243x_boards_compat[] __initconst = { +static const char *const omap243x_boards_compat[] __initconst = { "ti,omap2430", NULL, }; @@ -81,7 +81,7 @@ MACHINE_END #endif #ifdef CONFIG_ARCH_OMAP3 -static const char *omap3_boards_compat[] __initconst = { +static const char *const omap3_boards_compat[] __initconst = { "ti,omap3430", "ti,omap3", NULL, @@ -100,7 +100,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") .restart = omap3xxx_restart, MACHINE_END -static const char *omap36xx_boards_compat[] __initconst = { +static const char *const omap36xx_boards_compat[] __initconst = { "ti,omap36xx", NULL, }; @@ -118,7 +118,7 @@ DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)") .restart = omap3xxx_restart, MACHINE_END -static const char *omap3_gp_boards_compat[] __initconst = { +static const char *const omap3_gp_boards_compat[] __initconst = { "ti,omap3-beagle", "timll,omap3-devkit8000", NULL, @@ -137,7 +137,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened Device Tree)") .restart = omap3xxx_restart, MACHINE_END -static const char *am3517_boards_compat[] __initconst = { +static const char *const am3517_boards_compat[] __initconst = { "ti,am3517", NULL, }; @@ -157,7 +157,7 @@ MACHINE_END #endif #ifdef CONFIG_SOC_AM33XX -static const char *am33xx_boards_compat[] __initconst = { +static const char *const am33xx_boards_compat[] __initconst = { "ti,am33xx", NULL, }; @@ -177,7 +177,7 @@ MACHINE_END #endif #ifdef CONFIG_ARCH_OMAP4 -static const char *omap4_boards_compat[] __initconst = { +static const char *const omap4_boards_compat[] __initconst = { "ti,omap4460", "ti,omap4430", "ti,omap4", @@ -199,7 +199,7 @@ MACHINE_END #endif #ifdef CONFIG_SOC_OMAP5 -static const char *omap5_boards_compat[] __initconst = { +static const char *const omap5_boards_compat[] __initconst = { "ti,omap5432", "ti,omap5430", "ti,omap5", @@ -221,7 +221,7 @@ MACHINE_END #endif #ifdef CONFIG_SOC_AM43XX -static const char *am43_boards_compat[] __initconst = { +static const char *const am43_boards_compat[] __initconst = { "ti,am4372", "ti,am43", NULL, @@ -240,7 +240,7 @@ MACHINE_END #endif #ifdef CONFIG_SOC_DRA7XX -static const char *dra74x_boards_compat[] __initconst = { +static const char *const dra74x_boards_compat[] __initconst = { "ti,dra742", "ti,dra7", NULL, @@ -259,7 +259,7 @@ DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)") .restart = omap44xx_restart, MACHINE_END -static const char *dra72x_boards_compat[] __initconst = { +static const char *const dra72x_boards_compat[] __initconst = { "ti,dra722", NULL, };