From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754542AbdKJWg4 (ORCPT ); Fri, 10 Nov 2017 17:36:56 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:42052 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751041AbdKJWgz (ORCPT ); Fri, 10 Nov 2017 17:36:55 -0500 Date: Fri, 10 Nov 2017 14:36:46 -0800 From: "Paul E. McKenney" To: Jason Baron Cc: Fengguang Wu , linux-kernel@vger.kernel.org, Linus Torvalds , Peter Zijlstra , Ingo Molnar , Marc Zyngier , Paolo Bonzini , Thomas Gleixner , Steven Rostedt , Josh Triplett Subject: Re: [jump_label_test] WARNING: CPU: 0 PID: 1 at kernel/jump_label.c:761 jump_label_test+0x63/0xab Reply-To: paulmck@linux.vnet.ibm.com References: <20171107092756.5gh7zpml7qz2bevb@wfg-t540p.sh.intel.com> <20171108070105.fxwqqw3jogr4gq4z@wfg-t540p.sh.intel.com> <20171109205622.GM3624@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-TM-AS-GCONF: 00 x-cbid: 17111022-0036-0000-0000-0000028A29A0 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00008046; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000239; SDB=6.00944049; UDB=6.00476366; IPR=6.00724331; BA=6.00005687; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017958; XFM=3.00000015; UTC=2017-11-10 22:36:51 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17111022-0037-0000-0000-000042585E14 Message-Id: <20171110223646.GQ3624@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2017-11-10_11:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=2 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000 definitions=main-1711100309 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 10, 2017 at 04:32:45PM -0500, Jason Baron wrote: > > On 11/09/2017 03:56 PM, Paul E. McKenney wrote: > > On Thu, Nov 09, 2017 at 03:13:24PM -0500, Jason Baron wrote: > >> 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". > > > > Just to be clear, this combination of parameters says to start the test > > -after- shutting down the system, which should not be expected to do > > anything useful. > > > >> 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. > > > > Alternatively, rcuperf (and rcutorture and locktorture) could refused > > to power off the system until the system state reaches SYSTEM_RUNNING. > > Indeed, I think this may make more sense since there may be other code > that depends on SYSTEM_POWER_OFF state coming after SYSTEM_RUNNING. So > if you are ok with this, I can prepare that change instead. Please feel free to send a patch. Ah, one alternative would be to make kernel_power_off() do the check. Or maybe better yet, kernel_shutdown_prepare(). Thanx, Paul > Thanks, > > -Jason > > > > That said, I am quite happy to have it fixed elsewhere. ;-) > > > > Thanx, Paul > > > >> 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 > >>>>> > >>>> > >> > > >