On (10/23/15 09:12), Christoph Lameter wrote: [..] > > > + if (!cpumask_test_and_set_cpu(smp_processor_id(), cpu_stat_off)) > > > + cancel_delayed_work(this_cpu_ptr(&vmstat_work)); > > > > shouldn't preemption be disable for smp_processor_id() here? > > Preemption is disabled when quiet_vmstat() is called. > cond_resched() [ 29.607725] BUG: sleeping function called from invalid context at mm/vmstat.c:487 [ 29.607729] in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/7 [ 29.607731] no locks held by swapper/7/0. [ 29.607732] irq event stamp: 48932 [ 29.607733] hardirqs last enabled at (48931): [<ffffffff813b246a>] _raw_spin_unlock_irq+0x2c/0x37 [ 29.607739] hardirqs last disabled at (48932): [<ffffffff810a3fec>] tick_nohz_idle_enter+0x3c/0x5f [ 29.607743] softirqs last enabled at (48924): [<ffffffff81041fd8>] __do_softirq+0x2bb/0x3a9 [ 29.607747] softirqs last disabled at (48893): [<ffffffff810422a7>] irq_exit+0x41/0x95 [ 29.607752] CPU: 7 PID: 0 Comm: swapper/7 Not tainted 4.3.0-rc6-next-20151022-dbg-00003-g01184ff-dirty #261 [ 29.607754] 0000000000000000 ffff88041dae7da0 ffffffff811dd4f3 ffff88041dacd100 [ 29.607756] ffff88041dae7dc8 ffffffff8105f144 ffffffff8169f800 0000000000000000 [ 29.607759] 0000000000000007 ffff88041dae7e70 ffffffff811040b1 0000000000000002 [ 29.607761] Call Trace: [ 29.607767] [<ffffffff811dd4f3>] dump_stack+0x4b/0x63 [ 29.607770] [<ffffffff8105f144>] ___might_sleep+0x1e7/0x1ee [ 29.607773] [<ffffffff811040b1>] refresh_cpu_vm_stats+0x8b/0xb5 [ 29.607776] [<ffffffff81104f4c>] quiet_vmstat+0x3a/0x41 [ 29.607778] [<ffffffff810a3ccf>] __tick_nohz_idle_enter+0x292/0x410 [ 29.607781] [<ffffffff810a4007>] tick_nohz_idle_enter+0x57/0x5f [ 29.607784] [<ffffffff81076d8b>] cpu_startup_entry+0x36/0x330 [ 29.607788] [<ffffffff81028821>] start_secondary+0xf3/0xf6 by the way, tick_nohz_stop_sched_tick() receives cpu from __tick_nohz_idle_enter(). do you want to pass it to quiet_vmstat()? if (!ts->tick_stopped) { nohz_balance_enter_idle(cpu); - quiet_vmstat(); + quiet_vmstat(cpu); calc_load_enter_idle(); -ss -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>