On Tue, Jul 11, 2017 at 04:33:09PM +0200, Maarten Lankhorst wrote: > drm_atomic_helper_swap_state() will be changed to interruptible waiting > in the next few commits, so all drivers have to be changed to handling > failure. > > MSM has its own busy tracking, which means the swap_state call can be > done with stall = false, in which case it should never return an error. > Handle failure with BUG_ON for this reason. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Cc: Rob Clark <robdclark@xxxxxxxxx> > Cc: linux-arm-msm@xxxxxxxxxxxxxxx > Cc: freedreno@xxxxxxxxxxxxxxxxxxxxx > --- > drivers/gpu/drm/msm/msm_atomic.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c > index 9633a68b14d7..badfa8717317 100644 > --- a/drivers/gpu/drm/msm/msm_atomic.c > +++ b/drivers/gpu/drm/msm/msm_atomic.c > @@ -232,20 +232,18 @@ int msm_atomic_commit(struct drm_device *dev, > * mark our set of crtc's as busy: > */ > ret = start_atomic(dev->dev_private, c->crtc_mask); > - if (ret) { > - kfree(c); > - goto error; > - } > + if (ret) > + goto err_free; > + > + BUG_ON(drm_atomic_helper_swap_state(state, false) < 0); Hm, not sure we want to do this, makes switching msm to the nonblocking helpers a bit more tricky. And the got err_free thing looks like leftovers from an old version. But it's all correct. Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > > /* > * This is the point of no return - everything below never fails except > * when the hw goes bonghits. Which means we can commit the new state on > * the software side now. > + * > + * swap driver private state while still holding state_lock > */ > - > - drm_atomic_helper_swap_state(state, true); > - > - /* swap driver private state while still holding state_lock */ > if (to_kms_state(state)->state) > priv->kms->funcs->swap_state(priv->kms, state); > > @@ -275,6 +273,8 @@ int msm_atomic_commit(struct drm_device *dev, > > return 0; > > +err_free: > + kfree(c); > error: > drm_atomic_helper_cleanup_planes(dev, state); > return ret; > -- > 2.11.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel