DOWNSTREAM: msm-iommu-v1: fix shrinker lockdep issue (1)
=================================
[ INFO: inconsistent lock state ]
4.7.0-rc7+ #490 Not tainted
---------------------------------
inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage.
mediacodec/2055 [HC0[0]:SC0[0]:HE1:SE1] takes:
(msm_iommu_lock){+.+.?.}, at: [<ffff0000084e9d44>] msm_iommu_unmap+0x34/0x130
{RECLAIM_FS-ON-W} state was registered at:
[<ffff000008105778>] mark_lock+0x1c0/0x6c0
[<ffff000008105ce8>] mark_held_locks+0x70/0xb0
[<ffff000008106360>] lockdep_trace_alloc+0x70/0xc8
[<ffff00000817ebd8>] __alloc_pages_nodemask+0x78/0xb58
[<ffff00000817f6d0>] __get_free_pages+0x18/0x40
[<ffff0000084ecec8>] msm_iommu_pagetable_map_range+0x3e8/0x520
[<ffff0000084ed074>] msm_iommu_pagetable_map+0x74/0x90
[<ffff0000084e981c>] msm_iommu_map+0x54/0x80
[<ffff0000084e4d58>] iommu_map+0xd0/0x168
[<ffff00000854612c>] msm_iommu_map+0xb4/0x150
[<ffff0000085425f8>] msm_gem_get_iova_locked+0xb0/0x108
[<ffff00000854bd2c>] msm_dsi_host_modeset_init+0x224/0x2c8
[<ffff000008549760>] msm_dsi_modeset_init+0x40/0x1e0
[<ffff00000853a568>] mdp5_kms_init+0x640/0x790
[<ffff000008540cd4>] msm_drm_bind+0x234/0x528
[<ffff0000085565dc>] try_to_bring_up_master+0x144/0x1a8
[<ffff000008556cc8>] component_add+0x98/0x160
[<ffff0000085496dc>] dsi_dev_probe+0x1c/0x28
[<ffff00000855d514>] platform_drv_probe+0x74/0xe0
[<ffff00000855becc>] driver_probe_device+0x1fc/0x2a8
[<ffff00000855c0c4>] __device_attach_driver+0x94/0xd8
[<ffff00000855a4e8>] bus_for_each_drv+0x58/0x98
[<ffff00000855bb8c>] __device_attach+0xcc/0x140
[<ffff00000855c140>] device_initial_probe+0x10/0x18
[<ffff00000855a76c>] bus_probe_device+0x94/0xa0
[<ffff00000855b470>] deferred_probe_work_func+0x78/0xb0
[<ffff0000080d3064>] process_one_work+0x22c/0x440
[<ffff0000080d32c0>] worker_thread+0x48/0x498
[<ffff0000080da134>] kthread+0xcc/0xe0
[<ffff000008084ed0>] ret_from_fork+0x10/0x40
irq event stamp: 108231
hardirqs last enabled at (108231): [<ffff000008ac4ee4>] mutex_trylock+0x124/0x1f0
hardirqs last disabled at (108230): [<ffff000008ac4e30>] mutex_trylock+0x70/0x1f0
softirqs last enabled at (107066): [<ffff0000080bed6c>] __do_softirq+0x204/0x270
softirqs last disabled at (107049): [<ffff0000080bf118>] irq_exit+0xa0/0xd8
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(msm_iommu_lock);
<Interrupt>
lock(msm_iommu_lock);
*** DEADLOCK ***
2 locks held by mediacodec/2055:
#0: (shrinker_rwsem){++++..}, at: [<ffff0000081882b8>] shrink_slab.part.5+0x50/0x2d0
#1: (&dev->struct_mutex){+.+.+.}, at: [<ffff000008543724>] msm_gem_shrinker_lock+0x24/0x98
stack backtrace:
CPU: 3 PID: 2055 Comm: mediacodec Not tainted 4.7.0-rc7+ #490
Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
Call trace:
[<ffff000008088be8>] dump_backtrace+0x0/0x1a8
[<ffff000008088da4>] show_stack+0x14/0x20
[<ffff0000083b8234>] dump_stack+0xb4/0xf0
[<ffff0000081745cc>] print_usage_bug.part.23+0x264/0x27c
[<ffff000008105708>] mark_lock+0x150/0x6c0
[<ffff000008107700>] __lock_acquire+0x518/0x18d8
[<ffff000008108e0c>] lock_acquire+0x4c/0x68
[<ffff000008ac2ffc>] mutex_lock_nested+0x54/0x390
[<ffff0000084e9d44>] msm_iommu_unmap+0x34/0x130
[<ffff0000084e4c30>] iommu_unmap+0x98/0xf0
[<ffff0000085463d0>] msm_iommu_unmap+0x70/0xa8
[<ffff000008541bdc>] put_iova+0x7c/0x90
[<ffff000008542950>] msm_gem_purge+0x40/0xf0
[<ffff000008543a78>] msm_gem_shrinker_scan+0xc8/0x160
[<ffff0000081883f8>] shrink_slab.part.5+0x190/0x2d0
[<ffff00000818ba04>] shrink_zone+0x324/0x328
[<ffff00000818bb2c>] do_try_to_free_pages+0x124/0x3c0
[<ffff00000818be7c>] try_to_free_pages+0xb4/0xc0
[<ffff00000817ef80>] __alloc_pages_nodemask+0x420/0xb58
[<ffff0000081c8ee4>] new_slab+0x39c/0x530
[<ffff0000081cb2e0>] ___slab_alloc.constprop.27+0x308/0x388
[<ffff0000081cb3a4>] __slab_alloc.isra.22.constprop.26+0x44/0x88
[<ffff0000081cbdc0>] kmem_cache_alloc+0x1b0/0x1e0
[<ffff0000081e9abc>] get_empty_filp+0x6c/0x1c8
[<ffff0000081f5600>] path_openat+0x30/0xa98
[<ffff0000081f6cf4>] do_filp_open+0x64/0xe0
[<ffff0000081e6180>] do_sys_open+0x128/0x1f8
[<ffff00000823be1c>] compat_SyS_openat+0xc/0x18
[<ffff000008084f8c>] __sys_trace_return+0x0/0x4
Signed-off-by:
Rob Clark <robdclark@gmail.com>
Loading
Please sign in to comment