[PATCH 12/29] drm/atomic_helper: Pass nonblock to commit_tail

Maxime Ripard posted 29 patches 1 month ago
[PATCH 12/29] drm/atomic_helper: Pass nonblock to commit_tail
Posted by Maxime Ripard 1 month ago
We'll need to know if a commit is blocking or non-blocking in
commit_tail later on, so let's pass it along.

Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
 drivers/gpu/drm/drm_atomic_helper.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index f59512476ebf2b48e1c7034950bcaf99237f03c6..14d9bc282ca570964e494936090898b2dc6bee31 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -2332,11 +2332,11 @@ void drm_atomic_helper_commit_tail_rpm(struct drm_atomic_state *state)
 
 	drm_atomic_helper_cleanup_planes(dev, state);
 }
 EXPORT_SYMBOL(drm_atomic_helper_commit_tail_rpm);
 
-static void commit_tail(struct drm_atomic_state *state)
+static void commit_tail(struct drm_atomic_state *state, bool nonblock)
 {
 	struct drm_device *dev = state->dev;
 	const struct drm_mode_config_helper_funcs *funcs;
 	struct drm_crtc_state *new_crtc_state;
 	struct drm_crtc *crtc;
@@ -2390,11 +2390,11 @@ static void commit_tail(struct drm_atomic_state *state)
 static void commit_work(struct work_struct *work)
 {
 	struct drm_atomic_state *state = container_of(work,
 						      struct drm_atomic_state,
 						      commit_work);
-	commit_tail(state);
+	commit_tail(state, true);
 }
 
 /**
  * drm_atomic_helper_async_check - check if state can be committed asynchronously
  * @dev: DRM device
@@ -2610,11 +2610,11 @@ int drm_atomic_helper_commit(struct drm_device *dev,
 
 	drm_atomic_state_get(state);
 	if (nonblock)
 		queue_work(system_unbound_wq, &state->commit_work);
 	else
-		commit_tail(state);
+		commit_tail(state, false);
 
 	return 0;
 
 err:
 	drm_atomic_helper_unprepare_planes(dev, state);

-- 
2.50.1
Re: [PATCH 12/29] drm/atomic_helper: Pass nonblock to commit_tail
Posted by Thomas Zimmermann 1 month ago

Am 02.09.25 um 10:32 schrieb Maxime Ripard:
> We'll need to know if a commit is blocking or non-blocking in
> commit_tail later on, so let's pass it along.
>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>

Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>

> ---
>   drivers/gpu/drm/drm_atomic_helper.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
> index f59512476ebf2b48e1c7034950bcaf99237f03c6..14d9bc282ca570964e494936090898b2dc6bee31 100644
> --- a/drivers/gpu/drm/drm_atomic_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> @@ -2332,11 +2332,11 @@ void drm_atomic_helper_commit_tail_rpm(struct drm_atomic_state *state)
>   
>   	drm_atomic_helper_cleanup_planes(dev, state);
>   }
>   EXPORT_SYMBOL(drm_atomic_helper_commit_tail_rpm);
>   
> -static void commit_tail(struct drm_atomic_state *state)
> +static void commit_tail(struct drm_atomic_state *state, bool nonblock)
>   {
>   	struct drm_device *dev = state->dev;
>   	const struct drm_mode_config_helper_funcs *funcs;
>   	struct drm_crtc_state *new_crtc_state;
>   	struct drm_crtc *crtc;
> @@ -2390,11 +2390,11 @@ static void commit_tail(struct drm_atomic_state *state)
>   static void commit_work(struct work_struct *work)
>   {
>   	struct drm_atomic_state *state = container_of(work,
>   						      struct drm_atomic_state,
>   						      commit_work);
> -	commit_tail(state);
> +	commit_tail(state, true);
>   }
>   
>   /**
>    * drm_atomic_helper_async_check - check if state can be committed asynchronously
>    * @dev: DRM device
> @@ -2610,11 +2610,11 @@ int drm_atomic_helper_commit(struct drm_device *dev,
>   
>   	drm_atomic_state_get(state);
>   	if (nonblock)
>   		queue_work(system_unbound_wq, &state->commit_work);
>   	else
> -		commit_tail(state);
> +		commit_tail(state, false);
>   
>   	return 0;
>   
>   err:
>   	drm_atomic_helper_unprepare_planes(dev, state);
>

-- 
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)