Hi Maíra
> >
> >>
> >> On 02/04/26 16:32, Maíra Canal wrote:
> >>> When xa_alloc_cyclic() failed in etnaviv_sched_push_job(), the error
> >>> path skipped drm_sched_entity_push_job(). This is a violation of the DRM
> >>> scheduler contract, as once a job has been armed with drm_sched_job_arm(),
> >>> it must be pushed with drm_sched_entity_push_job(). From the DRM
> >>> scheduler documentation,
> >>>
> >>> """
> >>> drm_sched_job_arm() is a point of no return since it initializes the
> >>> fences and their sequence number etc. Once that function has been called,
> >>> you *must* submit it with drm_sched_entity_push_job() and cannot simply
> >>> abort it by calling drm_sched_job_cleanup().
> >>> """
> >>>
> >>> Fix this by splitting the fence ID allocation into two phases: first,
> >>> alloc an xarray slot before arming the job (which can fail), then fill in
> >>> the actual fence with xa_store() after arming. This way, allocation
> >>> failures are handled before the job is armed, and once armed, the job is
> >>> always pushed to the scheduler.
> >>>
> >>> This also fixes a double call to drm_sched_job_cleanup(), as both
> >>> etnaviv_sched_push_job() and its caller would call it on failure.
> >>>
> >>> Fixes: 764be12345c3 ("drm/etnaviv: convert user fence tracking to XArray")
> >>> Signed-off-by: Maíra Canal <[email protected]>
> >>
> >> Gentle ping
> >>
> >
> > Thanks for the patch - looks good. I’ll take care of it over the next few
> > days.
>
> Any update?
>
Applied to drm-misc-fixes.
--
greets
--
Christian Gmeiner, MSc
https://christian-gmeiner.info/privacypolicy