On Mon, Jul 13, 2026 at 12:54 PM Srinivasan Shanmugam <[email protected]> wrote: > > The queue reset path already resolves the affected queue directly from > the doorbell and funnels successful reset handling through > amdgpu_userq_handle_hung_queue(). Reuse that common handling point to > create the corresponding WAIT_EVENT record. > > Keeping the notification in the common helper ensures that queue state > is updated before userspace is notified and that both EVENTFD and > WAIT_EVENT observe the same reset. It also avoids duplicating the > doorbell lookup or adding a queue scan in the MES reset path. > > No MES or GFX interrupt changes are needed. > > Signed-off-by: Srinivasan Shanmugam <[email protected]>
Patches 5, 6 are: Reviewed-by: Alex Deucher <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > index 1abc05779192..8d081fda3e52 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > @@ -271,8 +271,8 @@ void amdgpu_userq_process_fence_irq(struct amdgpu_device > *adev, u32 doorbell) > * @adev: AMDGPU device > * @queue: affected user queue > * > - * Mark the queue as hung, notify matching QUEUE_RESET EVENTFD > - * subscribers, force-complete its fences, and send the DRM wedged event. > + * Mark the queue as hung, notify userspace of the queue reset, > + * force-complete its fences, and send the DRM wedged event. > * > * Return: > * true when the queue was handled, false for an invalid queue. > @@ -282,6 +282,7 @@ amdgpu_userq_handle_hung_queue(struct amdgpu_device *adev, > struct amdgpu_usermode_queue *queue) > { > struct amdgpu_eventfd_mgr *eventfd_mgr; > + struct amdgpu_wait_event_mgr *wait_event_mgr; > > if (!queue) > return false; > @@ -293,6 +294,11 @@ amdgpu_userq_handle_hung_queue(struct amdgpu_device > *adev, > DRM_AMDGPU_EVENT_TYPE_QUEUE_RESET, > queue); > > + wait_event_mgr = amdgpu_userq_wait_event_mgr(queue->userq_mgr); > + amdgpu_wait_event_add(wait_event_mgr, > + DRM_AMDGPU_EVENT_TYPE_QUEUE_RESET, > + queue); > + > amdgpu_userq_fence_driver_force_completion(queue); > > drm_dev_wedged_event(adev_to_drm(adev), > -- > 2.34.1 >
