Re: [RFC PATCH 1/2] mm, vmscan: account the number of isolated pages per zone

From: Tetsuo Handa
Date: Sun Feb 05 2017 - 05:47:19 EST


Michal Hocko wrote:
> [CC Petr]
>
> On Fri 03-02-17 19:57:39, Tetsuo Handa wrote:
> [...]
> > (2) I got a lockdep warning. (A new false positive?)
>
> Yes, I suspect this is a false possitive. I do not see how we can
> deadlock. __alloc_pages_direct_reclaim calls drain_all_pages(NULL) which
> means that a potential recursion to the page allocator during draining
> would just bail out on the trylock. Maybe I am misinterpreting the
> report though.
>

I got same warning with ext4. Maybe we need to check carefully.

[ 511.215743] =====================================================
[ 511.218003] WARNING: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected
[ 511.220031] 4.10.0-rc6-next-20170202+ #500 Not tainted
[ 511.221689] -----------------------------------------------------
[ 511.223579] a.out/49302 [HC0[0]:SC0[0]:HE1:SE1] is trying to acquire:
[ 511.225533] (cpu_hotplug.dep_map){++++++}, at: [<ffffffff810a1477>] get_online_cpus+0x37/0x80
[ 511.227795]
[ 511.227795] and this task is already holding:
[ 511.230082] (jbd2_handle){++++-.}, at: [<ffffffff813a8be7>] start_this_handle+0x1a7/0x590
[ 511.232592] which would create a new lock dependency:
[ 511.234192] (jbd2_handle){++++-.} -> (cpu_hotplug.dep_map){++++++}
[ 511.235966]
[ 511.235966] but this new dependency connects a RECLAIM_FS-irq-safe lock:
[ 511.238563] (jbd2_handle){++++-.}
[ 511.238564]
[ 511.238564] ... which became RECLAIM_FS-irq-safe at:
[ 511.242078]
[ 511.242084] [<ffffffff811089db>] __lock_acquire+0x34b/0x1640
[ 511.244492]
[ 511.244495] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.246694]
[ 511.246697] [<ffffffff813b3525>] jbd2_log_wait_commit+0x55/0x1d0
[ 511.249323]
[ 511.249328] [<ffffffff813b59b1>] jbd2_complete_transaction+0x71/0x90
[ 511.252069]
[ 511.252074] [<ffffffff813592d6>] ext4_evict_inode+0x356/0x760
[ 511.254753]
[ 511.254757] [<ffffffff812c9f61>] evict+0xd1/0x1a0
[ 511.257062]
[ 511.257065] [<ffffffff812ca07d>] dispose_list+0x4d/0x80
[ 511.259531]
[ 511.259535] [<ffffffff812cb3da>] prune_icache_sb+0x5a/0x80
[ 511.261953]
[ 511.261957] [<ffffffff812acf41>] super_cache_scan+0x141/0x190
[ 511.264540]
[ 511.264545] [<ffffffff812102ef>] shrink_slab+0x29f/0x6d0
[ 511.267165]
[ 511.267171] [<ffffffff812154aa>] shrink_node+0x2fa/0x310
[ 511.269455]
[ 511.269459] [<ffffffff812169d2>] kswapd+0x362/0x9b0
[ 511.271831]
[ 511.271834] [<ffffffff810ca72f>] kthread+0x10f/0x150
[ 511.274031]
[ 511.274035] [<ffffffff818531c1>] ret_from_fork+0x31/0x40
[ 511.276216]
[ 511.276216] to a RECLAIM_FS-irq-unsafe lock:
[ 511.278128] (cpu_hotplug.dep_map){++++++}
[ 511.278130]
[ 511.278130] ... which became RECLAIM_FS-irq-unsafe at:
[ 511.281809] ...
[ 511.281811]
[ 511.282598] [<ffffffff81108141>] mark_held_locks+0x71/0x90
[ 511.284852]
[ 511.284854] [<ffffffff8110ab6f>] lockdep_trace_alloc+0x6f/0xd0
[ 511.287215]
[ 511.287218] [<ffffffff812744c8>] kmem_cache_alloc_node_trace+0x48/0x3b0
[ 511.289751]
[ 511.289755] [<ffffffff810cfa65>] __smpboot_create_thread.part.2+0x35/0xf0
[ 511.292326]
[ 511.292329] [<ffffffff810d0026>] smpboot_create_threads+0x66/0x90
[ 511.295025]
[ 511.295030] [<ffffffff810a2239>] cpuhp_invoke_callback+0x229/0x9e0
[ 511.299245]
[ 511.299253] [<ffffffff810a2b57>] cpuhp_up_callbacks+0x37/0xb0
[ 511.301889]
[ 511.301894] [<ffffffff810a37b9>] _cpu_up+0x89/0xf0
[ 511.304270]
[ 511.304275] [<ffffffff810a38a5>] do_cpu_up+0x85/0xb0
[ 511.306428]
[ 511.306431] [<ffffffff810a38e3>] cpu_up+0x13/0x20
[ 511.308533]
[ 511.308535] [<ffffffff821eeee3>] smp_init+0x6b/0xcc
[ 511.310710]
[ 511.310713] [<ffffffff821c3399>] kernel_init_freeable+0x17d/0x2ac
[ 511.313232]
[ 511.313235] [<ffffffff81841b3e>] kernel_init+0xe/0x110
[ 511.315616]
[ 511.315620] [<ffffffff818531c1>] ret_from_fork+0x31/0x40
[ 511.317867]
[ 511.317867] other info that might help us debug this:
[ 511.317867]
[ 511.320920] Possible interrupt unsafe locking scenario:
[ 511.320920]
[ 511.323218] CPU0 CPU1
[ 511.324622] ---- ----
[ 511.325973] lock(cpu_hotplug.dep_map);
[ 511.327246] local_irq_disable();
[ 511.328870] lock(jbd2_handle);
[ 511.330483] lock(cpu_hotplug.dep_map);
[ 511.332259] <Interrupt>
[ 511.333187] lock(jbd2_handle);
[ 511.334304]
[ 511.334304] *** DEADLOCK ***
[ 511.334304]
[ 511.336749] 4 locks held by a.out/49302:
[ 511.338129] #0: (sb_writers#8){.+.+.+}, at: [<ffffffff812d11d4>] mnt_want_write+0x24/0x50
[ 511.340768] #1: (&type->i_mutex_dir_key#3){++++++}, at: [<ffffffff812ba06b>] path_openat+0x60b/0xd50
[ 511.343744] #2: (jbd2_handle){++++-.}, at: [<ffffffff813a8be7>] start_this_handle+0x1a7/0x590
[ 511.345743] #3: (pcpu_drain_mutex){+.+...}, at: [<ffffffff811fc96f>] drain_all_pages.part.89+0x1f/0x2c0
[ 511.348605]
[ 511.348605] the dependencies between RECLAIM_FS-irq-safe lock and the holding lock:
[ 511.351336] -> (jbd2_handle){++++-.} ops: 203220 {
[ 511.352768] HARDIRQ-ON-W at:
[ 511.353827]
[ 511.353833] [<ffffffff8110906e>] __lock_acquire+0x9de/0x1640
[ 511.356489]
[ 511.356492] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.359063]
[ 511.359067] [<ffffffff813b3525>] jbd2_log_wait_commit+0x55/0x1d0
[ 511.361905]
[ 511.361908] [<ffffffff813b59b1>] jbd2_complete_transaction+0x71/0x90
[ 511.364560]
[ 511.364563] [<ffffffff8134bec7>] ext4_sync_file+0x2e7/0x5e0
[ 511.367362]
[ 511.367367] [<ffffffff812e74ad>] vfs_fsync_range+0x3d/0xb0
[ 511.369950]
[ 511.369953] [<ffffffff812e757d>] do_fsync+0x3d/0x70
[ 511.372400]
[ 511.372402] [<ffffffff812e7840>] SyS_fsync+0x10/0x20
[ 511.374821]
[ 511.374824] [<ffffffff81003c3c>] do_syscall_64+0x6c/0x200
[ 511.377422]
[ 511.377425] [<ffffffff81853009>] return_from_SYSCALL_64+0x0/0x7a
[ 511.380273] HARDIRQ-ON-R at:
[ 511.381791]
[ 511.381815] [<ffffffff8110896d>] __lock_acquire+0x2dd/0x1640
[ 511.384693]
[ 511.384697] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.387195]
[ 511.387198] [<ffffffff813a8c65>] start_this_handle+0x225/0x590
[ 511.389888]
[ 511.389891] [<ffffffff813a9639>] jbd2__journal_start+0xe9/0x340
[ 511.392522]
[ 511.392525] [<ffffffff8138adaa>] __ext4_journal_start_sb+0x9a/0x240
[ 511.395341]
[ 511.395344] [<ffffffff8134af58>] ext4_file_open+0x188/0x230
[ 511.397886]
[ 511.397889] [<ffffffff812a53cb>] do_dentry_open+0x22b/0x340
[ 511.400727]
[ 511.400730] [<ffffffff812a6922>] vfs_open+0x52/0x80
[ 511.403297]
[ 511.403301] [<ffffffff812b9f02>] path_openat+0x4a2/0xd50
[ 511.405752]
[ 511.405755] [<ffffffff812bba51>] do_filp_open+0x91/0x100
[ 511.408229]
[ 511.408231] [<ffffffff812a6d44>] do_sys_open+0x124/0x210
[ 511.410820]
[ 511.410822] [<ffffffff812a6e4e>] SyS_open+0x1e/0x20
[ 511.413158]
[ 511.413161] [<ffffffff81852f41>] entry_SYSCALL_64_fastpath+0x1f/0xc2
[ 511.416074] SOFTIRQ-ON-W at:
[ 511.417069]
[ 511.417073] [<ffffffff81108996>] __lock_acquire+0x306/0x1640
[ 511.419681]
[ 511.419684] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.422516]
[ 511.422520] [<ffffffff813b3525>] jbd2_log_wait_commit+0x55/0x1d0
[ 511.425157]
[ 511.425160] [<ffffffff813b59b1>] jbd2_complete_transaction+0x71/0x90
[ 511.427862]
[ 511.427865] [<ffffffff8134bec7>] ext4_sync_file+0x2e7/0x5e0
[ 511.430379]
[ 511.430382] [<ffffffff812e74ad>] vfs_fsync_range+0x3d/0xb0
[ 511.433412]
[ 511.433418] [<ffffffff812e757d>] do_fsync+0x3d/0x70
[ 511.436064]
[ 511.436067] [<ffffffff812e7840>] SyS_fsync+0x10/0x20
[ 511.438498]
[ 511.438502] [<ffffffff81003c3c>] do_syscall_64+0x6c/0x200
[ 511.441519]
[ 511.441524] [<ffffffff81853009>] return_from_SYSCALL_64+0x0/0x7a
[ 511.444325] SOFTIRQ-ON-R at:
[ 511.445358]
[ 511.445362] [<ffffffff81108996>] __lock_acquire+0x306/0x1640
[ 511.448298]
[ 511.448312] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.451096]
[ 511.451100] [<ffffffff813a8c65>] start_this_handle+0x225/0x590
[ 511.453784]
[ 511.453786] [<ffffffff813a9639>] jbd2__journal_start+0xe9/0x340
[ 511.456659]
[ 511.456664] [<ffffffff8138adaa>] __ext4_journal_start_sb+0x9a/0x240
[ 511.459638]
[ 511.459643] [<ffffffff8134af58>] ext4_file_open+0x188/0x230
[ 511.462384]
[ 511.462389] [<ffffffff812a53cb>] do_dentry_open+0x22b/0x340
[ 511.465550]
[ 511.465558] [<ffffffff812a6922>] vfs_open+0x52/0x80
[ 511.468141]
[ 511.468145] [<ffffffff812b9f02>] path_openat+0x4a2/0xd50
[ 511.470816]
[ 511.470819] [<ffffffff812bba51>] do_filp_open+0x91/0x100
[ 511.473441]
[ 511.473443] [<ffffffff812a6d44>] do_sys_open+0x124/0x210
[ 511.476079]
[ 511.476081] [<ffffffff812a6e4e>] SyS_open+0x1e/0x20
[ 511.478584]
[ 511.478587] [<ffffffff81852f41>] entry_SYSCALL_64_fastpath+0x1f/0xc2
[ 511.481394] IN-RECLAIM_FS-W at:
[ 511.482680]
[ 511.482691] [<ffffffff811089db>] __lock_acquire+0x34b/0x1640
[ 511.485262]
[ 511.485264] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.487862]
[ 511.487865] [<ffffffff813b3525>] jbd2_log_wait_commit+0x55/0x1d0
[ 511.490707]
[ 511.490710] [<ffffffff813b59b1>] jbd2_complete_transaction+0x71/0x90
[ 511.493524]
[ 511.493527] [<ffffffff813592d6>] ext4_evict_inode+0x356/0x760
[ 511.496251]
[ 511.496255] [<ffffffff812c9f61>] evict+0xd1/0x1a0
[ 511.498817]
[ 511.498821] [<ffffffff812ca07d>] dispose_list+0x4d/0x80
[ 511.501361]
[ 511.501364] [<ffffffff812cb3da>] prune_icache_sb+0x5a/0x80
[ 511.504069]
[ 511.504072] [<ffffffff812acf41>] super_cache_scan+0x141/0x190
[ 511.506890]
[ 511.506895] [<ffffffff812102ef>] shrink_slab+0x29f/0x6d0
[ 511.509465]
[ 511.509467] [<ffffffff812154aa>] shrink_node+0x2fa/0x310
[ 511.512228]
[ 511.512233] [<ffffffff812169d2>] kswapd+0x362/0x9b0
[ 511.514724]
[ 511.514728] [<ffffffff810ca72f>] kthread+0x10f/0x150
[ 511.517264]
[ 511.517269] [<ffffffff818531c1>] ret_from_fork+0x31/0x40
[ 511.519827] INITIAL USE at:
[ 511.520829]
[ 511.520833] [<ffffffff811089ff>] __lock_acquire+0x36f/0x1640
[ 511.523377]
[ 511.523380] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.525781]
[ 511.525784] [<ffffffff813a8c65>] start_this_handle+0x225/0x590
[ 511.528372]
[ 511.528375] [<ffffffff813a9639>] jbd2__journal_start+0xe9/0x340
[ 511.531138]
[ 511.531141] [<ffffffff8138adaa>] __ext4_journal_start_sb+0x9a/0x240
[ 511.533905]
[ 511.533908] [<ffffffff8134af58>] ext4_file_open+0x188/0x230
[ 511.536467]
[ 511.536471] [<ffffffff812a53cb>] do_dentry_open+0x22b/0x340
[ 511.538990]
[ 511.538992] [<ffffffff812a6922>] vfs_open+0x52/0x80
[ 511.541457]
[ 511.541461] [<ffffffff812b9f02>] path_openat+0x4a2/0xd50
[ 511.544036]
[ 511.544039] [<ffffffff812bba51>] do_filp_open+0x91/0x100
[ 511.546642]
[ 511.546644] [<ffffffff812a6d44>] do_sys_open+0x124/0x210
[ 511.549354]
[ 511.549370] [<ffffffff812a6e4e>] SyS_open+0x1e/0x20
[ 511.551781]
[ 511.551784] [<ffffffff81852f41>] entry_SYSCALL_64_fastpath+0x1f/0xc2
[ 511.554410] }
[ 511.555145] ... key at: [<ffffffff8335b518>] jbd2_trans_commit_key.48870+0x0/0x8
[ 511.557051] ... acquired at:
[ 511.558047]
[ 511.558050] [<ffffffff81107d0a>] check_irq_usage+0x4a/0xb0
[ 511.560268]
[ 511.560270] [<ffffffff8110950b>] __lock_acquire+0xe7b/0x1640
[ 511.562536]
[ 511.562538] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.564779]
[ 511.564783] [<ffffffff810a149d>] get_online_cpus+0x5d/0x80
[ 511.567230]
[ 511.567234] [<ffffffff811fc97c>] drain_all_pages.part.89+0x2c/0x2c0
[ 511.569585]
[ 511.569588] [<ffffffff812a1cfb>] __alloc_pages_slowpath+0x509/0xe36
[ 511.572289]
[ 511.572292] [<ffffffff812018a2>] __alloc_pages_nodemask+0x382/0x3d0
[ 511.574744]
[ 511.574747] [<ffffffff81265077>] alloc_pages_current+0x97/0x1b0
[ 511.577103]
[ 511.577106] [<ffffffff811f22fd>] __page_cache_alloc+0x15d/0x1a0
[ 511.579483]
[ 511.579486] [<ffffffff811f494a>] pagecache_get_page+0x5a/0x2b0
[ 511.581935]
[ 511.581940] [<ffffffff812eca32>] __getblk_gfp+0x112/0x390
[ 511.584220]
[ 511.584223] [<ffffffff813514ca>] __ext4_get_inode_loc+0x10a/0x560
[ 511.586627]
[ 511.586630] [<ffffffff81353e50>] ext4_get_inode_loc+0x20/0x30
[ 511.589802]
[ 511.589808] [<ffffffff81355ec6>] ext4_reserve_inode_write+0x26/0x90
[ 511.592471]
[ 511.592476] [<ffffffff81355fbe>] ext4_mark_inode_dirty+0x8e/0x390
[ 511.594926]
[ 511.594930] [<ffffffff8138325a>] ext4_ext_tree_init+0x3a/0x40
[ 511.597306]
[ 511.597308] [<ffffffff8134eaaa>] __ext4_new_inode+0x12da/0x1540
[ 511.599962]
[ 511.599969] [<ffffffff81363602>] ext4_create+0xd2/0x1a0
[ 511.602484]
[ 511.602489] [<ffffffff812b9903>] lookup_open+0x653/0x7b0
[ 511.604699]
[ 511.604701] [<ffffffff812ba086>] path_openat+0x626/0xd50
[ 511.606890]
[ 511.606893] [<ffffffff812bba51>] do_filp_open+0x91/0x100
[ 511.609097]
[ 511.609099] [<ffffffff812a6d44>] do_sys_open+0x124/0x210
[ 511.611346]
[ 511.611348] [<ffffffff812a6e4e>] SyS_open+0x1e/0x20
[ 511.613431]
[ 511.613434] [<ffffffff81003c3c>] do_syscall_64+0x6c/0x200
[ 511.615967]
[ 511.615979] [<ffffffff81853009>] return_from_SYSCALL_64+0x0/0x7a
[ 511.618303]
[ 511.619062]
[ 511.619062] the dependencies between the lock to be acquired
[ 511.619063] and RECLAIM_FS-irq-unsafe lock:
[ 511.622794] -> (cpu_hotplug.dep_map){++++++} ops: 1130 {
[ 511.624286] HARDIRQ-ON-W at:
[ 511.625479]
[ 511.625485] [<ffffffff8110906e>] __lock_acquire+0x9de/0x1640
[ 511.627957]
[ 511.627959] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.630609]
[ 511.630612] [<ffffffff810a3603>] cpu_hotplug_begin+0x73/0xe0
[ 511.633682]
[ 511.633697] [<ffffffff810a3762>] _cpu_up+0x32/0xf0
[ 511.636022]
[ 511.636024] [<ffffffff810a38a5>] do_cpu_up+0x85/0xb0
[ 511.638397]
[ 511.638399] [<ffffffff810a38e3>] cpu_up+0x13/0x20
[ 511.640852]
[ 511.640866] [<ffffffff821eeee3>] smp_init+0x6b/0xcc
[ 511.643507]
[ 511.643511] [<ffffffff821c3399>] kernel_init_freeable+0x17d/0x2ac
[ 511.646002]
[ 511.646005] [<ffffffff81841b3e>] kernel_init+0xe/0x110
[ 511.648600]
[ 511.648611] [<ffffffff818531c1>] ret_from_fork+0x31/0x40
[ 511.651115] HARDIRQ-ON-R at:
[ 511.652080]
[ 511.652084] [<ffffffff8110896d>] __lock_acquire+0x2dd/0x1640
[ 511.654554]
[ 511.654557] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.656983]
[ 511.656986] [<ffffffff810a149d>] get_online_cpus+0x5d/0x80
[ 511.659442]
[ 511.659445] [<ffffffff8122a55a>] kmem_cache_create+0x3a/0x2d0
[ 511.662336]
[ 511.662342] [<ffffffff821fd151>] numa_policy_init+0x43/0x24a
[ 511.665117]
[ 511.665121] [<ffffffff821c313c>] start_kernel+0x3f6/0x4d6
[ 511.667566]
[ 511.667568] [<ffffffff821c25d6>] x86_64_start_reservations+0x2a/0x2c
[ 511.670245]
[ 511.670247] [<ffffffff821c2724>] x86_64_start_kernel+0x14c/0x16f
[ 511.673050]
[ 511.673054] [<ffffffff810001c4>] verify_cpu+0x0/0xfc
[ 511.675400] SOFTIRQ-ON-W at:
[ 511.676405]
[ 511.676408] [<ffffffff81108996>] __lock_acquire+0x306/0x1640
[ 511.679556]
[ 511.679563] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.683155]
[ 511.683164] [<ffffffff810a3603>] cpu_hotplug_begin+0x73/0xe0
[ 511.686224]
[ 511.686231] [<ffffffff810a3762>] _cpu_up+0x32/0xf0
[ 511.689073]
[ 511.689078] [<ffffffff810a38a5>] do_cpu_up+0x85/0xb0
[ 511.691573]
[ 511.691575] [<ffffffff810a38e3>] cpu_up+0x13/0x20
[ 511.694007]
[ 511.694010] [<ffffffff821eeee3>] smp_init+0x6b/0xcc
[ 511.696524]
[ 511.696528] [<ffffffff821c3399>] kernel_init_freeable+0x17d/0x2ac
[ 511.699401]
[ 511.699405] [<ffffffff81841b3e>] kernel_init+0xe/0x110
[ 511.701956]
[ 511.701959] [<ffffffff818531c1>] ret_from_fork+0x31/0x40
[ 511.704520] SOFTIRQ-ON-R at:
[ 511.705530]
[ 511.705534] [<ffffffff81108996>] __lock_acquire+0x306/0x1640
[ 511.708036]
[ 511.708038] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.710516]
[ 511.710518] [<ffffffff810a149d>] get_online_cpus+0x5d/0x80
[ 511.713771]
[ 511.713780] [<ffffffff8122a55a>] kmem_cache_create+0x3a/0x2d0
[ 511.716681]
[ 511.716688] [<ffffffff821fd151>] numa_policy_init+0x43/0x24a
[ 511.719450]
[ 511.719455] [<ffffffff821c313c>] start_kernel+0x3f6/0x4d6
[ 511.722114]
[ 511.722117] [<ffffffff821c25d6>] x86_64_start_reservations+0x2a/0x2c
[ 511.724864]
[ 511.724866] [<ffffffff821c2724>] x86_64_start_kernel+0x14c/0x16f
[ 511.727552]
[ 511.727555] [<ffffffff810001c4>] verify_cpu+0x0/0xfc
[ 511.729936] RECLAIM_FS-ON-W at:
[ 511.731059]
[ 511.731063] [<ffffffff81108141>] mark_held_locks+0x71/0x90
[ 511.733851]
[ 511.733857] [<ffffffff8110ab6f>] lockdep_trace_alloc+0x6f/0xd0
[ 511.736601]
[ 511.736604] [<ffffffff812744c8>] kmem_cache_alloc_node_trace+0x48/0x3b0
[ 511.739325]
[ 511.739329] [<ffffffff810cfa65>] __smpboot_create_thread.part.2+0x35/0xf0
[ 511.742499]
[ 511.742503] [<ffffffff810d0026>] smpboot_create_threads+0x66/0x90
[ 511.745233]
[ 511.745236] [<ffffffff810a2239>] cpuhp_invoke_callback+0x229/0x9e0
[ 511.747909]
[ 511.747911] [<ffffffff810a2b57>] cpuhp_up_callbacks+0x37/0xb0
[ 511.750604]
[ 511.750606] [<ffffffff810a37b9>] _cpu_up+0x89/0xf0
[ 511.753180]
[ 511.753182] [<ffffffff810a38a5>] do_cpu_up+0x85/0xb0
[ 511.755982]
[ 511.755986] [<ffffffff810a38e3>] cpu_up+0x13/0x20
[ 511.758565]
[ 511.758568] [<ffffffff821eeee3>] smp_init+0x6b/0xcc
[ 511.761138]
[ 511.761141] [<ffffffff821c3399>] kernel_init_freeable+0x17d/0x2ac
[ 511.763877]
[ 511.763881] [<ffffffff81841b3e>] kernel_init+0xe/0x110
[ 511.766703]
[ 511.766709] [<ffffffff818531c1>] ret_from_fork+0x31/0x40
[ 511.769522] RECLAIM_FS-ON-R at:
[ 511.770730]
[ 511.770735] [<ffffffff81108141>] mark_held_locks+0x71/0x90
[ 511.773324]
[ 511.773327] [<ffffffff8110ab6f>] lockdep_trace_alloc+0x6f/0xd0
[ 511.775897]
[ 511.775900] [<ffffffff812744c8>] kmem_cache_alloc_node_trace+0x48/0x3b0
[ 511.778659]
[ 511.778663] [<ffffffff8100d199>] allocate_shared_regs+0x29/0x70
[ 511.781485]
[ 511.781488] [<ffffffff8100d217>] intel_pmu_cpu_prepare+0x37/0x140
[ 511.784574]
[ 511.784578] [<ffffffff81005410>] x86_pmu_prepare_cpu+0x40/0x50
[ 511.787169]
[ 511.787172] [<ffffffff810a2239>] cpuhp_invoke_callback+0x229/0x9e0
[ 511.789906]
[ 511.789909] [<ffffffff810a2e42>] cpuhp_issue_call+0xe2/0x140
[ 511.792625]
[ 511.792628] [<ffffffff810a321d>] __cpuhp_setup_state+0x12d/0x190
[ 511.795441]
[ 511.795446] [<ffffffff821c59b1>] init_hw_perf_events+0x402/0x5b6
[ 511.798187]
[ 511.798190] [<ffffffff81002191>] do_one_initcall+0x51/0x1c0
[ 511.801133]
[ 511.801139] [<ffffffff821c3371>] kernel_init_freeable+0x155/0x2ac
[ 511.803812]
[ 511.803816] [<ffffffff81841b3e>] kernel_init+0xe/0x110
[ 511.806381]
[ 511.806385] [<ffffffff818531c1>] ret_from_fork+0x31/0x40
[ 511.808849] INITIAL USE at:
[ 511.809876]
[ 511.809881] [<ffffffff811089ff>] __lock_acquire+0x36f/0x1640
[ 511.812607]
[ 511.812610] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.815088]
[ 511.815092] [<ffffffff810a149d>] get_online_cpus+0x5d/0x80
[ 511.817776]
[ 511.817779] [<ffffffff810a3133>] __cpuhp_setup_state+0x43/0x190
[ 511.820394]
[ 511.820397] [<ffffffff821f756b>] page_alloc_init+0x23/0x3a
[ 511.823000]
[ 511.823003] [<ffffffff821c2ee8>] start_kernel+0x1a2/0x4d6
[ 511.825495]
[ 511.825497] [<ffffffff821c25d6>] x86_64_start_reservations+0x2a/0x2c
[ 511.828158]
[ 511.828160] [<ffffffff821c2724>] x86_64_start_kernel+0x14c/0x16f
[ 511.830986]
[ 511.830991] [<ffffffff810001c4>] verify_cpu+0x0/0xfc
[ 511.833452] }
[ 511.834219] ... key at: [<ffffffff81e59b08>] cpu_hotplug+0x108/0x140
[ 511.835931] ... acquired at:
[ 511.836924]
[ 511.836927] [<ffffffff81107d0a>] check_irq_usage+0x4a/0xb0
[ 511.839589]
[ 511.839593] [<ffffffff8110950b>] __lock_acquire+0xe7b/0x1640
[ 511.842158]
[ 511.842162] [<ffffffff8110a119>] lock_acquire+0xc9/0x250
[ 511.844452]
[ 511.844454] [<ffffffff810a149d>] get_online_cpus+0x5d/0x80
[ 511.846668]
[ 511.846671] [<ffffffff811fc97c>] drain_all_pages.part.89+0x2c/0x2c0
[ 511.849257]
[ 511.849264] [<ffffffff812a1cfb>] __alloc_pages_slowpath+0x509/0xe36
[ 511.852127]
[ 511.852132] [<ffffffff812018a2>] __alloc_pages_nodemask+0x382/0x3d0
[ 511.854545]
[ 511.854549] [<ffffffff81265077>] alloc_pages_current+0x97/0x1b0
[ 511.856942]
[ 511.856946] [<ffffffff811f22fd>] __page_cache_alloc+0x15d/0x1a0
[ 511.859259]
[ 511.859262] [<ffffffff811f494a>] pagecache_get_page+0x5a/0x2b0
[ 511.861595]
[ 511.861598] [<ffffffff812eca32>] __getblk_gfp+0x112/0x390
[ 511.863893]
[ 511.863897] [<ffffffff813514ca>] __ext4_get_inode_loc+0x10a/0x560
[ 511.866538]
[ 511.866542] [<ffffffff81353e50>] ext4_get_inode_loc+0x20/0x30
[ 511.868929]
[ 511.868932] [<ffffffff81355ec6>] ext4_reserve_inode_write+0x26/0x90
[ 511.871579]
[ 511.871584] [<ffffffff81355fbe>] ext4_mark_inode_dirty+0x8e/0x390
[ 511.874088]
[ 511.874092] [<ffffffff8138325a>] ext4_ext_tree_init+0x3a/0x40
[ 511.876398]
[ 511.876400] [<ffffffff8134eaaa>] __ext4_new_inode+0x12da/0x1540
[ 511.878735]
[ 511.878737] [<ffffffff81363602>] ext4_create+0xd2/0x1a0
[ 511.881170]
[ 511.881174] [<ffffffff812b9903>] lookup_open+0x653/0x7b0
[ 511.883841]
[ 511.883848] [<ffffffff812ba086>] path_openat+0x626/0xd50
[ 511.886058]
[ 511.886061] [<ffffffff812bba51>] do_filp_open+0x91/0x100
[ 511.888285]
[ 511.888288] [<ffffffff812a6d44>] do_sys_open+0x124/0x210
[ 511.890642]
[ 511.890644] [<ffffffff812a6e4e>] SyS_open+0x1e/0x20
[ 511.892781]
[ 511.892784] [<ffffffff81003c3c>] do_syscall_64+0x6c/0x200
[ 511.895050]
[ 511.895053] [<ffffffff81853009>] return_from_SYSCALL_64+0x0/0x7a
[ 511.897382]
[ 511.898165]
[ 511.898165] stack backtrace:
[ 511.900033] CPU: 0 PID: 49302 Comm: a.out Not tainted 4.10.0-rc6-next-20170202+ #500
[ 511.901974] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/02/2015
[ 511.904851] Call Trace:
[ 511.905789] dump_stack+0x85/0xc9
[ 511.906854] check_usage+0x4ba/0x4d0
[ 511.907984] ? delayacct_end+0x56/0x60
[ 511.909136] check_irq_usage+0x4a/0xb0
[ 511.910318] __lock_acquire+0xe7b/0x1640
[ 511.911470] ? delayacct_end+0x56/0x60
[ 511.912607] lock_acquire+0xc9/0x250
[ 511.913703] ? get_online_cpus+0x37/0x80
[ 511.914888] get_online_cpus+0x5d/0x80
[ 511.916137] ? get_online_cpus+0x37/0x80
[ 511.917287] drain_all_pages.part.89+0x2c/0x2c0
[ 511.918539] __alloc_pages_slowpath+0x509/0xe36
[ 511.919889] __alloc_pages_nodemask+0x382/0x3d0
[ 511.921673] ? sched_clock_cpu+0x11/0xc0
[ 511.922919] alloc_pages_current+0x97/0x1b0
[ 511.924123] __page_cache_alloc+0x15d/0x1a0
[ 511.925252] pagecache_get_page+0x5a/0x2b0
[ 511.926392] __getblk_gfp+0x112/0x390
[ 511.927524] __ext4_get_inode_loc+0x10a/0x560
[ 511.928723] ? ext4_ext_tree_init+0x3a/0x40
[ 511.929900] ext4_get_inode_loc+0x20/0x30
[ 511.931008] ext4_reserve_inode_write+0x26/0x90
[ 511.932370] ? ext4_ext_tree_init+0x3a/0x40
[ 511.933582] ext4_mark_inode_dirty+0x8e/0x390
[ 511.934807] ext4_ext_tree_init+0x3a/0x40
[ 511.935919] __ext4_new_inode+0x12da/0x1540
[ 511.937093] ext4_create+0xd2/0x1a0
[ 511.938106] lookup_open+0x653/0x7b0
[ 511.939108] ? __wake_up+0x23/0x50
[ 511.940131] ? sched_clock+0x9/0x10
[ 511.941184] path_openat+0x626/0xd50
[ 511.942194] do_filp_open+0x91/0x100
[ 511.943164] ? _raw_spin_unlock+0x27/0x40
[ 511.944335] ? __alloc_fd+0xf7/0x210
[ 511.945350] do_sys_open+0x124/0x210
[ 511.946333] SyS_open+0x1e/0x20
[ 511.947189] do_syscall_64+0x6c/0x200
[ 511.948208] entry_SYSCALL64_slow_path+0x25/0x25
[ 511.949587] RIP: 0033:0x7feb6a026a10
[ 511.950555] RSP: 002b:00007ffce3579c88 EFLAGS: 00000246 ORIG_RAX: 0000000000000002
[ 511.952261] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007feb6a026a10
[ 511.953864] RDX: 0000000000000180 RSI: 0000000000004441 RDI: 00000000006010c0
[ 511.955566] RBP: 0000000000000000 R08: 00007feb69f86938 R09: 000000000000000f
[ 511.957231] R10: 0000000000000000 R11: 0000000000000246 R12: 000000000040083b
[ 511.958864] R13: 00007ffce3579d90 R14: 0000000000000000 R15: 0000000000000000

Below one is also a loop. Maybe we can add __GFP_NOMEMALLOC to GFP_NOWAIT ?

[ 257.781715] Out of memory: Kill process 5171 (a.out) score 842 or sacrifice child
[ 257.784726] Killed process 5171 (a.out) total-vm:2177096kB, anon-rss:1476488kB, file-rss:4kB, shmem-rss:0kB
[ 257.787691] a.out(5171): TIF_MEMDIE allocation: order=0 mode=0x1000200(GFP_NOWAIT|__GFP_NOWARN)
[ 257.789789] CPU: 3 PID: 5171 Comm: a.out Not tainted 4.10.0-rc6-next-20170202+ #500
[ 257.791784] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 07/02/2015
[ 257.794700] Call Trace:
[ 257.795690] dump_stack+0x85/0xc9
[ 257.797224] __alloc_pages_slowpath+0xacb/0xe36
[ 257.798612] __alloc_pages_nodemask+0x382/0x3d0
[ 257.799942] alloc_pages_current+0x97/0x1b0
[ 257.801236] __get_free_pages+0x14/0x50
[ 257.802546] __tlb_remove_page_size+0x70/0xd0
[ 257.803810] unmap_page_range+0x74b/0xa80
[ 257.804992] unmap_single_vma+0x81/0xf0
[ 257.806131] unmap_vmas+0x41/0x60
[ 257.807179] exit_mmap+0x97/0x150
[ 257.808282] ? __khugepaged_exit+0xe5/0x130
[ 257.809594] mmput+0x80/0x150
[ 257.810566] do_exit+0x2c0/0xd70
[ 257.811609] do_group_exit+0x4c/0xc0
[ 257.813035] get_signal+0x35f/0x9b0
[ 257.814199] do_signal+0x37/0x730
[ 257.815215] ? mutex_unlock+0x12/0x20
[ 257.816285] ? pagefault_out_of_memory+0x75/0x80
[ 257.817872] ? mm_fault_error+0x65/0x152
[ 257.819027] ? exit_to_usermode_loop+0x26/0x92
[ 257.820277] exit_to_usermode_loop+0x51/0x92
[ 257.821480] prepare_exit_to_usermode+0x7f/0x90
[ 257.822756] retint_user+0x8/0x23
[ 257.823755] RIP: 0033:0x400780
[ 257.824717] RSP: 002b:00007ffce4497640 EFLAGS: 00010206
[ 257.826061] RAX: 000000005a1de000 RBX: 0000000080000000 RCX: 00007f11b8887650
[ 257.827774] RDX: 0000000000000000 RSI: 00007ffce4497460 RDI: 00007ffce4497460
[ 257.829770] RBP: 00007f10b89be010 R08: 00007ffce4497570 R09: 00007ffce44973b0
[ 257.831714] R10: 0000000000000008 R11: 0000000000000246 R12: 0000000000000007
[ 257.833447] R13: 00007f10b89be010 R14: 0000000000000000 R15: 0000000000000000