qxl deadlock splat

Josh Boyer jwboyer at fedoraproject.org
Mon Apr 20 11:28:51 PDT 2015


Hi Dave,

Below is a qxl lockdep spew that I got with Linus' tree a few days
ago.  I actually suspect this is present in older kernels too as the
DRM merge hasn't landed yet.  If you have any ideas, I'd appreciate
it.  I tried to look at the locking a bit, but I'm not familiar with
the ww ticket locking.

josh

[  +8.261799] ======================================================
[  +0.000001] [ INFO: possible circular locking dependency detected ]
[  +0.000001] 4.1.0-0.rc0.git2.1.fc23.x86_64 #1 Not tainted
[  +0.000001] -------------------------------------------------------
[  +0.000001] gnome-shell/1012 is trying to acquire lock:
[  +0.000001]  (reservation_ww_class_acquire){+.+.+.}, at:
[<ffffffffa010a635>] qxl_release_reserve_list+0x55/0x120 [qxl]
[  +0.000008]
              but task is already holding lock:
[  +0.000001]  (reservation_ww_class_mutex){+.+.+.}, at:
[<ffffffffa01017cb>] qxl_crtc_page_flip+0xbb/0x230 [qxl]
[  +0.000004]
              which lock already depends on the new lock.

[  +0.000002]
              the existing dependency chain (in reverse order) is:
[  +0.000001]
              -> #1 (reservation_ww_class_mutex){+.+.+.}:
[  +0.000002]        [<ffffffff811129f7>] lock_acquire+0xc7/0x2a0
[  +0.000005]        [<ffffffff81888acf>] __ww_mutex_lock+0x7f/0x770
[  +0.000004]        [<ffffffffa0090c35>]
ttm_eu_reserve_buffers+0x365/0x640 [ttm]
[  +0.000007]        [<ffffffffa010a635>]
qxl_release_reserve_list+0x55/0x120 [qxl]
[  +0.000005]        [<ffffffffa0108026>] qxl_draw_opaque_fb+0xe6/0x3c0 [qxl]
[  +0.000005]        [<ffffffffa0103ffd>]
qxl_fb_imageblit_internal+0x4d/0x70 [qxl]
[  +0.000018]        [<ffffffffa0104687>] qxl_fb_imageblit+0x1a7/0x1c0 [qxl]
[  +0.000006]        [<ffffffff814aea6c>] soft_cursor+0x1ac/0x230
[  +0.000003]        [<ffffffff814ae2fb>] bit_cursor+0x68b/0x6c0
[  +0.000002]        [<ffffffff814aa2fd>] fbcon_cursor+0x10d/0x180
[  +0.000001]        [<ffffffff8154808c>] hide_cursor+0x2c/0x90
[  +0.000004]        [<ffffffff81549e78>] redraw_screen+0x188/0x250
[  +0.000003]        [<ffffffff8154a883>] vc_do_resize+0x4c3/0x4f0
[  +0.000003]        [<ffffffff8154a8cf>] vc_resize+0x1f/0x30
[  +0.000003]        [<ffffffff814aca6c>] fbcon_init+0x3cc/0x610
[  +0.000002]        [<ffffffff815482dc>] visual_init+0xbc/0x120
[  +0.000003]        [<ffffffff8154acce>] do_bind_con_driver+0x17e/0x3c0
[  +0.000003]        [<ffffffff8154b474>] do_take_over_console+0xb4/0x1b0
[  +0.000003]        [<ffffffff814a7a23>] do_fbcon_takeover+0x63/0xd0
[  +0.000004]        [<ffffffff814ad77d>] fbcon_event_notify+0x6dd/0x7e0
[  +0.000003]        [<ffffffff810d9b6e>] notifier_call_chain+0x3e/0xb0
[  +0.000003]        [<ffffffff810d9df1>]
__blocking_notifier_call_chain+0x51/0x70
[  +0.000003]        [<ffffffff810d9e26>] blocking_notifier_call_chain+0x16/0x20
[  +0.000003]        [<ffffffff814b381b>] fb_notifier_call_chain+0x1b/0x20
[  +0.000004]        [<ffffffff814b5cc2>] register_framebuffer+0x222/0x370
[  +0.000003]        [<ffffffffa00e6ae4>]
drm_fb_helper_initial_config+0x264/0x3c0 [drm_kms_helper]
[  +0.000008]        [<ffffffffa0105214>] qxl_fbdev_init+0xd4/0x100 [qxl]
[  +0.000005]        [<ffffffffa0103339>] qxl_modeset_init+0x229/0x260 [qxl]
[  +0.000013]        [<ffffffffa0100d01>] qxl_driver_load+0x811/0x840 [qxl]
[  +0.000003]        [<ffffffffa003dfc5>] drm_dev_register+0xb5/0x110 [drm]
[  +0.000008]        [<ffffffffa004122d>] drm_get_pci_dev+0x8d/0x200 [drm]
[  +0.000006]        [<ffffffffa01002fb>] qxl_pci_probe+0x1b/0x40 [qxl]
[  +0.000003]        [<ffffffff81484425>] local_pci_probe+0x45/0xa0
[  +0.000002]        [<ffffffff81485779>] pci_device_probe+0xf9/0x150
[  +0.000017]        [<ffffffff81592699>] driver_probe_device+0x209/0x4b0
[  +0.000004]        [<ffffffff81592a23>] __driver_attach+0xa3/0xb0
[  +0.000001]        [<ffffffff815900a3>] bus_for_each_dev+0x73/0xc0
[  +0.000002]        [<ffffffff81591f4e>] driver_attach+0x1e/0x20
[  +0.000002]        [<ffffffff81591ae8>] bus_add_driver+0x188/0x260
[  +0.000002]        [<ffffffff81593854>] driver_register+0x64/0xf0
[  +0.000002]        [<ffffffff81483ca4>] __pci_register_driver+0x64/0x70
[  +0.000002]        [<ffffffffa004149a>] drm_pci_init+0xfa/0x130 [drm]
[  +0.000007]        [<ffffffffa00b1048>]
acpi_cpufreq_resume+0x28/0x70 [acpi_cpufreq]
[  +0.000004]        [<ffffffff81002148>] do_one_initcall+0xd8/0x210
[  +0.000004]        [<ffffffff81881e11>] do_init_module+0x61/0x1ce
[  +0.000003]        [<ffffffff8115daf9>] load_module+0x2359/0x2710
[  +0.000003]        [<ffffffff8115dff5>] SyS_init_module+0x145/0x190
[  +0.000002]        [<ffffffff8188caee>] system_call_fastpath+0x12/0x76
[  +0.000003]
              -> #0 (reservation_ww_class_acquire){+.+.+.}:
[  +0.000002]        [<ffffffff81111bb9>] __lock_acquire+0x1ce9/0x2050
[  +0.000002]        [<ffffffff811129f7>] lock_acquire+0xc7/0x2a0
[  +0.000002]        [<ffffffffa009099c>]
ttm_eu_reserve_buffers+0xcc/0x640 [ttm]
[  +0.000004]        [<ffffffffa010a635>]
qxl_release_reserve_list+0x55/0x120 [qxl]
[  +0.000003]        [<ffffffffa0108484>] qxl_draw_dirty_fb+0x184/0x480 [qxl]
[  +0.000003]        [<ffffffffa0101810>] qxl_crtc_page_flip+0x100/0x230 [qxl]
[  +0.000003]        [<ffffffffa004af5b>]
drm_mode_page_flip_ioctl+0x1ab/0x360 [drm]
[  +0.000007]        [<ffffffffa0039c9f>] drm_ioctl+0x1df/0x6a0 [drm]
[  +0.000005]        [<ffffffff81297668>] do_vfs_ioctl+0x308/0x560
[  +0.000003]        [<ffffffff81297941>] SyS_ioctl+0x81/0xa0
[  +0.000002]        [<ffffffff8188caee>] system_call_fastpath+0x12/0x76
[  +0.000002]
              other info that might help us debug this:

[  +0.000001]  Possible unsafe locking scenario:

[  +0.000001]        CPU0                    CPU1
[  +0.000001]        ----                    ----
[  +0.000001]   lock(reservation_ww_class_mutex);
[  +0.000003]                                lock(reservation_ww_class_acquire);
[  +0.000002]                                lock(reservation_ww_class_mutex);
[  +0.000002]   lock(reservation_ww_class_acquire);
[  +0.000003]
               *** DEADLOCK ***

[  +0.000003] 3 locks held by gnome-shell/1012:
[  +0.000001]  #0:  (crtc_ww_class_acquire){+.+.+.}, at:
[<ffffffffa00554fc>] drm_modeset_lock_crtc+0x4c/0x110 [drm]
[  +0.000038]  #1:  (crtc_ww_class_mutex){+.+.+.}, at:
[<ffffffffa005531d>] drm_modeset_lock+0x3d/0x110 [drm]
[  +0.000013]  #2:  (reservation_ww_class_mutex){+.+.+.}, at:
[<ffffffffa01017cb>] qxl_crtc_page_flip+0xbb/0x230 [qxl]
[  +0.000007]
              stack backtrace:
[  +0.000003] CPU: 0 PID: 1012 Comm: gnome-shell Not tainted
4.1.0-0.rc0.git2.1.fc23.x86_64 #1
[  +0.000001] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
[  +0.000000]  0000000000000000 00000000139e8b9c ffff88002c54f918
ffffffff81882fc7
[  +0.000000]  0000000000000000 ffffffff82c0f040 ffff88002c54f968
ffffffff8110e37d
[  +0.000000]  00000000001d9640 ffff88002c54f9d8 ffff88002e82dbf8
0000000000000003
[  +0.000000] Call Trace:
[  +0.000000]  [<ffffffff81882fc7>] dump_stack+0x4c/0x65
[  +0.000000]  [<ffffffff8110e37d>] print_circular_bug+0x1cd/0x230
[  +0.000000]  [<ffffffff81111bb9>] __lock_acquire+0x1ce9/0x2050
[  +0.000000]  [<ffffffff81889a23>] ? __mutex_unlock_slowpath+0xc3/0x1c0
[  +0.000000]  [<ffffffff811129f7>] lock_acquire+0xc7/0x2a0
[  +0.000000]  [<ffffffffa010a635>] ? qxl_release_reserve_list+0x55/0x120 [qxl]
[  +0.000000]  [<ffffffff8110fa8d>] ? trace_hardirqs_on_caller+0x13d/0x1e0
[  +0.000000]  [<ffffffffa009099c>] ttm_eu_reserve_buffers+0xcc/0x640 [ttm]
[  +0.000000]  [<ffffffffa010a635>] ? qxl_release_reserve_list+0x55/0x120 [qxl]
[  +0.000000]  [<ffffffffa010a635>] qxl_release_reserve_list+0x55/0x120 [qxl]
[  +0.000000]  [<ffffffffa0108484>] qxl_draw_dirty_fb+0x184/0x480 [qxl]
[  +0.000000]  [<ffffffff810ee618>] ? sched_clock_cpu+0x98/0xc0
[  +0.000000]  [<ffffffffa0101810>] qxl_crtc_page_flip+0x100/0x230 [qxl]
[  +0.000000]  [<ffffffffa004af5b>] drm_mode_page_flip_ioctl+0x1ab/0x360 [drm]
[  +0.000000]  [<ffffffffa0039c9f>] drm_ioctl+0x1df/0x6a0 [drm]
[  +0.000000]  [<ffffffff813b1935>] ? inode_has_perm.isra.48+0x55/0xa0
[  +0.000000]  [<ffffffff81297668>] do_vfs_ioctl+0x308/0x560
[  +0.000000]  [<ffffffff81297941>] SyS_ioctl+0x81/0xa0
[  +0.000000]  [<ffffffff8188caee>] system_call_fastpath+0x12/0x76


More information about the dri-devel mailing list