I've been debugging some problems with interrupts and vt switch on i9xx, I suppose suspend/resume might be affected as well.. The X DRI code reference counts the lock nesting, so two locks requires two unlocks, this is needed to make sure we can lock for LeaveVT, on top of the wakeup handler lock and not lose the lock, However on VT switch the driver calls the i830DRILock which doesn't actually call DRILock as it checks the LockHeld variable. I'm not sure what the correct fix is, I've made my tree call DRILock and DRIUnlock directly on LeaveVT and EnterVT respectively.... and it seems to fix the problem for me..
I've fixed this in git.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.