FreeBSDDesktop / kms-drm

the DRM part of the linuxkpi-based KMS
63 stars 26 forks source link

[amdgpu] drm_global_mutex left locked after weston crashes #98

Closed valpackett closed 3 years ago

valpackett commented 5 years ago

Restarting a display server (Weston, especially) after a crash has always resulted in… various interesting behaviors :)

In older versions (4.11 or so), it usually succeeded after some time (like a minute or so maybe), but sometimes I ended up in some screwed-up state where no displays were found or something (instant error basically).

But with amdgpu.DC enabled (and atomic modesetting used thanks to that) in 4.15-4.16, it just hangs forever.

weston is waiting for weston-launch to open the GPU device, and weston-launch is locked up on drm_global_mutex in the drm_stub_open function:

  PID    TID COMM                TDNAME              KSTACK
16210 101913 weston-launch       -                   mi_switch sleepq_wait _sx_xlock_hard drm_stub_open linux_dev_fdopen devfs_open VOP_OPEN_APV vn_open_vnode vn_open_cred kern_openat filemon_wrapper_openat amd64_syscall fast_syscall_common

Seems like it's left locked somehow when the display server (drm master) dies?!

valpackett commented 5 years ago

Related: kstack for unkillable Weston:

__mtx_lock_sleep linux_signal_pending dma_fence_default_wait ttm_bo_vm_fault linux_cdev_pager_populate vm_fault_hold vm_fault trap_pfault trap calltrap

cc @hselasky