On Tue, 2026-03-31 at 11:39 +0200, Christian König wrote:
>
>
> On 3/31/26 11:20, Thomas Hellström wrote:
> > Use __UNIQUE_ID as done elsewhere in the kernel rather than a
> > hand-rolled __PASTE to craft a unique id.
> >
> > Also use __maybe_unused rather than (void) to signify that a
> > variable, althrough written to, may not actually be used.
> >
> > Signed-off-by: Thomas Hellström <[email protected]>
> > ---
> > include/drm/drm_exec.h | 23 ++++++++++++++---------
> > 1 file changed, 14 insertions(+), 9 deletions(-)
> >
> > diff --git a/include/drm/drm_exec.h b/include/drm/drm_exec.h
> > index 25db52dd2af0..fc95a979e253 100644
> > --- a/include/drm/drm_exec.h
> > +++ b/include/drm/drm_exec.h
> > @@ -89,6 +89,19 @@ drm_exec_obj(struct drm_exec *exec, unsigned
> > long index)
> > for (unsigned long _index = (exec)->num_objects -
> > 1; \
> > ((obj) = drm_exec_obj(exec, _index)); --_index)
> >
> > +/*
> > + * Helper to drm_exec_until_all_locked(). Don't use directly.
> > + *
> > + * Since labels can't be defined local to the loop's body we use a
> > jump pointer
> > + * to make sure that the retry is only used from within the loop's
> > body.
> > + */
> > +#define __drm_exec_until_all_locked(exec,
> > _label) \
> > +_label:
> > \
> > + for (void * __maybe_unused __drm_exec_retry_ptr;
> > ({ \
> > + __drm_exec_retry_ptr =
> > &&_label; \
>
> I think when using __maybe_unused we could also move assigning the
> variable to the deceleration and drop the extra ({}).
Sure. Looks even better.
Thanks,
Thomas
>
> Apart from that looks good to me.
>
> Regards,
> Christian.
>
> > + drm_exec_cleanup(exec);
> > \
> > + });)
> > +
> > /**
> > * drm_exec_until_all_locked - loop until all GEM objects are
> > locked
> > * @exec: drm_exec object
> > @@ -96,17 +109,9 @@ drm_exec_obj(struct drm_exec *exec, unsigned
> > long index)
> > * Core functionality of the drm_exec object. Loops until all GEM
> > objects are
> > * locked and no more contention exists. At the beginning of the
> > loop it is
> > * guaranteed that no GEM object is locked.
> > - *
> > - * Since labels can't be defined local to the loops body we use a
> > jump pointer
> > - * to make sure that the retry is only used from within the loops
> > body.
> > */
> > #define
> > drm_exec_until_all_locked(exec) \
> > -__PASTE(__drm_exec_,
> > __LINE__): \
> > - for (void *__drm_exec_retry_ptr;
> > ({ \
> > - __drm_exec_retry_ptr = &&__PASTE(__drm_exec_,
> > __LINE__);\
> > -
> > (void)__drm_exec_retry_ptr; \
> > -
> > drm_exec_cleanup(exec); \
> > - });)
> > + __drm_exec_until_all_locked(exec, __UNIQUE_ID(drm_exec))
> >
> > /**
> > * drm_exec_retry_on_contention - restart the loop to grap all
> > locks