From: "Murthy, Arun R" <arun.r.murthy@intel.com>
To: Louis Chauvet <louis.chauvet@bootlin.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Jani Nikula <jani.nikula@linux.intel.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Tvrtko Ursulin <tursulin@ursulin.net>, <xaver.hugl@kde.org>,
<harry.wentland@amd.com>, <uma.shankar@intel.com>
Cc: <dri-devel@lists.freedesktop.org>,
<intel-gfx@lists.freedesktop.org>,
<intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH v7 3/5] drm/atomic: Allocate atomic_state at the beginning of atomic_ioctl
Date: Thu, 22 Jan 2026 10:11:19 +0530 [thread overview]
Message-ID: <4a1e6ff2-fa37-440c-aaae-9ec0eeb1befe@intel.com> (raw)
In-Reply-To: <52a1c55b-43fe-46b6-9846-21de0f263542@bootlin.com>
Thanks for the review and sorry I missed to reply back on this!
On 07-01-2026 16:33, Louis Chauvet wrote:
>
>
> On 1/6/26 05:37, Arun R Murthy wrote:
>> Move atomic_state allocation to the beginning of the atomic_ioctl
>> to accommodate drm_mode_atomic_err_code usage for returning error
>> code on failures.
>> As atomic state is required for drm_mode_atomic_err_code to store the
>> error codes.
>>
>> v7: Reframe commit message (Suraj)
>>
>> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
>> ---
>> drivers/gpu/drm/drm_atomic_uapi.c | 20 +++++++++++---------
>> 1 file changed, 11 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c
>> b/drivers/gpu/drm/drm_atomic_uapi.c
>> index
>> 7320db4b8489f10e24ed772094c77e2172951633..02029b5d7832eeaf4a225096a94947344083fc0b
>> 100644
>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> @@ -1553,13 +1553,21 @@ int drm_mode_atomic_ioctl(struct drm_device
>> *dev,
>> struct drm_modeset_acquire_ctx ctx;
>> struct drm_out_fence_state *fence_state;
>> int ret = 0;
>> - unsigned int i, j, num_fences;
>> + unsigned int i, j, num_fences = 0;
>> bool async_flip = false;
>> /* disallow for drivers not supporting atomic: */
>> if (!drm_core_check_feature(dev, DRIVER_ATOMIC))
>> return -EOPNOTSUPP;
>> + state = drm_atomic_state_alloc(dev);
>> + if (!state)
>> + return -ENOMEM;
>
> It seems strange to add num_fences = 0 at the top and then don't use
> it before the num_fences = 0. Did you forgot to replace return -ENOMEM
> by goto out?
>
As part of this series in places where we return on error has been
changed to goto out, cleanup and then return with error code. In cleanup
we will be completing the fences. Hence setting this num_fences to 0
initially.
>> +
>> + drm_modeset_acquire_init(&ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE);
>> + state->acquire_ctx = &ctx;
>> + state->allow_modeset = !!(arg->flags &
>> DRM_MODE_ATOMIC_ALLOW_MODESET);
>> +
>> /* disallow for userspace that has not enabled atomic cap (even
>> * though this may be a bit overkill, since legacy userspace
>> * wouldn't know how to call this ioctl)
>> @@ -1598,13 +1606,6 @@ int drm_mode_atomic_ioctl(struct drm_device *dev,
>> return -EINVAL;
>> }
>> - state = drm_atomic_state_alloc(dev);
>> - if (!state)
>> - return -ENOMEM;
>> -
>> - drm_modeset_acquire_init(&ctx, DRM_MODESET_ACQUIRE_INTERRUPTIBLE);
>> - state->acquire_ctx = &ctx;
>> - state->allow_modeset = !!(arg->flags &
>> DRM_MODE_ATOMIC_ALLOW_MODESET);
>> state->plane_color_pipeline = file_priv->plane_color_pipeline;
>> retry:
>> @@ -1703,7 +1704,8 @@ int drm_mode_atomic_ioctl(struct drm_device *dev,
>> }
>> out:
>> - complete_signaling(dev, state, fence_state, num_fences, !ret);
>> + if (num_fences)
>> + complete_signaling(dev, state, fence_state, num_fences, !ret);
>
> Hello Arun,
>
> I am not familiar with this part of DRM, but this num_fences change
> seems strange and unrelated to this patch.
>
> If this is intentional, I think this change the previous behavior:
>
> num_fences = 0;
> for (...) {
> if (ret)
> goto out;
> }
> ret = prepare_signaling(dev, state, arg, file_priv,
> fence_state, &num_fences);
> out:
> complete_signaling(dev, state, fence_state, num_fences, !ret);
>
> Without your change:
>
> => no error -> prepare_signaling/complete_signaling are called with
> num_fences=0
> => error in prepare_signaling -> complete_signaling is called in all
> cases
> => error in loop = complete_signaling without prepare_signaling (very
> strange, is it your fix?)
>
> With your change:
>
> => no error -> same
> => error in prepare_signaling -> depends on prepare_signaling, only if
> num_fences!=0 (a bit strange, but maybe expected)
> => error in loop -> don't call complete_signaling
>
> I don't know if the previous behavior is broken, but if this change is
> needed, maybe you can extract it in a different patch?
Yes even prior to this change it seems to have some issues and this
patch/series is not trying to fix that.
In this series before the for loop on error condition instead of exiting
goto error with cleanup is added for which num_fences is set to 0 in the
beginning.
Sure will move this change out of this patch.
Thanks and Regards,
Arun R Murthy
-------------------
>
> Thanks,
> Louis Chauvet
>
>
>> if (ret == -EDEADLK) {
>> drm_atomic_state_clear(state);
>>
>
next prev parent reply other threads:[~2026-01-22 4:41 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-06 4:37 [PATCH v7 0/5] User readable error codes on atomic_ioctl failure Arun R Murthy
2026-01-06 4:37 ` [PATCH v7 1/5] drm: Define user readable error codes for atomic ioctl Arun R Murthy
2026-01-08 6:13 ` Kandpal, Suraj
2026-01-21 13:47 ` Xaver Hugl
2026-01-21 13:58 ` Xaver Hugl
2026-01-22 2:54 ` Murthy, Arun R
2026-01-22 16:23 ` Xaver Hugl
2026-01-22 2:48 ` Murthy, Arun R
2026-01-06 4:37 ` [PATCH v7 2/5] drm/atomic: Add error_code element in atomic_state Arun R Murthy
2026-01-08 6:15 ` Kandpal, Suraj
2026-01-06 4:37 ` [PATCH v7 3/5] drm/atomic: Allocate atomic_state at the beginning of atomic_ioctl Arun R Murthy
2026-01-07 11:03 ` Louis Chauvet
2026-01-22 4:41 ` Murthy, Arun R [this message]
2026-01-06 4:37 ` [PATCH v7 4/5] drm/atomic: Return user readable error in atomic_ioctl Arun R Murthy
2026-01-08 6:20 ` Kandpal, Suraj
2026-01-06 4:38 ` [PATCH v7 5/5] drm/i915/display: Error codes for async flip failures Arun R Murthy
2026-01-08 6:24 ` Kandpal, Suraj
2026-01-06 4:46 ` ✗ CI.checkpatch: warning for User readable error codes on atomic_ioctl failure (rev6) Patchwork
2026-01-06 4:47 ` ✓ CI.KUnit: success " Patchwork
2026-01-06 5:03 ` ✗ CI.checksparse: warning " Patchwork
2026-01-06 5:34 ` ✓ Xe.CI.BAT: success " Patchwork
2026-01-06 7:12 ` ✗ Xe.CI.Full: failure " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4a1e6ff2-fa37-440c-aaae-9ec0eeb1befe@intel.com \
--to=arun.r.murthy@intel.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=louis.chauvet@bootlin.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=rodrigo.vivi@intel.com \
--cc=simona@ffwll.ch \
--cc=tursulin@ursulin.net \
--cc=tzimmermann@suse.de \
--cc=uma.shankar@intel.com \
--cc=xaver.hugl@kde.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox