Re: [PATCH -next] init/main: Init jump_labels before they are used to build zonelists
From: Vlastimil Babka
Date: Tue Jan 17 2017 - 08:07:58 EST
[+CC PeterZ]
On 01/17/2017 01:56 PM, Stafford Horne wrote:
> A recent change in -next introduced static_keys in init zonelists,
> details are:
>
> Author: Vlastimil Babka <vbabka@xxxxxxx>
> Date: Thu Jan 12 12:19:03 2017 +1100
> commit f5adbdff6a1c40e19 ("mm, page_alloc: convert
> page_group_by_mobility_disable to static key")
>
> This causes the following warning in openrisc as reported by Guenter,
> and repoduced by me.
>
> WARNING: CPU: 0 PID: 0 at ./include/linux/jump_label.h:198 0xc02d758c
> static_key_slow_inc used before call to jump_label_init
>
> This fixes this by initialized jump_labels even earlier, I am suprized the
> issue is not showing up in other platforms yet.
AFAICS it depends on how much memory is available at that point. But
maybe I just missed the warning somehow.
Anyway I'm not sure if this patch is safe. Hopefully Peter can judge
this better...
> Cc: Vlastimil Babka <vbabka@xxxxxxx>
> Signed-off-by: Stafford Horne <shorne@xxxxxxxxx>
> ---
> init/main.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/init/main.c b/init/main.c
> index 8b1adb6e..d1ca7cb 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -513,6 +513,7 @@ asmlinkage __visible void __init start_kernel(void)
> boot_cpu_state_init();
> smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
>
> + jump_label_init();
> build_all_zonelists(NULL, NULL);
> page_alloc_init();
>
> @@ -526,8 +527,6 @@ asmlinkage __visible void __init start_kernel(void)
> parse_args("Setting init args", after_dashes, NULL, 0, -1, -1,
> NULL, set_init_arg);
>
> - jump_label_init();
> -
> /*
> * These use large bootmem allocations and must precede
> * kmem_cache_init()
>