[PATCH] ARM: appropriate __init annotation for const data

Nicolas Pitre nicolas.pitre at linaro.org
Sun Jul 26 21:00:17 PDT 2015


Well... The kbuild test robot reports section mismatch for some machines 
with this patch applied.  I fail to understand why.  Unless someone 
else figures out what's going on, you should probably drop this patch 
for now.


On Fri, 24 Jul 2015, Nicolas Pitre wrote:

> 
> Init data marked const should be annotated with __initconst for
> correctness and not __initdata.  This also fixes LTO builds that
> otherwise fails with section mismatch errors.
> 
> Signed-off-by: Nicolas Pitre <nico at linaro.org>
> 
> diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c
> index 4e9837ded9..87eb359048 100644
> --- a/arch/arm/mach-cns3xxx/core.c
> +++ b/arch/arm/mach-cns3xxx/core.c
> @@ -392,7 +392,7 @@ static void __init cns3xxx_init(void)
>                          cns3xxx_auxdata, NULL);
>  }
>  
> -static const char *cns3xxx_dt_compat[] __initdata = {
> +static const char *cns3xxx_dt_compat[] __initconst = {
>  	"cavium,cns3410",
>  	"cavium,cns3420",
>  	NULL,
> diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
> index 3b8740c083..676997895e 100644
> --- a/arch/arm/mach-davinci/da850.c
> +++ b/arch/arm/mach-davinci/da850.c
> @@ -715,7 +715,7 @@ const short da850_lcdcntl_pins[] __initconst = {
>  	-1
>  };
>  
> -const short da850_vpif_capture_pins[] __initdata = {
> +const short da850_vpif_capture_pins[] __initconst = {
>  	DA850_VPIF_DIN0, DA850_VPIF_DIN1, DA850_VPIF_DIN2, DA850_VPIF_DIN3,
>  	DA850_VPIF_DIN4, DA850_VPIF_DIN5, DA850_VPIF_DIN6, DA850_VPIF_DIN7,
>  	DA850_VPIF_DIN8, DA850_VPIF_DIN9, DA850_VPIF_DIN10, DA850_VPIF_DIN11,
> @@ -725,7 +725,7 @@ const short da850_vpif_capture_pins[] __initdata = {
>  	-1
>  };
>  
> -const short da850_vpif_display_pins[] __initdata = {
> +const short da850_vpif_display_pins[] __initconst = {
>  	DA850_VPIF_DOUT0, DA850_VPIF_DOUT1, DA850_VPIF_DOUT2, DA850_VPIF_DOUT3,
>  	DA850_VPIF_DOUT4, DA850_VPIF_DOUT5, DA850_VPIF_DOUT6, DA850_VPIF_DOUT7,
>  	DA850_VPIF_DOUT8, DA850_VPIF_DOUT9, DA850_VPIF_DOUT10,
> diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
> index 438f68547f..33c3438235 100644
> --- a/arch/arm/mach-davinci/da8xx-dt.c
> +++ b/arch/arm/mach-davinci/da8xx-dt.c
> @@ -59,7 +59,7 @@ static void __init da850_init_machine(void)
>  
>  }
>  
> -static const char *da850_boards_compat[] __initdata = {
> +static const char *da850_boards_compat[] __initconst = {
>  	"enbw,cmc",
>  	"ti,da850-evm",
>  	"ti,da850",
> diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c
> index 7858d5b6f6..d3c6cf1ef2 100644
> --- a/arch/arm/mach-lpc32xx/phy3250.c
> +++ b/arch/arm/mach-lpc32xx/phy3250.c
> @@ -248,7 +248,7 @@ static void __init lpc3250_machine_init(void)
>  			     lpc32xx_auxdata_lookup, NULL);
>  }
>  
> -static char const *lpc32xx_dt_compat[] __initdata = {
> +static const char *lpc32xx_dt_compat[] __initconst = {
>  	"nxp,lpc3220",
>  	"nxp,lpc3230",
>  	"nxp,lpc3240",
> diff --git a/arch/arm/mach-mmp/mmp-dt.c b/arch/arm/mach-mmp/mmp-dt.c
> index b2296c9309..2dde9ccee9 100644
> --- a/arch/arm/mach-mmp/mmp-dt.c
> +++ b/arch/arm/mach-mmp/mmp-dt.c
> @@ -20,12 +20,12 @@
>  
>  extern void __init mmp_dt_init_timer(void);
>  
> -static const char *pxa168_dt_board_compat[] __initdata = {
> +static const char *pxa168_dt_board_compat[] __initconst = {
>  	"mrvl,pxa168-aspenite",
>  	NULL,
>  };
>  
> -static const char *pxa910_dt_board_compat[] __initdata = {
> +static const char *pxa910_dt_board_compat[] __initconst = {
>  	"mrvl,pxa910-dkb",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-mmp/mmp2-dt.c b/arch/arm/mach-mmp/mmp2-dt.c
> index 998c0f533a..5f305f3cc5 100644
> --- a/arch/arm/mach-mmp/mmp2-dt.c
> +++ b/arch/arm/mach-mmp/mmp2-dt.c
> @@ -30,7 +30,7 @@ static void __init mmp_init_time(void)
>  	of_clk_init(NULL);
>  }
>  
> -static const char *mmp2_dt_board_compat[] __initdata = {
> +static const char *mmp2_dt_board_compat[] __initconst = {
>  	"mrvl,mmp2-brownstone",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
> index 2e7cec86e5..0c352bff67 100644
> --- a/arch/arm/mach-mxs/mach-mxs.c
> +++ b/arch/arm/mach-mxs/mach-mxs.c
> @@ -528,7 +528,7 @@ static void mxs_restart(enum reboot_mode mode, const char *cmd)
>  	soft_restart(0);
>  }
>  
> -static const char *mxs_dt_compat[] __initdata = {
> +static const char *mxs_dt_compat[] __initconst = {
>  	"fsl,imx28",
>  	"fsl,imx23",
>  	NULL,
> diff --git a/arch/arm/mach-omap2/vc.c b/arch/arm/mach-omap2/vc.c
> index 076fd20d7e..c9ae7bed68 100644
> --- a/arch/arm/mach-omap2/vc.c
> +++ b/arch/arm/mach-omap2/vc.c
> @@ -563,7 +563,7 @@ struct i2c_init_data {
>  	u8 hsscll_12;
>  };
>  
> -static const __initdata struct i2c_init_data omap4_i2c_timing_data[] = {
> +static const struct i2c_init_data omap4_i2c_timing_data[] __initconst = {
>  	{
>  		.load = 50,
>  		.loadbits = 0x3,
> diff --git a/arch/arm/mach-omap2/voltagedomains3xxx_data.c b/arch/arm/mach-omap2/voltagedomains3xxx_data.c
> index 261bb7cb4e..99c222ea0e 100644
> --- a/arch/arm/mach-omap2/voltagedomains3xxx_data.c
> +++ b/arch/arm/mach-omap2/voltagedomains3xxx_data.c
> @@ -95,7 +95,7 @@ static struct voltagedomain *voltagedomains_am35xx[] __initdata = {
>  };
>  
>  
> -static const char *sys_clk_name __initdata = "sys_ck";
> +static const char *sys_clk_name __initconst = "sys_ck";
>  
>  void __init omap3xxx_voltagedomains_init(void)
>  {
> diff --git a/arch/arm/mach-omap2/voltagedomains44xx_data.c b/arch/arm/mach-omap2/voltagedomains44xx_data.c
> index 48b22a0a0c..c98c36f629 100644
> --- a/arch/arm/mach-omap2/voltagedomains44xx_data.c
> +++ b/arch/arm/mach-omap2/voltagedomains44xx_data.c
> @@ -92,7 +92,7 @@ static struct voltagedomain *voltagedomains_omap4[] __initdata = {
>  	NULL,
>  };
>  
> -static const char *sys_clk_name __initdata = "sys_clkin_ck";
> +static const char *sys_clk_name __initconst = "sys_clkin_ck";
>  
>  void __init omap44xx_voltagedomains_init(void)
>  {
> diff --git a/arch/arm/mach-omap2/voltagedomains54xx_data.c b/arch/arm/mach-omap2/voltagedomains54xx_data.c
> index 33d22b8725..953d7c164d 100644
> --- a/arch/arm/mach-omap2/voltagedomains54xx_data.c
> +++ b/arch/arm/mach-omap2/voltagedomains54xx_data.c
> @@ -78,7 +78,7 @@ static struct voltagedomain *voltagedomains_omap5[] __initdata = {
>  	NULL,
>  };
>  
> -static const char *sys_clk_name __initdata = "sys_clkin";
> +static const char *sys_clk_name __initconst = "sys_clkin";
>  
>  void __init omap54xx_voltagedomains_init(void)
>  {
> diff --git a/arch/arm/mach-pxa/pxa-dt.c b/arch/arm/mach-pxa/pxa-dt.c
> index 7e0e5bd0c9..0aa1e3ebd4 100644
> --- a/arch/arm/mach-pxa/pxa-dt.c
> +++ b/arch/arm/mach-pxa/pxa-dt.c
> @@ -39,7 +39,7 @@ static void __init pxa3xx_dt_init(void)
>  			     pxa3xx_auxdata_lookup, NULL);
>  }
>  
> -static const char *pxa3xx_dt_board_compat[] __initdata = {
> +static const char *pxa3xx_dt_board_compat[] __initconst = {
>  	"marvell,pxa300",
>  	"marvell,pxa310",
>  	"marvell,pxa320",
> diff --git a/arch/arm/mach-s3c24xx/mach-s3c2416-dt.c b/arch/arm/mach-s3c24xx/mach-s3c2416-dt.c
> index f886478b88..8d5acf1675 100644
> --- a/arch/arm/mach-s3c24xx/mach-s3c2416-dt.c
> +++ b/arch/arm/mach-s3c24xx/mach-s3c2416-dt.c
> @@ -39,7 +39,7 @@ static void __init s3c2416_dt_machine_init(void)
>  	s3c_pm_init();
>  }
>  
> -static char const *s3c2416_dt_compat[] __initdata = {
> +static const char *s3c2416_dt_compat[] __initconst = {
>  	"samsung,s3c2416",
>  	"samsung,s3c2450",
>  	NULL
> diff --git a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> index 2fddf38192..ba122faef2 100644
> --- a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> +++ b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> @@ -61,7 +61,7 @@ static void s3c64xx_dt_restart(enum reboot_mode mode, const char *cmd)
>  	soft_restart(0);
>  }
>  
> -static char const *s3c64xx_dt_compat[] __initdata = {
> +static const char *s3c64xx_dt_compat[] __initconst = {
>  	"samsung,s3c6400",
>  	"samsung,s3c6410",
>  	NULL
> diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c
> index bf37e3c532..e67d24c073 100644
> --- a/arch/arm/mach-shmobile/board-armadillo800eva.c
> +++ b/arch/arm/mach-shmobile/board-armadillo800eva.c
> @@ -1348,7 +1348,7 @@ static void eva_restart(enum reboot_mode mode, const char *cmd)
>  	writel((1 << 31), RESCNT2);
>  }
>  
> -static const char *eva_boards_compat_dt[] __initdata = {
> +static const char *eva_boards_compat_dt[] __initconst = {
>  	"renesas,armadillo800eva",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/board-bockw-reference.c b/arch/arm/mach-shmobile/board-bockw-reference.c
> index 9a74efda3d..820c744260 100644
> --- a/arch/arm/mach-shmobile/board-bockw-reference.c
> +++ b/arch/arm/mach-shmobile/board-bockw-reference.c
> @@ -72,7 +72,7 @@ static void __init bockw_init(void)
>  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>  }
>  
> -static const char *bockw_boards_compat_dt[] __initdata = {
> +static const char *bockw_boards_compat_dt[] __initconst = {
>  	"renesas,bockw-reference",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/board-bockw.c b/arch/arm/mach-shmobile/board-bockw.c
> index 25558d1f41..d266b40dbe 100644
> --- a/arch/arm/mach-shmobile/board-bockw.c
> +++ b/arch/arm/mach-shmobile/board-bockw.c
> @@ -723,7 +723,7 @@ static void __init bockw_init_late(void)
>  	ADD_USB_FUNC_DEVICE_IF_POSSIBLE();
>  }
>  
> -static const char *bockw_boards_compat_dt[] __initdata = {
> +static const char *bockw_boards_compat_dt[] __initconst = {
>  	"renesas,bockw",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c
> index 260d8319fd..17f3e6abb0 100644
> --- a/arch/arm/mach-shmobile/board-kzm9g.c
> +++ b/arch/arm/mach-shmobile/board-kzm9g.c
> @@ -898,7 +898,7 @@ static void kzm9g_restart(enum reboot_mode mode, const char *cmd)
>  	writel((1 << 31), RESCNT2);
>  }
>  
> -static const char *kzm9g_boards_compat_dt[] __initdata = {
> +static const char *kzm9g_boards_compat_dt[] __initconst = {
>  	"renesas,kzm9g",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/board-marzen-reference.c b/arch/arm/mach-shmobile/board-marzen-reference.c
> index b15eb92326..0fe127c625 100644
> --- a/arch/arm/mach-shmobile/board-marzen-reference.c
> +++ b/arch/arm/mach-shmobile/board-marzen-reference.c
> @@ -38,7 +38,7 @@ static void __init marzen_init(void)
>  	r8a7779_init_irq_extpin_dt(1); /* IRQ1 as individual interrupt */
>  }
>  
> -static const char *marzen_boards_compat_dt[] __initdata = {
> +static const char *marzen_boards_compat_dt[] __initconst = {
>  	"renesas,marzen",
>  	"renesas,marzen-reference",
>  	NULL,
> diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
> index 51db288f19..0660a64299 100644
> --- a/arch/arm/mach-shmobile/board-marzen.c
> +++ b/arch/arm/mach-shmobile/board-marzen.c
> @@ -330,7 +330,7 @@ static void __init marzen_init(void)
>  	platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
>  }
>  
> -static const char *marzen_boards_compat_dt[] __initdata = {
> +static const char *marzen_boards_compat_dt[] __initconst = {
>          "renesas,marzen",
>          NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/setup-r7s72100.c b/arch/arm/mach-shmobile/setup-r7s72100.c
> index 171174777b..7f4cd26a52 100644
> --- a/arch/arm/mach-shmobile/setup-r7s72100.c
> +++ b/arch/arm/mach-shmobile/setup-r7s72100.c
> @@ -20,7 +20,7 @@
>  
>  #include "common.h"
>  
> -static const char *r7s72100_boards_compat_dt[] __initdata = {
> +static const char *r7s72100_boards_compat_dt[] __initconst = {
>  	"renesas,r7s72100",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/setup-r8a73a4.c b/arch/arm/mach-shmobile/setup-r8a73a4.c
> index 446cee6119..6a86b929b8 100644
> --- a/arch/arm/mach-shmobile/setup-r8a73a4.c
> +++ b/arch/arm/mach-shmobile/setup-r8a73a4.c
> @@ -20,7 +20,7 @@
>  
>  #include "common.h"
>  
> -static const char *r8a73a4_boards_compat_dt[] __initdata = {
> +static const char *r8a73a4_boards_compat_dt[] __initconst = {
>  	"renesas,r8a73a4",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
> index 00291cc177..0c59ca1232 100644
> --- a/arch/arm/mach-shmobile/setup-r8a7740.c
> +++ b/arch/arm/mach-shmobile/setup-r8a7740.c
> @@ -787,7 +787,7 @@ static void __init r8a7740_generic_init(void)
>  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>  }
>  
> -static const char *r8a7740_boards_compat_dt[] __initdata = {
> +static const char *r8a7740_boards_compat_dt[] __initconst = {
>  	"renesas,r8a7740",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/setup-r8a7778.c b/arch/arm/mach-shmobile/setup-r8a7778.c
> index c49aa094fe..36c7c05afe 100644
> --- a/arch/arm/mach-shmobile/setup-r8a7778.c
> +++ b/arch/arm/mach-shmobile/setup-r8a7778.c
> @@ -615,7 +615,7 @@ void __init r8a7778_init_irq_dt(void)
>  	iounmap(base);
>  }
>  
> -static const char *r8a7778_compat_dt[] __initdata = {
> +static const char *r8a7778_compat_dt[] __initconst = {
>  	"renesas,r8a7778",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/setup-r8a7779.c b/arch/arm/mach-shmobile/setup-r8a7779.c
> index c03e562be1..2321c9de22 100644
> --- a/arch/arm/mach-shmobile/setup-r8a7779.c
> +++ b/arch/arm/mach-shmobile/setup-r8a7779.c
> @@ -756,7 +756,7 @@ u32 __init r8a7779_read_mode_pins(void)
>  	return mode;
>  }
>  
> -static const char *r8a7779_compat_dt[] __initdata = {
> +static const char *r8a7779_compat_dt[] __initconst = {
>  	"renesas,r8a7779",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/setup-r8a7791.c b/arch/arm/mach-shmobile/setup-r8a7791.c
> index ef8eb3af58..c0c6764747 100644
> --- a/arch/arm/mach-shmobile/setup-r8a7791.c
> +++ b/arch/arm/mach-shmobile/setup-r8a7791.c
> @@ -23,7 +23,7 @@
>  #include "r8a7791.h"
>  #include "rcar-gen2.h"
>  
> -static const char *r8a7791_boards_compat_dt[] __initdata = {
> +static const char *r8a7791_boards_compat_dt[] __initconst = {
>  	"renesas,r8a7791",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c
> index fb2ab7590a..cd267299e7 100644
> --- a/arch/arm/mach-shmobile/setup-sh73a0.c
> +++ b/arch/arm/mach-shmobile/setup-sh73a0.c
> @@ -794,7 +794,7 @@ static void __init sh73a0_generic_init(void)
>  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>  }
>  
> -static const char *sh73a0_boards_compat_dt[] __initdata = {
> +static const char *sh73a0_boards_compat_dt[] __initconst = {
>  	"renesas,sh73a0",
>  	NULL,
>  };
> diff --git a/arch/arm/mach-spear/time.c b/arch/arm/mach-spear/time.c
> index 26fda4ed4d..a92b1aab74 100644
> --- a/arch/arm/mach-spear/time.c
> +++ b/arch/arm/mach-spear/time.c
> @@ -193,7 +193,7 @@ static void __init spear_clockevent_init(int irq)
>  	setup_irq(irq, &spear_timer_irq);
>  }
>  
> -const static struct of_device_id timer_of_match[] __initconst = {
> +static const struct of_device_id timer_of_match[] __initconst = {
>  	{ .compatible = "st,spear-timer", },
>  	{ },
>  };
> diff --git a/arch/arm/mach-sti/board-dt.c b/arch/arm/mach-sti/board-dt.c
> index b373acade3..255a267bb8 100644
> --- a/arch/arm/mach-sti/board-dt.c
> +++ b/arch/arm/mach-sti/board-dt.c
> @@ -14,7 +14,7 @@
>  
>  #include "smp.h"
>  
> -static const char *stih41x_dt_match[] __initdata = {
> +static const char *stih41x_dt_match[] __initconst = {
>  	"st,stih415",
>  	"st,stih416",
>  	"st,stih407",
> 



More information about the linux-arm-kernel mailing list