Until I have a chance to further evaluate and re-work the locking here,
change from an adaptive to spin mutex @ IPL_TTY. This seems to mitigate or eliminate a lot of locking-related issues (such as a hang when running glxgears under AIGLX). Tested by me and Vincent <10.50@free.fr>. In this code, we have three locks: irq, dma, and device. If anyone has any thoughts on how to improve this situation, e.g. by using different lock types/priorities/soft interrupts/etc. for different locks, please share them with me. NOTE: I've had the best results thusfar using Mesa 7.0.2-rc1 (r300 users could even try the r300 driver code from the master branch) and xorg-server 1.4+patches from GIT.
This commit is contained in:
parent
a3bf2627a4
commit
d81bca762e
@ -227,7 +227,7 @@ MALLOC_DECLARE(M_DRM);
|
||||
#define DRM_STRUCTPROC struct proc
|
||||
#define DRM_STRUCTCDEVPROC struct lwp
|
||||
#define DRM_SPINTYPE kmutex_t
|
||||
#define DRM_SPININIT(l,name) mutex_init(l, MUTEX_DRIVER, IPL_NONE)
|
||||
#define DRM_SPININIT(l,name) mutex_init(l, MUTEX_DRIVER, IPL_TTY)
|
||||
#define DRM_SPINUNINIT(l) mutex_destroy(l)
|
||||
#define DRM_SPINLOCK(l) mutex_enter(l)
|
||||
#define DRM_SPINUNLOCK(u) mutex_exit(u)
|
||||
|
Loading…
Reference in New Issue
Block a user