[PATCH v2 18/28] drm/atomic_helper: Pass nonblock to commit_tail

From: Maxime Ripard

Date: Thu Apr 23 2026 - 06:22:37 EST


The state comparison infrastructure will need to know if a
commit is blocking or non-blocking in commit_tail. Pass the nonblock
flag along.

Reviewed-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx>
---
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 26953ed6b53e..9deb3dad34a6 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -2029,11 +2029,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;
@@ -2087,11 +2087,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
@@ -2307,11 +2307,11 @@ int drm_atomic_helper_commit(struct drm_device *dev,

drm_atomic_state_get(state);
if (nonblock)
queue_work(system_dfl_wq, &state->commit_work);
else
- commit_tail(state);
+ commit_tail(state, false);

return 0;

err:
drm_atomic_helper_unprepare_planes(dev, state);

--
2.53.0