[PATCH 04/28] drm/amdgpu/gfx9: re-emit unprocessed state on kcq reset

Alex Deucher alexdeucher at gmail.com
Mon Jul 7 13:58:29 UTC 2025


On Sun, Jul 6, 2025 at 10:56 AM Rodrigo Siqueira <siqueira at igalia.com> wrote:
>
> On 07/01, Alex Deucher wrote:
> > Re-emit the unprocessed state after resetting the queue.
> >
> > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> > ---
> >  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 12 +++---------
> >  1 file changed, 3 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> > index 76ba664efecb3..30f6b04cf82e4 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> > @@ -7187,7 +7187,7 @@ static int gfx_v9_0_reset_kcq(struct amdgpu_ring *ring,
> >       if (!kiq->pmf || !kiq->pmf->kiq_unmap_queues)
> >               return -EINVAL;
> >
> > -     drm_sched_wqueue_stop(&ring->sched);
> > +     amdgpu_ring_reset_helper_begin(ring, timedout_fence);
> >
> >       spin_lock_irqsave(&kiq->ring_lock, flags);
> >
> > @@ -7238,19 +7238,13 @@ static int gfx_v9_0_reset_kcq(struct amdgpu_ring *ring,
> >       }
> >       kiq->pmf->kiq_map_queues(kiq_ring, ring);
> >       amdgpu_ring_commit(kiq_ring);
> > -     spin_unlock_irqrestore(&kiq->ring_lock, flags);
> >       r = amdgpu_ring_test_ring(kiq_ring);
> > +     spin_unlock_irqrestore(&kiq->ring_lock, flags);
>
> Is this `spin_unlock_irqrestore` part something that maybe should be in
> another commit?  Maybe one commit that make this change for all of the
> GFXs?

Sure.  I'll split them out as bug fixes.

Alex

>
> Thanks
>
> >       if (r) {
> >               DRM_ERROR("fail to remap queue\n");
> >               return r;
> >       }
> > -
> > -     r = amdgpu_ring_test_ring(ring);
> > -     if (r)
> > -             return r;
> > -     amdgpu_fence_driver_force_completion(ring);
> > -     drm_sched_wqueue_start(&ring->sched);
> > -     return 0;
> > +     return amdgpu_ring_reset_helper_end(ring, timedout_fence);
> >  }
> >
> >  static void gfx_v9_ip_print(struct amdgpu_ip_block *ip_block, struct drm_printer *p)
> > --
> > 2.50.0
> >
>
> --
> Rodrigo Siqueira


More information about the amd-gfx mailing list