mirror of
https://github.com/torvalds/linux.git
synced 2026-06-24 23:21:57 +02:00
This restricts the use of the big kernel lock to the i830 and i810 device drivers. The three remaining users in common code (open, ioctl and release) get converted to a new mutex, the drm_global_mutex, making the locking stricter than the big kernel lock. This may have a performance impact, but only in those cases that currently don't use DRM_UNLOCKED flag in the ioctl list and would benefit from that anyway. The reason why i810 and i830 cannot use drm_global_mutex in their mmap functions is a lock-order inversion problem between the current use of the BKL and mmap_sem in these drivers. Since the BKL has release-on-sleep semantics, it's harmless but it would cause trouble if we replace the BKL with a mutex. Instead, these drivers get their own ioctl wrappers that take the BKL around every ioctl call and then set their own handlers as DRM_UNLOCKED. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: David Airlie <airlied@linux.ie> Cc: dri-devel@lists.freedesktop.org Signed-off-by: Dave Airlie <airlied@redhat.com> |
||
|---|---|---|
| .. | ||
| i2c | ||
| ttm | ||
| drm_buffer.h | ||
| drm_cache.h | ||
| drm_core.h | ||
| drm_crtc_helper.h | ||
| drm_crtc.h | ||
| drm_dp_helper.h | ||
| drm_edid.h | ||
| drm_encoder_slave.h | ||
| drm_fb_helper.h | ||
| drm_fixed.h | ||
| drm_global.h | ||
| drm_hashtab.h | ||
| drm_mem_util.h | ||
| drm_memory.h | ||
| drm_mm.h | ||
| drm_mode.h | ||
| drm_os_linux.h | ||
| drm_pciids.h | ||
| drm_sarea.h | ||
| drm_sman.h | ||
| drm_sysfs.h | ||
| drm.h | ||
| drmP.h | ||
| i810_drm.h | ||
| i830_drm.h | ||
| i915_drm.h | ||
| Kbuild | ||
| mga_drm.h | ||
| nouveau_drm.h | ||
| r128_drm.h | ||
| radeon_drm.h | ||
| savage_drm.h | ||
| sis_drm.h | ||
| via_drm.h | ||
| vmwgfx_drm.h | ||