All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Baron <jbaron@akamai.com>
To: Fengguang Wu <fengguang.wu@intel.com>
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@kernel.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Steven Rostedt <rostedt@goodmis.org>,
	paulmck@linux.vnet.ibm.com, Josh Triplett <josh@joshtriplett.org>
Subject: Re: [jump_label_test] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761 jump_label_test+0x63/0xab
Date: Thu, 9 Nov 2017 15:13:24 -0500	[thread overview]
Message-ID: <e4a589d4-18c2-a827-edc7-20badcc6d1bf@akamai.com> (raw)
In-Reply-To: <20171108070105.fxwqqw3jogr4gq4z@wfg-t540p.sh.intel.com>

On 11/08/2017 02:01 AM, Fengguang Wu wrote:
> On Tue, Nov 07, 2017 at 05:17:38PM -0500, Jason Baron wrote:
>>
>>
>> On 11/07/2017 04:27 AM, Fengguang Wu wrote:
>>> Hello,
>>>
>>> FYI this happens in v4.14-rc8 -- it's not necessarily a new bug.
>>>
>>
>> Hi,
>>
>> So this looks like the branches aren't getting updated because the
>> WARN_ON()s are all from the second half of the test loop (where we
>> actually change the branch direction).
>>
>> I ran a kernel with a very similar .config on qemu-kvm/i386 as well, and
>> was not able to trigger the WARN_ON(). Do you know if it happens on
>> every boot or if there is some boot timing involved?
>>
>> You could try the patch below, to start to narrow down if this is a
>> problem with jump table setup or with the update process.
> 
> The problem disappears after this patch.
> 

Ok, I can reproduce the issue if I enable CONFIG_RCU_PERF_TEST and add
something like the following to the command-line: "rcuperf.shutdown=1
rcuperf.holdoff=2".

The issue is that the core jump label code uses kernel_text_address() to
ensure that it does not update branches in '__init' text after it has
been freed. The check uses 'system_state' variable from
core_kernel_text() to make the determination:

        if (system_state < SYSTEM_RUNNING &&

            init_kernel_text(addr))

                return 1;

        return 0;

So the general idea is that system_state is set to SYSTEM_RUNNING after
the __init text sections are freed, and thus we avoid updating jump
label branches.

However, in the case that rcuperf is enabled, it will call
kernel_power_off() which in turn sets system_state to SYSTEM_POWER_OFF
(which is > SYSTEM_RUNNING), potentially before the the initcalls have
even been run. In this case, the jump label selftests called from __init
via a late_initcall() can not update the branch direction, and thus we
get the above warnings (due to the fact that the branches don't get
udpated).

So this is really not a new issue and really is only triggered in a
debug setup, so I don't think this is 4.14 material in any way...

One way to clean this up is to add a call into the jump label code
similar to what ftrace does in ftrace_free_init_mem(). This gets called
after the initcalls have run but before they are freed. Something like
below.

Thanks,

-Jason

diff --git a/include/linux/jump_label.h b/include/linux/jump_label.h
index 3b7675b..0202c58 100644
--- a/include/linux/jump_label.h
+++ b/include/linux/jump_label.h
@@ -158,6 +158,7 @@ extern void arch_jump_label_transform(struct
jump_entry *entry,
 extern void arch_jump_label_transform_static(struct jump_entry *entry,
                                             enum jump_label_type type);
 extern int jump_label_text_reserved(void *start, void *end);
+extern void jump_label_invalidate_init(struct module *mod);
 extern void static_key_slow_inc(struct static_key *key);
 extern void static_key_slow_dec(struct static_key *key);
 extern void jump_label_apply_nops(struct module *mod);
@@ -235,6 +236,8 @@ static inline int jump_label_apply_nops(struct
module *mod)
        return 0;
 }

+static inline void jump_label_invalidate_init(struct module *mod) {}
+
 static inline void static_key_enable(struct static_key *key)
 {
        STATIC_KEY_CHECK_USE();
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 4b484ab..23e3cba 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -471,6 +471,7 @@ extern unsigned long long memparse(const char *ptr,
char **retptr);
 extern bool parse_option_str(const char *str, const char *option);
 extern char *next_arg(char *args, char **param, char **val);

+extern int init_kernel_text(unsigned long addr);
 extern int core_kernel_text(unsigned long addr);
 extern int core_kernel_data(unsigned long addr);
 extern int __kernel_text_address(unsigned long addr);
diff --git a/init/main.c b/init/main.c
index 0ee9c686..f4e5ab5 100644
--- a/init/main.c
+++ b/init/main.c
@@ -994,6 +994,7 @@ static int __ref kernel_init(void *unused)
        /* need to finish all async __init code before freeing the memory */
        async_synchronize_full();
        ftrace_free_init_mem();
+       jump_label_invalidate_init(NULL);
        free_initmem();
        mark_readonly();
        system_state = SYSTEM_RUNNING;
diff --git a/kernel/extable.c b/kernel/extable.c
index 9aa1cc4..1d69178 100644
--- a/kernel/extable.c
+++ b/kernel/extable.c
@@ -62,7 +62,7 @@ const struct exception_table_entry
*search_exception_tables(unsigned long addr)
        return e;
 }

-static inline int init_kernel_text(unsigned long addr)
+int init_kernel_text(unsigned long addr)
 {
        if (addr >= (unsigned long)_sinittext &&
            addr < (unsigned long)_einittext)
diff --git a/kernel/jump_label.c b/kernel/jump_label.c
index 0bf2e8f5..3f804f4 100644
--- a/kernel/jump_label.c
+++ b/kernel/jump_label.c
@@ -359,16 +359,44 @@ static void __jump_label_update(struct static_key
*key,
                                struct jump_entry *stop)
 {
        for (; (entry < stop) && (jump_entry_key(entry) == key); entry++) {
-               /*
-                * entry->code set to 0 invalidates module init text
sections
-                * kernel_text_address() verifies we are not in core kernel
-                * init code, see jump_label_invalidate_module_init().
-                */
-               if (entry->code && kernel_text_address(entry->code))
+               /* entry->code set to 0 invalidates __init text sections */
+               if (entry->code)
                        arch_jump_label_transform(entry,
jump_label_type(entry));
        }
 }

+void jump_label_invalidate_init(struct module *mod)
+{
+       struct jump_entry *iter_start = mod->jump_entries;
+       struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
+       struct jump_entry *iter;
+
+       if (mod) {
+               iter_start = mod->jump_entries;
+               iter_stop = iter_start + mod->num_jump_entries;
+       } else {
+               jump_label_lock();
+               iter_start = __start___jump_table;
+               iter_stop = __stop___jump_table;
+       }
+
+       for (iter = iter_start; iter < iter_stop; iter++) {
+               if (mod) {
+                       if (!within_module_init(iter->code, mod) &&
+                           !within_module_init(iter->target, mod))
+                               continue;
+               } else {
+                       if (!init_kernel_text(iter->code) &&
+                           !init_kernel_text(iter->target))
+                               continue;
+               }
+               iter->code = 0;
+       }
+
+       if (!mod)
+               jump_label_unlock();
+}
+
 void __init jump_label_init(void)
 {
        struct jump_entry *iter_start = __start___jump_table;
@@ -627,18 +655,6 @@ static void jump_label_del_module(struct module *mod)
        }
 }

-static void jump_label_invalidate_module_init(struct module *mod)
-{
-       struct jump_entry *iter_start = mod->jump_entries;
-       struct jump_entry *iter_stop = iter_start + mod->num_jump_entries;
-       struct jump_entry *iter;
-
-       for (iter = iter_start; iter < iter_stop; iter++) {
-               if (within_module_init(iter->code, mod))
-                       iter->code = 0;
-       }
-}
-
 static int
 jump_label_module_notify(struct notifier_block *self, unsigned long val,
                         void *data)
@@ -661,7 +677,7 @@ jump_label_module_notify(struct notifier_block
*self, unsigned long val,
                jump_label_del_module(mod);
                break;
        case MODULE_STATE_LIVE:
-               jump_label_invalidate_module_init(mod);
+               jump_label_invalidate_init(mod);
                break;
        }




> The dmesg is now:
> 
> [    7.342618] IRQ10 -> 0:10
> [    7.343025] IRQ11 -> 0:11
> [    7.343450] IRQ12 -> 0:12
> [    7.343770] IRQ13 -> 0:13
> [    7.344079] IRQ14 -> 0:14
> [    7.344379] IRQ15 -> 0:15
> [    7.344690] .................................... done.
> [    7.345271] Using IPI Shortcut mode
> [    7.345682] sched_clock: Marking stable (7344687295, 0)->(7595176493,
> -250489198)
> [    7.346516] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65b30,
> target: 0xcca65b40
> [    7.347600] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65999,
> target: 0xcca659b8
> [    7.349195] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65c50,
> target: 0xcca65c9a
> [    7.350075] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65bf0,
> target: 0xcca65bf8
> [    7.350963] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65b90,
> target: 0xcca65b98
> [    7.351848] __jump_label_update: key: 0xcd3a0dec, code: 0xcca65b68,
> target: 0xcca65b63
> [    7.353000] jump_label: disable sk_true: cd2adc60
> [    7.353668] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [    7.354852] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [    7.356021] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [    7.357023] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [    7.357970] jump_label: enable sk_false: cda8ef5c
> [    7.358682] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [    7.359858] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [    7.361049] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [    7.362235] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [    7.363408] jump_label: enable sk_true: cd2adc60
> [    7.364100] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [    7.365282] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [    7.366465] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [    7.367639] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [    7.368818] jump_label: disable sk_false: cda8ef5c
> [    7.369538] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [    7.370716] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [    7.371900] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [    7.373087] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [    7.374275] jump_label: disable sk_true: cd2adc60
> [    7.374991] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [    7.376175] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [    7.377368] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [    7.378565] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [    7.379750] jump_label: enable sk_false: cda8ef5c
> [    7.380459] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [    7.381654] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [    7.382855] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [    7.384046] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [    7.385243] jump_label: enable sk_true: cd2adc60
> [    7.385944] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae3c,
> target: 0xcd31ae9d
> [    7.387109] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add7,
> target: 0xcd31adde
> [    7.388276] __jump_label_update: key: 0xcd2adc60, code: 0xcd31ae35,
> target: 0xcd31ae3c
> [    7.389449] __jump_label_update: key: 0xcd2adc60, code: 0xcd31add2,
> target: 0xcd31ae8f
> [    7.390621] jump_label: disable sk_false: cda8ef5c
> [    7.391337] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae46,
> target: 0xcd31ae4d
> [    7.392509] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ade5,
> target: 0xcd31ae96
> [    7.393973] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31ae41,
> target: 0xcd31aea1
> [    7.395025] __jump_label_update: key: 0xcda8ef5c, code: 0xcd31adde,
> target: 0xcd31ade5
> [    7.398024] debug: unmapping init [mem 0xcd305000-0xcd38ffff]
> [    7.398757] Write protecting the kernel text: 5796k
> [    7.399449] Write protecting the kernel read-only data: 2736k
> 
> Thanks,
> Fengguang
> 
>> Thanks,
>>
>> -Jason
>>
>>
>> diff --git a/kernel/jump_label.c b/kernel/jump_label.c
>> index 0bf2e8f5..433cc94 100644
>> --- a/kernel/jump_label.c
>> +++ b/kernel/jump_label.c
>> @@ -364,8 +364,13 @@ static void __jump_label_update(struct static_key
>> *key,
>>                 * kernel_text_address() verifies we are not in core
>> kernel
>>                 * init code, see jump_label_invalidate_module_init().
>>                 */
>> -               if (entry->code && kernel_text_address(entry->code))
>> +               if (entry->code && kernel_text_address(entry->code)) {
>> +                       printk("%s: key: 0x%lx, code: 0x%lx, target:
>> 0x%lx\n",
>> +                              __func__, (unsigned
>> long)jump_entry_key(entry),
>> +                              (unsigned long)entry->code,
>> +                              (unsigned long)entry->target);
>>                        arch_jump_label_transform(entry,
>> jump_label_type(entry));
>> +               }
>>        }
>> }
>>
>> @@ -752,7 +757,9 @@ static __init int jump_label_test(void)
>>                WARN_ON(static_branch_likely(&sk_false));
>>                WARN_ON(static_branch_unlikely(&sk_false));
>>
>> +               printk("jump_label: disable sk_true: %p\n", &sk_true);
>>                static_branch_disable(&sk_true);
>> +               printk("jump_label: enable sk_false: %p\n", &sk_false);
>>                static_branch_enable(&sk_false);
>>
>>                WARN_ON(static_key_enabled(&sk_true.key) == true);
>> @@ -763,7 +770,9 @@ static __init int jump_label_test(void)
>>                WARN_ON(!static_branch_likely(&sk_false));
>>                WARN_ON(!static_branch_unlikely(&sk_false));
>>
>> +               printk("jump_label: enable sk_true: %p\n", &sk_true);
>>                static_branch_enable(&sk_true);
>> +               printk("jump_label: disable sk_false: %p\n", &sk_false);
>>                static_branch_disable(&sk_false);
>>        }
>>
>>
>>
>>
>>> [   15.214834] IRQ15 -> 0:15
>>> [   15.214834] .................................... done.
>>> [   15.214834] Using IPI Shortcut mode
>>> [   15.214834] sched_clock: Marking stable (15210834346,
>>> 0)->(15797181340, -586346994)
>>> [   17.667168] ------------[ cut here ]------------
>>> [   17.668895] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761
>>> jump_label_test+0x63/0xab
>>> [   17.672346] Modules linked in:
>>> [   17.673475] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.0-rc8 #29
>>> [   17.675724] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   17.678755] task: c0020d00 task.stack: c0022000
>>> [   17.680423] EIP: jump_label_test+0x63/0xab
>>> [   17.681912] EFLAGS: 00210202 CPU: 0
>>> [   17.683206] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [   17.685501] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   17.687787]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   17.689748] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   17.692019] Call Trace:
>>> [   17.692938]  ? do_one_initcall+0x2c/0x13a
>>> [   17.694398]  ? parse_args+0x1af/0x300
>>> [   17.695740]  ? kernel_init_freeable+0xce/0x161
>>> [   17.697370]  ? kernel_init_freeable+0xee/0x161
>>> [   17.698986]  ? rest_init+0xb0/0xb0
>>> [   17.700236]  ? kernel_init+0x5/0xe0
>>> [   17.701513]  ? ret_from_fork+0x19/0x30
>>> [   17.702876] Code: c9 e8 3c 59 7b ff b8 5c cf 08 ca e8 a2 58 7b ff
>>> a1 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85 c0 75 02 0f ff 3e
>>> 8d 74 26 00 <0f> ff e9 35 00 00 00 e9 34 00 00 00 3e 8d 74 26 00 0f
>>> ff b8 60
>>> [   17.709721] ---[ end trace f18711bfa2b1114e ]---
>>> [   17.711418] ------------[ cut here ]------------
>>> [   17.711418] ------------[ cut here ]------------
>>> [   17.713092] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:762
>>> jump_label_test+0x9f/0xab
>>> [   17.716534] Modules linked in:
>>> [   17.717665] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      
>>> 4.14.0-rc8 #29
>>> [   17.720349] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   17.723362] task: c0020d00 task.stack: c0022000
>>> [   17.725004] EIP: jump_label_test+0x9f/0xab
>>> [   17.726516] EFLAGS: 00210202 CPU: 0
>>> [   17.727785] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [   17.730058] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   17.732341]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   17.734300] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   17.736560] Call Trace:
>>> [   17.737476]  ? do_one_initcall+0x2c/0x13a
>>> [   17.738943]  ? parse_args+0x1af/0x300
>>> [   17.740326]  ? kernel_init_freeable+0xce/0x161
>>> [   17.741943]  ? kernel_init_freeable+0xee/0x161
>>> [   17.743571]  ? rest_init+0xb0/0xb0
>>> [   17.744820]  ? kernel_init+0x5/0xe0
>>> [   17.746095]  ? ret_from_fork+0x19/0x30
>>> [   17.747474] Code: 0f ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08
>>> ca e8 f0 58 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86
>>> 0f ff eb 95 <0f> ff eb c7 0f ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9
>>> 25 d4 77
>>> [   17.754356] ---[ end trace f18711bfa2b1114f ]---
>>> [   17.755649] ------------[ cut here ]------------
>>> [   17.755649] ------------[ cut here ]------------
>>> [   17.756863] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:763
>>> jump_label_test+0xa3/0xab
>>> [   17.759289] Modules linked in:
>>> [   17.760082] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      
>>> 4.14.0-rc8 #29
>>> [   17.761983] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   17.764723] task: c0020d00 task.stack: c0022000
>>> [   17.766378] EIP: jump_label_test+0xa3/0xab
>>> [   17.767470] EFLAGS: 00210202 CPU: 0
>>> [   17.769223] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [   17.771188] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   17.773495]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   17.774916] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   17.776576] Call Trace:
>>> [   17.777249]  ? do_one_initcall+0x2c/0x13a
>>> [   17.778318]  ? parse_args+0x1af/0x300
>>> [   17.779292]  ? kernel_init_freeable+0xce/0x161
>>> [   17.780443]  ? kernel_init_freeable+0xee/0x161
>>> [   17.781558]  ? rest_init+0xb0/0xb0
>>> [   17.782463]  ? kernel_init+0x5/0xe0
>>> [   17.783394]  ? ret_from_fork+0x19/0x30
>>> [   17.784376] Code: bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8 f0 58
>>> 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86 0f ff eb 95
>>> 0f ff eb c7 <0f> ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9 25 d4 77 ff
>>> 80 3d a0
>>> [   17.789290] ---[ end trace f18711bfa2b11150 ]---
>>> [   17.790487] ------------[ cut here ]------------
>>> [   17.790487] ------------[ cut here ]------------
>>> [   17.792555] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:764
>>> jump_label_test+0x74/0xab
>>> [   17.796930] Modules linked in:
>>> [   17.798391] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      
>>> 4.14.0-rc8 #29
>>> [   17.801754] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   17.805496] task: c0020d00 task.stack: c0022000
>>> [   17.806702] EIP: jump_label_test+0x74/0xab
>>> [   17.807786] EFLAGS: 00210202 CPU: 0
>>> [   17.808726] EAX: 00000001 EBX: 00000002 ECX: 00000004 EDX: 00000000
>>> [   17.810368] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   17.811994]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   17.813424] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   17.815063] Call Trace:
>>> [   17.815748]  ? do_one_initcall+0x2c/0x13a
>>> [   17.816822]  ? parse_args+0x1af/0x300
>>> [   17.817812]  ? kernel_init_freeable+0xce/0x161
>>> [   17.818986]  ? kernel_init_freeable+0xee/0x161
>>> [   17.820172]  ? rest_init+0xb0/0xb0
>>> [   17.821081]  ? kernel_init+0x5/0xe0
>>> [   17.822033]  ? ret_from_fork+0x19/0x30
>>> [   17.823051] Code: 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85
>>> c0 75 02 0f ff 3e 8d 74 26 00 0f ff e9 35 00 00 00 e9 34 00 00 00 3e
>>> 8d 74 26 00 <0f> ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8
>>> f0 58 7b
>>> [   17.828103] ---[ end trace f18711bfa2b11151 ]---
>>> [   17.829379] ------------[ cut here ]------------
>>> [   17.829379] ------------[ cut here ]------------
>>> [   17.830622] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761
>>> jump_label_test+0x63/0xab
>>> [   17.833131] Modules linked in:
>>> [   17.833973] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      
>>> 4.14.0-rc8 #29
>>> [   17.835923] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   17.838126] task: c0020d00 task.stack: c0022000
>>> [   17.839355] EIP: jump_label_test+0x63/0xab
>>> [   17.840447] EFLAGS: 00210202 CPU: 0
>>> [   17.841384] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [   17.843034] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   17.844698]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   17.846127] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   17.847794] Call Trace:
>>> [   17.848472]  ? do_one_initcall+0x2c/0x13a
>>> [   17.849547]  ? parse_args+0x1af/0x300
>>> [   17.850590]  ? kernel_init_freeable+0xce/0x161
>>> [   17.851783]  ? kernel_init_freeable+0xee/0x161
>>> [   17.852977]  ? rest_init+0xb0/0xb0
>>> [   17.854277]  ? kernel_init+0x5/0xe0
>>> [   17.855571]  ? ret_from_fork+0x19/0x30
>>> [   17.856955] Code: c9 e8 3c 59 7b ff b8 5c cf 08 ca e8 a2 58 7b ff
>>> a1 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85 c0 75 02 0f ff 3e
>>> 8d 74 26 00 <0f> ff e9 35 00 00 00 e9 34 00 00 00 3e 8d 74 26 00 0f
>>> ff b8 60
>>> [   17.863904] ---[ end trace f18711bfa2b11152 ]---
>>> [   17.865629] ------------[ cut here ]------------
>>> [   17.865629] ------------[ cut here ]------------
>>> [   17.867438] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:762
>>> jump_label_test+0x9f/0xab
>>> [   17.871148] Modules linked in:
>>> [   17.872450] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      
>>> 4.14.0-rc8 #29
>>> [   17.875124] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   17.878364] task: c0020d00 task.stack: c0022000
>>> [   17.880027] EIP: jump_label_test+0x9f/0xab
>>> [   17.881544] EFLAGS: 00210202 CPU: 0
>>> [   17.882901] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [   17.885473] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   17.887934]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   17.890009] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   17.892339] Call Trace:
>>> [   17.893316]  ? do_one_initcall+0x2c/0x13a
>>> [   17.894822]  ? parse_args+0x1af/0x300
>>> [   17.896911]  ? kernel_init_freeable+0xce/0x161
>>> [   17.899626]  ? kernel_init_freeable+0xee/0x161
>>> [   17.902732]  ? rest_init+0xb0/0xb0
>>> [   17.904894]  ? kernel_init+0x5/0xe0
>>> [   17.907031]  ? ret_from_fork+0x19/0x30
>>> [   17.909383] Code: 0f ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08
>>> ca e8 f0 58 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86
>>> 0f ff eb 95 <0f> ff eb c7 0f ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9
>>> 25 d4 77
>>> [   17.928301] ---[ end trace f18711bfa2b11153 ]---
>>> [   17.931515] ------------[ cut here ]------------
>>> [   17.931515] ------------[ cut here ]------------
>>> [   17.943868] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:763
>>> jump_label_test+0xa3/0xab
>>> [   17.950147] Modules linked in:
>>> [   17.952135] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      
>>> 4.14.0-rc8 #29
>>> [   17.956297] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   17.964556] task: c0020d00 task.stack: c0022000
>>> [   17.985804] EIP: jump_label_test+0xa3/0xab
>>> [   17.988269] EFLAGS: 00210202 CPU: 0
>>> [   17.990407] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [   17.996820] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   18.000174]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   18.003505] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   18.007251] Call Trace:
>>> [   18.008897]  ? do_one_initcall+0x2c/0x13a
>>> [   18.016611]  ? parse_args+0x1af/0x300
>>> [   18.018854]  ? kernel_init_freeable+0xce/0x161
>>> [   18.021573]  ? kernel_init_freeable+0xee/0x161
>>> [   18.024418]  ? rest_init+0xb0/0xb0
>>> [   18.026326]  ? kernel_init+0x5/0xe0
>>> [   18.028418]  ? ret_from_fork+0x19/0x30
>>> [   18.031569] Code: bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8 f0 58
>>> 7b ff 4b 74 1a bb 01 00 00 00 e9 6f ff ff ff 0f ff eb 86 0f ff eb 95
>>> 0f ff eb c7 <0f> ff eb c8 31 c0 5b c3 b8 68 bc 8a c9 e9 25 d4 77 ff
>>> 80 3d a0
>>> [   18.050687] ---[ end trace f18711bfa2b11154 ]---
>>> [   18.060661] ------------[ cut here ]------------
>>> [   18.060661] ------------[ cut here ]------------
>>> [   18.064196] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:764
>>> jump_label_test+0x74/0xab
>>> [   18.076475] Modules linked in:
>>> [   18.083657] CPU: 0 PID: 1 Comm: swapper Tainted: G        W      
>>> 4.14.0-rc8 #29
>>> [   18.101662] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
>>> BIOS 1.10.2-1 04/01/2014
>>> [   18.109794] task: c0020d00 task.stack: c0022000
>>> [   18.112995] EIP: jump_label_test+0x74/0xab
>>> [   18.115714] EFLAGS: 00210202 CPU: 0
>>> [   18.118265] EAX: 00000001 EBX: 00000001 ECX: 00000004 EDX: 00000000
>>> [   18.125065] ESI: c9918db6 EDI: 00000000 EBP: 00000000 ESP: c0023f40
>>> [   18.128653]  DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
>>> [   18.130955] CR0: 80050033 CR2: 00000000 CR3: 09991000 CR4: 000006b0
>>> [   18.136512] Call Trace:
>>> [   18.137684]  ? do_one_initcall+0x2c/0x13a
>>> [   18.141253]  ? parse_args+0x1af/0x300
>>> [   18.143612]  ? kernel_init_freeable+0xce/0x161
>>> [   18.146407]  ? kernel_init_freeable+0xee/0x161
>>> [   18.149921]  ? rest_init+0xb0/0xb0
>>> [   18.151599]  ? kernel_init+0x5/0xe0
>>> [   18.153257]  ? ret_from_fork+0x19/0x30
>>> [   18.155487] Code: 60 bc 8a c9 85 c0 74 02 0f ff a1 5c cf 08 ca 85
>>> c0 75 02 0f ff 3e 8d 74 26 00 0f ff e9 35 00 00 00 e9 34 00 00 00 3e
>>> 8d 74 26 00 <0f> ff b8 60 bc 8a c9 e8 6a 58 7b ff b8 5c cf 08 ca e8
>>> f0 58 7b
>>> [   18.167223] ---[ end trace f18711bfa2b11155 ]---
>>>
>>> Attached the full dmesg and kconfig.
>>>
>>> Thanks,
>>> Fengguang
>>>
>>

  parent reply	other threads:[~2017-11-09 20:14 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-07  9:27 [jump_label_test] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761 jump_label_test+0x63/0xab Fengguang Wu
2017-11-07 22:17 ` Jason Baron
2017-11-08  7:01   ` Fengguang Wu
2017-11-08 15:54     ` Jason Baron
2017-11-09 20:13     ` Jason Baron [this message]
2017-11-09 20:56       ` Paul E. McKenney
2017-11-10 21:32         ` Jason Baron
2017-11-10 22:36           ` Paul E. McKenney

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=e4a589d4-18c2-a827-edc7-20badcc6d1bf@akamai.com \
    --to=jbaron@akamai.com \
    --cc=fengguang.wu@intel.com \
    --cc=josh@joshtriplett.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.zyngier@arm.com \
    --cc=mingo@kernel.org \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.