static void amdgpu_vm_bo_status_init(struct amdgpu_vm_bo_status *lists)
{
INIT_LIST_HEAD(&lists->evicted);
- INIT_LIST_HEAD(&lists->moved);
+ INIT_LIST_HEAD(&lists->needs_update);
INIT_LIST_HEAD(&lists->idle);
}
amdgpu_vm_bo_unlock_lists(vm_bo);
}
/**
- * amdgpu_vm_bo_moved - vm_bo is moved
+ * amdgpu_vm_bo_needs_update - vm_bo needs pagetable update
*
- * @vm_bo: vm_bo which is moved
+ * @vm_bo: vm_bo which is out of date
*
- * State for vm_bo objects meaning the underlying BO was moved but the new
- * location not yet reflected in the page tables.
+ * State for vm_bo objects meaning the underlying BO had mapping changes (move, PRT bind/unbind)
+ * but the new location is not yet reflected in the page tables.
*/
-static void amdgpu_vm_bo_moved(struct amdgpu_vm_bo_base *vm_bo)
+static void amdgpu_vm_bo_needs_update(struct amdgpu_vm_bo_base *vm_bo)
{
struct amdgpu_vm_bo_status *lists;
struct amdgpu_bo *bo = vm_bo->bo;
vm_bo->moved = false;
list_move(&vm_bo->vm_status, &lists->idle);
} else {
- list_move(&vm_bo->vm_status, &lists->moved);
+ list_move(&vm_bo->vm_status, &lists->needs_update);
}
amdgpu_vm_bo_unlock_lists(vm_bo);
}
*/
amdgpu_vm_assert_locked(vm);
list_for_each_entry_safe(vm_bo, tmp, &vm->kernel.idle, vm_status)
- amdgpu_vm_bo_moved(vm_bo);
+ amdgpu_vm_bo_needs_update(vm_bo);
list_for_each_entry_safe(vm_bo, tmp, &vm->always_valid.idle, vm_status)
- amdgpu_vm_bo_moved(vm_bo);
+ amdgpu_vm_bo_needs_update(vm_bo);
spin_lock(&vm->individual_lock);
list_for_each_entry_safe(vm_bo, tmp, &vm->individual.idle, vm_status) {
vm_bo->moved = true;
- list_move(&vm_bo->vm_status, &vm->individual.moved);
+ list_move(&vm_bo->vm_status, &vm->individual.needs_update);
}
spin_unlock(&vm->individual_lock);
}
*/
if (bo->preferred_domains &
amdgpu_mem_type_to_domain(bo->tbo.resource->mem_type))
- amdgpu_vm_bo_moved(base);
+ amdgpu_vm_bo_needs_update(base);
else
amdgpu_vm_bo_evicted(base);
}
vm->update_funcs->map_table(to_amdgpu_bo_vm(bo_base->bo));
bo_base->moved = true;
- amdgpu_vm_bo_moved(bo_base);
+ amdgpu_vm_bo_needs_update(bo_base);
}
/*
return r;
bo_base->moved = true;
- amdgpu_vm_bo_moved(bo_base);
+ amdgpu_vm_bo_needs_update(bo_base);
}
if (!ticket)
return r;
bo_base->moved = true;
- amdgpu_vm_bo_moved(bo_base);
+ amdgpu_vm_bo_needs_update(bo_base);
/* It's a bit inefficient to always jump back to the start, but
* we would need to re-structure the KFD for properly fixing
amdgpu_vm_assert_locked(vm);
- if (list_empty(&vm->kernel.moved))
+ if (list_empty(&vm->kernel.needs_update))
return 0;
if (!drm_dev_enter(adev_to_drm(adev), &idx))
if (r)
goto error;
- list_for_each_entry(entry, &vm->kernel.moved, vm_status) {
+ list_for_each_entry(entry, &vm->kernel.needs_update, vm_status) {
/* vm_flush_needed after updating moved PDEs */
flush_tlb_needed |= entry->moved;
if (flush_tlb_needed)
atomic64_inc(&vm->tlb_seq);
- list_for_each_entry_safe(entry, tmp, &vm->kernel.moved, vm_status)
+ list_for_each_entry_safe(entry, tmp, &vm->kernel.needs_update,
+ vm_status)
amdgpu_vm_bo_idle(entry);
error:
bool clear, unlock;
int r;
- list_for_each_entry_safe(bo_va, tmp, &vm->always_valid.moved,
+ list_for_each_entry_safe(bo_va, tmp, &vm->always_valid.needs_update,
base.vm_status) {
/* Per VM BOs never need to bo cleared in the page tables */
r = amdgpu_vm_bo_update(adev, bo_va, false);
}
spin_lock(&vm->individual_lock);
- while (!list_empty(&vm->individual.moved)) {
- bo_va = list_first_entry(&vm->individual.moved,
+ while (!list_empty(&vm->individual.needs_update)) {
+ bo_va = list_first_entry(&vm->individual.needs_update,
typeof(*bo_va), base.vm_status);
bo = bo_va->base.bo;
resv = bo->tbo.base.resv;
amdgpu_vm_prt_get(adev);
if (amdgpu_vm_is_bo_always_valid(vm, bo) && !bo_va->base.moved)
- amdgpu_vm_bo_moved(&bo_va->base);
+ amdgpu_vm_bo_needs_update(&bo_va->base);
trace_amdgpu_vm_bo_map(bo_va, mapping);
}
if (amdgpu_vm_is_bo_always_valid(vm, bo) &&
!before->bo_va->base.moved)
- amdgpu_vm_bo_moved(&before->bo_va->base);
+ amdgpu_vm_bo_needs_update(&before->bo_va->base);
} else {
kfree(before);
}
if (amdgpu_vm_is_bo_always_valid(vm, bo) &&
!after->bo_va->base.moved)
- amdgpu_vm_bo_moved(&after->bo_va->base);
+ amdgpu_vm_bo_needs_update(&after->bo_va->base);
} else {
kfree(after);
}
if (bo_base->moved)
continue;
bo_base->moved = true;
- amdgpu_vm_bo_moved(bo_base);
+ amdgpu_vm_bo_needs_update(bo_base);
}
}
id = 0;
seq_puts(m, "\tMoved BOs:\n");
- list_for_each_entry(base, &lists->moved, vm_status) {
+ list_for_each_entry(base, &lists->needs_update, vm_status) {
if (!base->bo)
continue;
id = 0;
seq_puts(m, "\tIdle BOs:\n");
- list_for_each_entry(base, &lists->moved, vm_status) {
+ list_for_each_entry(base, &lists->needs_update, vm_status) {
if (!base->bo)
continue;