summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/call-graph-from-postgresql.py
diff options
context:
space:
mode:
authorVinayak Menon <vinmenon@codeaurora.org>2016-03-08 15:08:27 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-25 16:03:17 -0700
commit30781083ea60e69950381596660b8c3b4a169be4 (patch)
treea554d029ae09cae2933437a9ba45a7ce67717731 /tools/perf/scripts/python/call-graph-from-postgresql.py
parent43bddb5b6c46563d32bae15d28a00240606e8ff0 (diff)
mm: zbud: prevent softirq during zbud alloc, free and reclaim
The following deadlock is observed. Core 2 waiting on mapping->tree_lock which is taken by core 6 do_raw_spin_lock raw_spin_lock_irq atomic_cmpxchg page_freeze_refs __remove_mapping shrink_page_list shrink_inactive_list shrink_list shrink_lruvec shrink_zone shrink_zones do_try_to_free_pages try_to_free_pages(?, ?, ?, ?) __perform_reclaim __alloc_pages_direct_reclaim __alloc_pages_slowpath __alloc_pages_nodemask alloc_kmem_pages_node alloc_thread_info_node dup_task_struct copy_process.part.56 do_fork sys_clone el0_svc_naked Core 6 after taking mapping->tree_lock is waiting on zbud pool lock which is held by core 5 zbud_alloc zcache_store_page __cleancache_put_page cleancache_put_page __delete_from_page_cache spin_unlock_irq __remove_mapping shrink_page_list shrink_inactive_list shrink_list shrink_lruvec shrink_zone bitmap_zero __nodes_clear kswapd_shrink_zone.constprop.58 balance_pgdat kswapd_try_to_sleep kswapd kthread ret_from_fork Core 5 after taking zbud pool lock from zbud_free received an IRQ, and after IRQ exit, softirqs were scheduled and end_page_writeback tried to lock on mapping->tree_lock which is already held by Core 6. Deadlock. do_raw_spin_lock raw_spin_lock_irqsave test_clear_page_writeba end_page_writeback ext4_finish_bio ext4_end_bio bio_endio blk_update_request end_clone_bio bio_endio blk_update_request blk_update_bidi_request blk_end_bidi_request blk_end_request mmc_blk_cmdq_complete_r mmc_cmdq_softirq_done blk_done_softirq static_key_count static_key_false trace_softirq_exit __do_softirq() tick_irq_exit irq_exit() set_irq_regs __handle_domain_irq gic_handle_irq el1_irq exception __list_del_entry list_del zbud_free zcache_load_page __cleancache_get_page(? So protect zbud_alloc/free/reclaim with spink_lock_bh CRs-Fixed: 986783 Change-Id: Ib0605b38e7371c29316ed81e43549a0b9503d531 Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
Diffstat (limited to 'tools/perf/scripts/python/call-graph-from-postgresql.py')
0 files changed, 0 insertions, 0 deletions