On 12/19/25 14:41, Tvrtko Ursulin wrote: > The bo list is immutable during command submission since the drm_exec > conversion so we can remove the mutex. > > Signed-off-by: Tvrtko Ursulin <[email protected]>
Reviewed-by: Christian König <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c | 3 +-- > drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h | 4 ---- > drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 15 ++++----------- > 3 files changed, 5 insertions(+), 17 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c > index 72c5096c3b18..fbac929f711c 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c > @@ -41,7 +41,7 @@ static void amdgpu_bo_list_free_rcu(struct rcu_head *rcu) > { > struct amdgpu_bo_list *list = container_of(rcu, struct amdgpu_bo_list, > rhead); > - mutex_destroy(&list->bo_list_mutex); > + > kvfree(list); > } > > @@ -133,7 +133,6 @@ int amdgpu_bo_list_create(struct amdgpu_device *adev, > struct drm_file *filp, > > trace_amdgpu_cs_bo_status(list->num_entries, total_size); > > - mutex_init(&list->bo_list_mutex); > *result = list; > return 0; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h > index 2b5e7c46a39d..1acf53f8b2f9 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.h > @@ -51,10 +51,6 @@ struct amdgpu_bo_list { > unsigned first_userptr; > unsigned num_entries; > > - /* Protect access during command submission. > - */ > - struct mutex bo_list_mutex; > - > struct amdgpu_bo_list_entry entries[] __counted_by(num_entries); > }; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > index 203223fd0b54..bc9cee3fdf27 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c > @@ -881,8 +881,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser > *p, > return r; > } > > - mutex_lock(&p->bo_list->bo_list_mutex); > - > /* Get userptr backing pages. If pages are updated after registered > * in amdgpu_gem_userptr_ioctl(), amdgpu_cs_list_validate() will do > * amdgpu_ttm_backend_bind() to flush and invalidate new pages > @@ -998,7 +996,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser > *p, > amdgpu_hmm_range_free(e->range); > e->range = NULL; > } > - mutex_unlock(&p->bo_list->bo_list_mutex); > return r; > } > > @@ -1381,7 +1378,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p, > amdgpu_vm_move_to_lru_tail(p->adev, &fpriv->vm); > > mutex_unlock(&p->adev->notifier_lock); > - mutex_unlock(&p->bo_list->bo_list_mutex); > return 0; > } > > @@ -1453,28 +1449,25 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void > *data, struct drm_file *filp) > > r = amdgpu_cs_patch_jobs(&parser); > if (r) > - goto error_backoff; > + goto error_fini; > > r = amdgpu_cs_vm_handling(&parser); > if (r) > - goto error_backoff; > + goto error_fini; > > r = amdgpu_cs_sync_rings(&parser); > if (r) > - goto error_backoff; > + goto error_fini; > > trace_amdgpu_cs_ibs(&parser); > > r = amdgpu_cs_submit(&parser, data); > if (r) > - goto error_backoff; > + goto error_fini; > > amdgpu_cs_parser_fini(&parser); > return 0; > > -error_backoff: > - mutex_unlock(&parser.bo_list->bo_list_mutex); > - > error_fini: > amdgpu_cs_parser_fini(&parser); > return r;
