On Wednesday, March 22, 2017 10:50:52 PM EDT Daniel Vetter wrote: > No need to grab both plane and crtc locks at the same time, we can do > them one after the other. If userspace races it'll get what it > deserves either way. > > This removes another user of drm_modeset_lock_crtc. There's only one > left. > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > --- > drivers/gpu/drm/drm_crtc.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 660b4c8715de..df1ff0b8818b 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -406,16 +406,18 @@ int drm_mode_getcrtc(struct drm_device *dev, > if (!crtc) > return -ENOENT; > > - drm_modeset_lock_crtc(crtc, crtc->primary); > crtc_resp->gamma_size = crtc->gamma_size; > > + drm_modeset_lock(&crtc->primary->mutex, NULL); > if (crtc->primary->state && crtc->primary->state->fb) > crtc_resp->fb_id = crtc->primary->state->fb->base.id; > else if (!crtc->primary->state && crtc->primary->fb) > crtc_resp->fb_id = crtc->primary->fb->base.id; > else > crtc_resp->fb_id = 0; > + drm_modeset_unlock(&crtc->primary->mutex); > > + drm_modeset_lock(&crtc->mutex, NULL); > if (crtc->state) { > crtc_resp->x = crtc->primary->state->src_x >> 16; > crtc_resp->y = crtc->primary->state->src_y >> 16; What about crtc->primary here? Shouldn't that also be locked with the crtc- >primary->mutex or do we treat state differently? Still not 100% on the exact locking semantics. Harry > @@ -437,7 +439,7 @@ int drm_mode_getcrtc(struct drm_device *dev, > crtc_resp->mode_valid = 0; > } > } > - drm_modeset_unlock_crtc(crtc); > + drm_modeset_unlock(&crtc->mutex); > > return 0; > } _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel