On 2023/09/14 6:08, Thomas Gleixner wrote: > Maybe the VKMS people need to understand locking in the first place. The > first thing I saw in this code is: > > static enum hrtimer_restart vkms_vblank_simulate(struct hrtimer *timer) > { > ... > mutex_unlock(&output->enabled_lock); > > What? > > Unlocking a mutex in the context of a hrtimer callback is simply > violating all mutex locking rules. > > How has this code ever survived lock debugging without triggering a big > fat warning? Commit a0e6a017ab56936c ("drm/vkms: Fix race-condition between the hrtimer and the atomic commit") in 6.6-rc1 replaced spinlock with mutex. So we haven't tested with the lock debugging yet... Maíra and Arthur, mutex_unlock() from interrupt context is not permitted. Please revert that patch immediately. I guess that a semaphore (down()/up()) could be used instead of a mutex.