mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
drm/exec: Remove the index parameter from drm_exec_for_each_locked_obj[_reverse]
Nobody makes any use of it. Possible internal future users can instead use the _index variable. External users shouldn't use it since the array it's pointing into is internal drm_exec state. v2: - Use a unique id for the loop variable (Christian) Assisted-by: GitHub Copilot:claude-sonnet-4.6 Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Christian König <christian.koenig@amd.com> Link: https://patch.msgid.link/20260520101616.41284-2-thomas.hellstrom@linux.intel.com
This commit is contained in:
parent
0d8e8229f0
commit
ce44b78512
|
|
@ -850,7 +850,6 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
|
|||
struct amdgpu_vm *vm = &fpriv->vm;
|
||||
struct amdgpu_bo_list_entry *e;
|
||||
struct drm_gem_object *obj;
|
||||
unsigned long index;
|
||||
unsigned int i;
|
||||
int r;
|
||||
|
||||
|
|
@ -961,7 +960,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
|
|||
goto out_free_user_pages;
|
||||
}
|
||||
|
||||
drm_exec_for_each_locked_object(&p->exec, index, obj) {
|
||||
drm_exec_for_each_locked_object(&p->exec, obj) {
|
||||
r = amdgpu_cs_bo_validate(p, gem_to_amdgpu_bo(obj));
|
||||
if (unlikely(r))
|
||||
goto out_free_user_pages;
|
||||
|
|
@ -1201,7 +1200,6 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p)
|
|||
struct drm_gpu_scheduler *sched;
|
||||
struct drm_gem_object *obj;
|
||||
struct dma_fence *fence;
|
||||
unsigned long index;
|
||||
unsigned int i;
|
||||
int r;
|
||||
|
||||
|
|
@ -1212,7 +1210,7 @@ static int amdgpu_cs_sync_rings(struct amdgpu_cs_parser *p)
|
|||
return r;
|
||||
}
|
||||
|
||||
drm_exec_for_each_locked_object(&p->exec, index, obj) {
|
||||
drm_exec_for_each_locked_object(&p->exec, obj) {
|
||||
struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
|
||||
|
||||
struct dma_resv *resv = bo->tbo.base.resv;
|
||||
|
|
@ -1281,7 +1279,6 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
|
|||
struct amdgpu_job *leader = p->gang_leader;
|
||||
struct amdgpu_bo_list_entry *e;
|
||||
struct drm_gem_object *gobj;
|
||||
unsigned long index;
|
||||
unsigned int i;
|
||||
uint64_t seq;
|
||||
int r;
|
||||
|
|
@ -1331,7 +1328,7 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
|
|||
}
|
||||
|
||||
p->fence = dma_fence_get(&leader->base.s_fence->finished);
|
||||
drm_exec_for_each_locked_object(&p->exec, index, gobj) {
|
||||
drm_exec_for_each_locked_object(&p->exec, gobj) {
|
||||
|
||||
ttm_bo_move_to_lru_tail_unlocked(&gem_to_amdgpu_bo(gobj)->tbo);
|
||||
|
||||
|
|
|
|||
|
|
@ -121,7 +121,6 @@ int amdgpu_evf_mgr_rearm(struct amdgpu_eviction_fence_mgr *evf_mgr,
|
|||
{
|
||||
struct amdgpu_eviction_fence *ev_fence;
|
||||
struct drm_gem_object *obj;
|
||||
unsigned long index;
|
||||
|
||||
/* Create and initialize a new eviction fence */
|
||||
ev_fence = kzalloc_obj(*ev_fence);
|
||||
|
|
@ -140,7 +139,7 @@ int amdgpu_evf_mgr_rearm(struct amdgpu_eviction_fence_mgr *evf_mgr,
|
|||
evf_mgr->ev_fence = &ev_fence->base;
|
||||
|
||||
/* And add it to all existing BOs */
|
||||
drm_exec_for_each_locked_object(exec, index, obj) {
|
||||
drm_exec_for_each_locked_object(exec, obj) {
|
||||
struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
|
||||
|
||||
amdgpu_evf_mgr_attach_fence(evf_mgr, bo);
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@
|
|||
*
|
||||
* struct drm_gem_object *obj;
|
||||
* struct drm_exec exec;
|
||||
* unsigned long index;
|
||||
* int ret;
|
||||
*
|
||||
* drm_exec_init(&exec, DRM_EXEC_INTERRUPTIBLE_WAIT);
|
||||
|
|
@ -40,7 +39,7 @@
|
|||
* goto error;
|
||||
* }
|
||||
*
|
||||
* drm_exec_for_each_locked_object(&exec, index, obj) {
|
||||
* drm_exec_for_each_locked_object(&exec, obj) {
|
||||
* dma_resv_add_fence(obj->resv, fence, DMA_RESV_USAGE_READ);
|
||||
* ...
|
||||
* }
|
||||
|
|
@ -56,9 +55,8 @@
|
|||
static void drm_exec_unlock_all(struct drm_exec *exec)
|
||||
{
|
||||
struct drm_gem_object *obj;
|
||||
unsigned long index;
|
||||
|
||||
drm_exec_for_each_locked_object_reverse(exec, index, obj) {
|
||||
drm_exec_for_each_locked_object_reverse(exec, obj) {
|
||||
dma_resv_unlock(obj->resv);
|
||||
drm_gem_object_put(obj);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1553,9 +1553,8 @@ drm_gpuvm_resv_add_fence(struct drm_gpuvm *gpuvm,
|
|||
enum dma_resv_usage extobj_usage)
|
||||
{
|
||||
struct drm_gem_object *obj;
|
||||
unsigned long index;
|
||||
|
||||
drm_exec_for_each_locked_object(exec, index, obj) {
|
||||
drm_exec_for_each_locked_object(exec, obj) {
|
||||
dma_resv_assert_held(obj->resv);
|
||||
dma_resv_add_fence(obj->resv, fence,
|
||||
drm_gpuvm_is_extobj(gpuvm, obj) ?
|
||||
|
|
|
|||
|
|
@ -373,7 +373,6 @@ int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,
|
|||
unsigned int num_fences)
|
||||
{
|
||||
struct drm_gem_object *obj;
|
||||
unsigned long index;
|
||||
int ret;
|
||||
|
||||
do {
|
||||
|
|
@ -386,7 +385,7 @@ int xe_vm_validate_rebind(struct xe_vm *vm, struct drm_exec *exec,
|
|||
return ret;
|
||||
} while (!list_empty(&vm->gpuvm.evict.list));
|
||||
|
||||
drm_exec_for_each_locked_object(exec, index, obj) {
|
||||
drm_exec_for_each_locked_object(exec, obj) {
|
||||
ret = dma_resv_reserve_fences(obj->resv, num_fences);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -65,31 +65,35 @@ drm_exec_obj(struct drm_exec *exec, unsigned long index)
|
|||
return index < exec->num_objects ? exec->objects[index] : NULL;
|
||||
}
|
||||
|
||||
/* Helper for drm_exec_for_each_locked_object(). Internal use only. */
|
||||
#define __drm_exec_for_each_locked_object(exec, obj, __index) \
|
||||
for (unsigned long __index = 0; ((obj) = drm_exec_obj(exec, __index)); ++__index)
|
||||
/**
|
||||
* drm_exec_for_each_locked_object - iterate over all the locked objects
|
||||
* @exec: drm_exec object
|
||||
* @index: unsigned long index for the iteration
|
||||
* @obj: the current GEM object
|
||||
*
|
||||
* Iterate over all the locked GEM objects inside the drm_exec object.
|
||||
*/
|
||||
#define drm_exec_for_each_locked_object(exec, index, obj) \
|
||||
for ((index) = 0; ((obj) = drm_exec_obj(exec, index)); ++(index))
|
||||
#define drm_exec_for_each_locked_object(exec, obj) \
|
||||
__drm_exec_for_each_locked_object(exec, obj, __UNIQUE_ID(drm_exec))
|
||||
|
||||
/* Helper for drm_exec_for_each_locked_object_reverse(). Internal use only. */
|
||||
#define __drm_exec_for_each_locked_object_reverse(exec, obj, __index) \
|
||||
for (unsigned long __index = (exec)->num_objects - 1; \
|
||||
((obj) = drm_exec_obj(exec, __index)); --__index)
|
||||
/**
|
||||
* drm_exec_for_each_locked_object_reverse - iterate over all the locked
|
||||
* objects in reverse locking order
|
||||
* @exec: drm_exec object
|
||||
* @index: unsigned long index for the iteration
|
||||
* @obj: the current GEM object
|
||||
*
|
||||
* Iterate over all the locked GEM objects inside the drm_exec object in
|
||||
* reverse locking order. Note that @index may go below zero and wrap,
|
||||
* reverse locking order. Note that the internal index may wrap around,
|
||||
* but that will be caught by drm_exec_obj(), returning a NULL object.
|
||||
*/
|
||||
#define drm_exec_for_each_locked_object_reverse(exec, index, obj) \
|
||||
for ((index) = (exec)->num_objects - 1; \
|
||||
((obj) = drm_exec_obj(exec, index)); --(index))
|
||||
#define drm_exec_for_each_locked_object_reverse(exec, obj) \
|
||||
__drm_exec_for_each_locked_object_reverse(exec, obj, __UNIQUE_ID(drm_exec))
|
||||
|
||||
/**
|
||||
* drm_exec_until_all_locked - loop until all GEM objects are locked
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user