amdgpu_vm_validate(9)
π amdgpu_vm_validate β the Kernel API Manual, bestie edition β¨
okay so this is a page from the Kernel API Manual (the amdgpu_vm_validate(9) one, yes) and we're gonna get through it together, no cap π«Ά
πΈ NAME πΈ
amdgpu_vm_validate β literally the function that validates evicted BOs tracked in the VM π
β¨ SYNOPSIS β¨
int amdgpu_vm_validate (struct amdgpu_device *adev , struct amdgpu_vm
*vm , struct ww_acquire_ctx *ticket , int (*validate)(void *p, struct
amdgpu_bo *bo) , void *param );
that's the whole signature, verbatim, don't come for me π
π¦ ARGUMENTS π¦
adevβ the amdgpu device pointer, aka the whole GPU's little handle π«vmβ the vm that's providing the BOs, she's the one supplying the goods πticketβ an optional reservation ticket used to reserve the VM. optional bestie, optional β¨validateβ the callback that actually does the validation, the main character of this whole operation nglparamβ the parameter you hand over to that validation callback π
π₯ DESCRIPTION π₯
So here's the vibe: this validates the page table BOs and the per-VM BOs on command submission if it's necessary. iykyk β only when it needs to happen, no wasted effort π
and if a ticket is given? it also tries to validate the evicted user queue BOs π but heads up: those must already be reserved with the given ticket. like, that's not optional, they gotta be reserved already, fr fr π«Ά
β RETURN β
Validation result. that's it, that's the return π
π§ SEE ALSO π§
first up, the kernel file itself: ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c β go read her π
and then the whole friend group, in order, every single one of them:
GPUVM(9) , struct amdgpu_prt_cb(9) , struct amdgpu_vm_tlb_seq_struct(9) , amdgpu_vm_assert_locked(9) , amdgpu_vm_is_bo_always_valid(9) , amdgpu_vm_bo_evicted(9) , amdgpu_vm_bo_needs_update(9) , amdgpu_vm_bo_idle(9) , amdgpu_vm_bo_reset_state_machine(9) , amdgpu_vm_update_shared(9) , amdgpu_vm_bo_update_shared(9) , amdgpu_vm_update_stats_locked(9) , amdgpu_vm_update_stats(9) , amdgpu_vm_bo_base_init(9) , amdgpu_vm_lock_pd(9) , amdgpu_vm_lock_individual(9) , amdgpu_vm_move_to_lru_tail(9) , amdgpu_vm_generation(9) , amdgpu_vm_ready(9) , amdgpu_vm_check_compute_bug(9) , amdgpu_vm_need_pipeline_sync(9) , amdgpu_vm_flush(9) , amdgpu_vm_bo_find(9) , amdgpu_vm_map_gart(9) , amdgpu_vm_update_pdes(9) , amdgpu_vm_tlb_seq_cb(9) , amdgpu_vm_tlb_flush(9) , amdgpu_vm_update_range(9) , amdgpu_vm_bo_update(9) , amdgpu_vm_update_prt_state(9) , amdgpu_vm_prt_get(9) , amdgpu_vm_prt_put(9) , amdgpu_vm_prt_cb(9) , amdgpu_vm_add_prt_cb(9) , amdgpu_vm_free_mapping(9) , amdgpu_vm_prt_fini(9) , amdgpu_vm_clear_freed(9) , amdgpu_vm_handle_moved(9) , amdgpu_vm_flush_compute_tlb(9) , amdgpu_vm_bo_add(9) , amdgpu_vm_bo_insert_map(9) , amdgpu_vm_bo_map(9) , amdgpu_vm_bo_replace_map(9) , amdgpu_vm_bo_unmap(9) , amdgpu_vm_bo_clear_mappings(9) , amdgpu_vm_bo_lookup_mapping(9) , amdgpu_vm_bo_trace_cs(9) , amdgpu_vm_bo_del(9) , amdgpu_vm_evictable(9) , amdgpu_vm_bo_invalidate(9) , amdgpu_vm_bo_move(9) , amdgpu_vm_get_block_size(9) , amdgpu_vm_adjust_size(9) , amdgpu_vm_wait_idle(9) , amdgpu_vm_put_task_info(9) , amdgpu_vm_get_task_info_vm(9) , amdgpu_vm_get_task_info_pasid(9) , amdgpu_vm_set_task_info(9) , amdgpu_vm_init(9) , amdgpu_vm_make_compute(9) , amdgpu_vm_fini(9) , amdgpu_vm_manager_init(9) , amdgpu_vm_manager_fini(9) , amdgpu_vm_ioctl(9) , amdgpu_vm_lock_by_pasid(9) , amdgpu_vm_handle_fault(9) , amdgpu_debugfs_vm_bo_info(9) , amdgpu_vm_update_fault_cache(9)
periodt. that's the whole list, all sixty-something of them, untouched π
and that's the page bestie π source/version bits live in ./drivers/gpu/drm/amd/amdgpu and the date on this one is October 2026 β iconic, ahead of its time fr πΈπ
π«Ά
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms