diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2013-12-04 07:13:58 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-12-17 19:49:08 -0500 |
commit | 73e9efd4bddbf42d2938a150ba680b73b6126b77 (patch) | |
tree | 146a8b66778c04efcd05f7b22c4fcb13c859ff7f /drivers/gpu/drm/qxl/qxl_display.c | |
parent | ee61c7303f84e2ef978aaed9b9640476c63ba586 (diff) |
drm: Push dirtyfb ioctl kms locking down to drivers
Not all drivers will need take all the modeset locks for dirtyfb, so
push the locking down to the drivers.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Jakob Bornecrantz <jakob@vmware.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/qxl/qxl_display.c')
-rw-r--r-- | drivers/gpu/drm/qxl/qxl_display.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c index 5e827c29d194..b8f3bc7cf8f0 100644 --- a/drivers/gpu/drm/qxl/qxl_display.c +++ b/drivers/gpu/drm/qxl/qxl_display.c | |||
@@ -399,10 +399,14 @@ static int qxl_framebuffer_surface_dirty(struct drm_framebuffer *fb, | |||
399 | struct qxl_bo *qobj; | 399 | struct qxl_bo *qobj; |
400 | int inc = 1; | 400 | int inc = 1; |
401 | 401 | ||
402 | drm_modeset_lock_all(fb->dev); | ||
403 | |||
402 | qobj = gem_to_qxl_bo(qxl_fb->obj); | 404 | qobj = gem_to_qxl_bo(qxl_fb->obj); |
403 | /* if we aren't primary surface ignore this */ | 405 | /* if we aren't primary surface ignore this */ |
404 | if (!qobj->is_primary) | 406 | if (!qobj->is_primary) { |
407 | drm_modeset_unlock_all(fb->dev); | ||
405 | return 0; | 408 | return 0; |
409 | } | ||
406 | 410 | ||
407 | if (!num_clips) { | 411 | if (!num_clips) { |
408 | num_clips = 1; | 412 | num_clips = 1; |
@@ -417,6 +421,9 @@ static int qxl_framebuffer_surface_dirty(struct drm_framebuffer *fb, | |||
417 | 421 | ||
418 | qxl_draw_dirty_fb(qdev, qxl_fb, qobj, flags, color, | 422 | qxl_draw_dirty_fb(qdev, qxl_fb, qobj, flags, color, |
419 | clips, num_clips, inc); | 423 | clips, num_clips, inc); |
424 | |||
425 | drm_modeset_unlock_all(fb->dev); | ||
426 | |||
420 | return 0; | 427 | return 0; |
421 | } | 428 | } |
422 | 429 | ||