Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752862AbaGZCYJ (ORCPT ); Fri, 25 Jul 2014 22:24:09 -0400 Received: from userp1040.oracle.com ([156.151.31.81]:46477 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751508AbaGZCYH (ORCPT ); Fri, 25 Jul 2014 22:24:07 -0400 Message-ID: <53D31101.8000107@oracle.com> Date: Fri, 25 Jul 2014 22:22:57 -0400 From: Sasha Levin User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Christoph Lameter , akpm@linux-foundation.org CC: Gilad Ben-Yossef , Thomas Gleixner , Tejun Heo , John Stultz , Mike Frysinger , Minchan Kim , Hakan Akkan , Max Krasnyansky , Frederic Weisbecker , "Paul E. McKenney" , linux-kernel@vger.kernel.org, linux-mm@kvack.org, hughd@google.com, viresh.kumar@linaro.org, hpa@zytor.com, mingo@kernel.org, peterz@infradead.org Subject: Re: vmstat: On demand vmstat workers V8 References: In-Reply-To: X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 07/10/2014 10:04 AM, Christoph Lameter wrote: > This patch creates a vmstat shepherd worker that monitors the > per cpu differentials on all processors. If there are differentials > on a processor then a vmstat worker local to the processors > with the differentials is created. That worker will then start > folding the diffs in regular intervals. Should the worker > find that there is no work to be done then it will make the shepherd > worker monitor the differentials again. Hi Christoph, all, This patch doesn't interact well with my fuzzing setup. I'm seeing the following: [ 490.446927] BUG: using __this_cpu_read() in preemptible [00000000] code: kworker/16:1/7368 [ 490.447909] caller is __this_cpu_preempt_check+0x13/0x20 [ 490.448596] CPU: 8 PID: 7368 Comm: kworker/16:1 Not tainted 3.16.0-rc6-next-20140725-sasha-00047-g9eb9a52 #933 [ 490.449847] Workqueue: events vmstat_update [ 490.450558] ffffffff97383bb6 0000000000000000 ffffffff9727df83 ffff8803077cfb68 [ 490.451520] ffffffff95dc96b3 0000000000000008 ffff8803077cfba0 ffffffff92002438 [ 490.452475] ffff8803077cfc80 ffff880be21ea138 ffff8803077cfc80 00000000001e6a48 [ 490.453459] Call Trace: [ 490.453776] dump_stack (lib/dump_stack.c:52) [ 490.454394] check_preemption_disabled (lib/smp_processor_id.c:46) [ 490.455161] __this_cpu_preempt_check (lib/smp_processor_id.c:63) [ 490.455927] refresh_cpu_vm_stats (mm/vmstat.c:492) [ 490.456753] vmstat_update (mm/vmstat.c:1252) [ 490.457463] process_one_work (kernel/workqueue.c:2022 include/linux/jump_label.h:115 include/trace/events/workqueue.h:111 kernel/workqueue.c:2027) [ 490.458159] ? process_one_work (include/linux/workqueue.h:185 kernel/workqueue.c:598 kernel/workqueue.c:625 kernel/workqueue.c:2015) [ 490.458887] worker_thread (include/linux/list.h:188 kernel/workqueue.c:2154) [ 490.459555] ? __schedule (./arch/x86/include/asm/bitops.h:311 include/linux/thread_info.h:91 include/linux/sched.h:2854 kernel/sched/core.c:2825) [ 490.460370] ? process_one_work (kernel/workqueue.c:2098) [ 490.461177] kthread (kernel/kthread.c:207) [ 490.461792] ? flush_kthread_work (kernel/kthread.c:176) [ 490.462529] ret_from_fork (arch/x86/kernel/entry_64.S:348) [ 490.463181] ? flush_kthread_work (kernel/kthread.c:176) [ 490.464008] ------------[ cut here ]------------ [ 490.464613] kernel BUG at mm/vmstat.c:1278! [ 490.465116] invalid opcode: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC [ 490.465981] Dumping ftrace buffer: [ 490.466585] (ftrace buffer empty) [ 490.467030] Modules linked in: [ 490.467429] CPU: 8 PID: 7368 Comm: kworker/16:1 Not tainted 3.16.0-rc6-next-20140725-sasha-00047-g9eb9a52 #933 [ 490.468641] Workqueue: events vmstat_update [ 490.469163] task: ffff88030772b000 ti: ffff8803077cc000 task.ti: ffff8803077cc000 [ 490.470033] RIP: vmstat_update (mm/vmstat.c:1278) [ 490.470269] RSP: 0000:ffff8803077cfcb8 EFLAGS: 00010287 [ 490.470269] RAX: ffff87ffffffffff RBX: 0000000000000008 RCX: 0000000000000000 [ 490.470269] RDX: ffff88030772bcf8 RSI: ffffffff972e5fd0 RDI: ffffffff986fa5d0 [ 490.470269] RBP: ffff8803077cfcd0 R08: 0000000000000002 R09: 0000000000000000 [ 490.470269] R10: 0000000000000000 R11: 0000000000000000 R12: ffff8805fa7e34d0 [ 490.470269] R13: ffff8803117e2240 R14: 0000000000000800 R15: 0000000000000000 [ 490.470269] FS: 0000000000000000(0000) GS:ffff880311200000(0000) knlGS:0000000000000000 [ 490.470269] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 490.470269] CR2: 00007fffc67fef1a CR3: 0000000017a22000 CR4: 00000000000006a0 [ 490.470269] Stack: [ 490.470269] ffff8803117dd240 ffff88030af938e0 ffff8803117e2240 ffff8803077cfd88 [ 490.470269] ffffffff911f45f5 ffffffff911f455d ffff88030af93928 ffff88031081e900 [ 490.470269] ffff88030af938f0 ffff88030af93900 ffff88030af938e8 ffff88030af938f8 [ 490.470269] Call Trace: [ 490.470269] process_one_work (kernel/workqueue.c:2022 include/linux/jump_label.h:115 include/trace/events/workqueue.h:111 kernel/workqueue.c:2027) [ 490.470269] ? process_one_work (include/linux/workqueue.h:185 kernel/workqueue.c:598 kernel/workqueue.c:625 kernel/workqueue.c:2015) [ 490.470269] worker_thread (include/linux/list.h:188 kernel/workqueue.c:2154) [ 490.470269] ? __schedule (./arch/x86/include/asm/bitops.h:311 include/linux/thread_info.h:91 include/linux/sched.h:2854 kernel/sched/core.c:2825) [ 490.470269] ? process_one_work (kernel/workqueue.c:2098) [ 490.470269] kthread (kernel/kthread.c:207) [ 490.470269] ? flush_kthread_work (kernel/kthread.c:176) [ 490.470269] ret_from_fork (arch/x86/kernel/entry_64.S:348) [ 490.470269] ? flush_kthread_work (kernel/kthread.c:176) [ 490.470269] Code: c7 d0 a5 6f 98 89 c3 e8 9f 9e 08 00 3b 1d 89 8b 35 07 73 7f f0 49 0f ab 1c 24 72 0f 5b 41 5c 41 5d 5d c3 0f 1f 84 00 00 00 00 00 <0f> 0b 66 0f 1f 44 00 00 48 63 3d f1 be 36 07 48 c7 c3 40 d2 1d All code ======== 0: c7 (bad) 1: d0 a5 6f 98 89 c3 shlb -0x3c766791(%rbp) 7: e8 9f 9e 08 00 callq 0x89eab c: 3b 1d 89 8b 35 07 cmp 0x7358b89(%rip),%ebx # 0x7358b9b 12: 73 7f jae 0x93 14: f0 49 0f ab 1c 24 lock bts %rbx,(%r12) 1a: 72 0f jb 0x2b 1c: 5b pop %rbx 1d: 41 5c pop %r12 1f: 41 5d pop %r13 21: 5d pop %rbp 22: c3 retq 23: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) 2a: 00 2b:* 0f 0b ud2 <-- trapping instruction 2d: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 33: 48 63 3d f1 be 36 07 movslq 0x736bef1(%rip),%rdi # 0x736bf2b 3a: 48 c7 c3 40 d2 1d 00 mov $0x1dd240,%rbx Code starting with the faulting instruction =========================================== 0: 0f 0b ud2 2: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) 8: 48 63 3d f1 be 36 07 movslq 0x736bef1(%rip),%rdi # 0x736bf00 f: 48 c7 c3 40 d2 1d 00 mov $0x1dd240,%rbx [ 490.470269] RIP vmstat_update (mm/vmstat.c:1278) [ 490.470269] RSP Thanks, Sasha -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/