Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754454AbdGNOag (ORCPT ); Fri, 14 Jul 2017 10:30:36 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:36704 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754024AbdGNOaf (ORCPT ); Fri, 14 Jul 2017 10:30:35 -0400 Date: Fri, 14 Jul 2017 16:30:30 +0200 From: Daniel Vetter To: Maarten Lankhorst Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [Intel-gfx] [PATCH v2 02/12] drm/atomic: Change drm_atomic_helper_swap_state to return an error. Message-ID: <20170714143030.aksgw5chjlznwoye@phenom.ffwll.local> Mail-Followup-To: Maarten Lankhorst , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20170711143314.2148-1-maarten.lankhorst@linux.intel.com> <20170711143314.2148-3-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170711143314.2148-3-maarten.lankhorst@linux.intel.com> X-Operating-System: Linux phenom 4.11.0-1-amd64 User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3482 Lines: 105 On Tue, Jul 11, 2017 at 04:33:04PM +0200, Maarten Lankhorst wrote: > We want to change swap_state to wait indefinitely, but to do this > swap_state should wait interruptibly. This requires propagating > the error to each driver. > > Cc: dri-devel@lists.freedesktop.org > Cc: linux-kernel@vger.kernel.org > Cc: intel-gfx@lists.freedesktop.org > Signed-off-by: Maarten Lankhorst Reviewed-by: Daniel Vetter > --- > drivers/gpu/drm/drm_atomic_helper.c | 22 ++++++++++++++++------ > include/drm/drm_atomic_helper.h | 3 +-- > 2 files changed, 17 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 667ec97d4efb..bfb98fbd0e0e 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -1510,10 +1510,8 @@ int drm_atomic_helper_commit(struct drm_device *dev, > > if (!nonblock) { > ret = drm_atomic_helper_wait_for_fences(dev, state, true); > - if (ret) { > - drm_atomic_helper_cleanup_planes(dev, state); > - return ret; > - } > + if (ret) > + goto err; > } > > /* > @@ -1522,7 +1520,9 @@ int drm_atomic_helper_commit(struct drm_device *dev, > * the software side now. > */ > > - drm_atomic_helper_swap_state(state, true); > + ret = drm_atomic_helper_swap_state(state, true); > + if (ret) > + goto err; > > /* > * Everything below can be run asynchronously without the need to grab > @@ -1551,6 +1551,10 @@ int drm_atomic_helper_commit(struct drm_device *dev, > commit_tail(state); > > return 0; > + > +err: > + drm_atomic_helper_cleanup_planes(dev, state); > + return ret; > } > EXPORT_SYMBOL(drm_atomic_helper_commit); > > @@ -2254,8 +2258,12 @@ EXPORT_SYMBOL(drm_atomic_helper_cleanup_planes); > * the &drm_plane.state, &drm_crtc.state or &drm_connector.state pointer. With > * the current atomic helpers this is almost always the case, since the helpers > * don't pass the right state structures to the callbacks. > + * > + * Returns: > + * > + * Always returns 0, cannot fail yet. > */ > -void drm_atomic_helper_swap_state(struct drm_atomic_state *state, > +int drm_atomic_helper_swap_state(struct drm_atomic_state *state, > bool stall) > { > int i; > @@ -2332,6 +2340,8 @@ void drm_atomic_helper_swap_state(struct drm_atomic_state *state, > > __for_each_private_obj(state, obj, obj_state, i, funcs) > funcs->swap_state(obj, &state->private_objs[i].obj_state); > + > + return 0; > } > EXPORT_SYMBOL(drm_atomic_helper_swap_state); > > diff --git a/include/drm/drm_atomic_helper.h b/include/drm/drm_atomic_helper.h > index dd196cc0afd7..37c9534ff691 100644 > --- a/include/drm/drm_atomic_helper.h > +++ b/include/drm/drm_atomic_helper.h > @@ -84,8 +84,7 @@ void > drm_atomic_helper_disable_planes_on_crtc(struct drm_crtc_state *old_crtc_state, > bool atomic); > > -void drm_atomic_helper_swap_state(struct drm_atomic_state *state, > - bool stall); > +int drm_atomic_helper_swap_state(struct drm_atomic_state *state, bool stall); > > /* nonblocking commit helpers */ > int drm_atomic_helper_setup_commit(struct drm_atomic_state *state, > -- > 2.11.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch