On 6/12/26 07:52, Srinivasan Shanmugam wrote: > Signal SCRATCH EVENTFD subscriptions when user queue restore detects > missing VA mappings.
I think the scratch event is meant for something else. When a core VA to run the queues is missing (WPTR, RPTR, ring buffer etc...) we have a hard and unrecoverable error for this queue. But scratch handling is a different interface as far as I know. Regards, Christian. > > The restore path already identifies the affected user queue. Use that > queue object to wake up the matching EVENTFD subscribers. > > SCRATCH is queue-scoped, so the queue object is used for signaling. > > EVENTFD remains notification-only. > > Cc: Alex Deucher <[email protected]> > Cc: Christian König <[email protected]> > Signed-off-by: Srinivasan Shanmugam <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > index b77385e35e4e..7f605501c84c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c > @@ -896,7 +896,6 @@ amdgpu_userq_restore_all(struct amdgpu_userq_mgr *uq_mgr) > unsigned long queue_id; > int ret = 0, r; > > - > if (amdgpu_bo_reserve(vm->root.bo, false)) > return false; > > @@ -905,9 +904,17 @@ amdgpu_userq_restore_all(struct amdgpu_userq_mgr *uq_mgr) > xa_for_each(&uq_mgr->userq_xa, queue_id, queue) { > > if (!amdgpu_userq_buffer_vas_mapped(queue)) { > + struct amdgpu_eventfd_mgr *eventfd_mgr; > + > drm_file_err(uq_mgr->file, > "trying restore queue without va > mapping\n"); > queue->state = AMDGPU_USERQ_STATE_INVALID_VA; > + > + eventfd_mgr = > amdgpu_userq_eventfd_mgr(queue->userq_mgr); > + amdgpu_eventfd_signal(eventfd_mgr, > + DRM_AMDGPU_EVENT_TYPE_SCRATCH, > + queue); > + > continue; > } >
