path: root/drivers/gpu/drm/radeon/r600_cs.c
diff options
authorIlija Hadzic <>2011-10-28 17:43:28 -0400
committerDave Airlie <>2012-01-05 14:43:02 +0000
commit09b4ea47d1041612b101c369969db123ac2c1511 (patch)
tree177a2cf53107d2451f47cf2680ce20db8af5f623 /drivers/gpu/drm/radeon/r600_cs.c
parent53fead966a584cd2130e0c5565726dd56ccf7924 (diff)
drm: make DRM_UNLOCKED ioctls with their own mutex
drm_getclient, drm_getstats and drm_getmap (with a few minor adjustments) do not need global mutex, so fix that and make the said ioctls DRM_UNLOCKED. Details: drm_getclient: the only thing that should be protected here is dev->filelist and that is already protected everywhere with dev->struct_mutex. drm_getstats: there is no need for any mutex here because the loop runs through quasi-static (set at load time only) data, and the actual count access is done with atomic_read() drm_getmap already uses dev->struct_mutex to protect dev->maplist, which also used to protect the same structure everywhere else except at three places: * drm_getsarea, which doesn't grab *any* mutex before touching dev->maplist (so no drm_global_mutex doesn't help here either; different issue for a different patch). However, drivers seem to call it only at initialization time so it probably doesn't matter * drm_master_destroy, which is called from drm_master_put, which in turn is protected with dev->struct_mutex everywhere else in drm module, so we are good here too. * drm_getsareactx, which releases the dev->struct_mutex too early, but this patch includes the fix for that. v2: * incorporate comments received from Daniel Vetter * include the (long) explanation above to make it clear what we are doing (and why), also at Daniel Vetter's request * tighten up mutex grab/release locations to only encompass real critical sections, rather than some random code around them Signed-off-by: Ilija Hadzic <> Reviewed-by: Daniel Vetter <> Signed-off-by: Dave Airlie <>
Diffstat (limited to 'drivers/gpu/drm/radeon/r600_cs.c')
0 files changed, 0 insertions, 0 deletions