amdgpu_vm_bo_update(9)
π amdgpu_vm_bo_update(9) β the Kernel API Manual page, but make it make sense
okay so bestie, welcome to the Kernel API Manual, section 9, and today's main character is amdgpu_vm_bo_update β yes that's the title, yes we're saying it out loud. She lives in ./drivers/gpu/drm/amd/amdgpu and she's here to update all the BO mappings in the vm page table. That's literally her whole personality. slay.
β¨ NAME β¨
amdgpu_vm_bo_update β update all the BO mappings in the vm page table π¦
(like, not one, not two β all of them. the whole friend group.)
π SYNOPSIS π
int amdgpu_vm_bo_update (struct amdgpu_device *adev , struct
amdgpu_bo_va *bo_va , bool clear );
she takes three things and returns an int. that's it. that's the vibe check. π
πΈ ARGUMENTS πΈ
adevβ anamdgpu_devicepointer. the whole GPU device, the big one, the mothership. πbo_vaβ the requested BO and the VM object, together, in one struct. it's giving package deal. πclearβ abool, and if it's true, she clears the entries. that's the whole rule. no cap. π§Ή
π«Ά DESCRIPTION π«Ά
So what does she actually do? She fills in the page table entries for bo_va. That's it, that's the whole job β filling in page table entries, lowkey iconic of her. β¨
No extra side quests, no surprise lore. fill in the entries. periodt.
β RETURN β
0β success, we ate, everyone's happy π-EINVALβ failure, it's giving error, and honestly π
π¦ SEE ALSO π¦
okay this is the part where I need you to stay with me because there are so many of them and I'm not skipping a single one. every single reference, in order, exactly as she wrote them. no cutting corners, no "you get the idea". here we go. π
the source + the big concept:
- Kernel file
./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.cβ that's where she lives, go say hi π GPUVM(9)
the structs (yes they're in the list too):
struct amdgpu_prt_cb(9)struct amdgpu_vm_tlb_seq_struct(9)
locking / validity girlies:
amdgpu_vm_assert_locked(9)amdgpu_vm_is_bo_always_valid(9)amdgpu_vm_lock_pd(9)amdgpu_vm_lock_individual(9)amdgpu_vm_lock_by_pasid(9)
BO state machine besties:
amdgpu_vm_bo_evicted(9)amdgpu_vm_bo_needs_update(9)amdgpu_vm_bo_idle(9)amdgpu_vm_bo_reset_state_machine(9)
update / stats squad:
amdgpu_vm_update_shared(9)amdgpu_vm_bo_update_shared(9)amdgpu_vm_update_stats_locked(9)amdgpu_vm_update_stats(9)amdgpu_vm_update_range(9)amdgpu_vm_update_pdes(9)amdgpu_vm_update_fault_cache(9)
init / validate / ready core:
amdgpu_vm_bo_base_init(9)amdgpu_vm_move_to_lru_tail(9)amdgpu_vm_generation(9)amdgpu_vm_validate(9)amdgpu_vm_ready(9)
compute-flavoured ones:
amdgpu_vm_check_compute_bug(9)amdgpu_vm_need_pipeline_sync(9)amdgpu_vm_flush(9)amdgpu_vm_flush_compute_tlb(9)amdgpu_vm_make_compute(9)
lookups & gart:
TLB timeline:
PRT (the whole little family):
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)
freed / moved / evictable:
mapping operations, the whole set:
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_bo_invalidate(9)amdgpu_vm_bo_move(9)
sizing & idle:
task info trio (well, four):
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)
lifecycle, start to finish:
ioctl & faults & debugfs:
okay that was a lot but we got through it together, i'm proud of us π«Άπ
quick reminder bestie:clearbeingtruemeans the entries get cleared. don't forget, that's the whole point of the flag. π
and that's the page!! source is ./drivers/gpu/drm/amd/amdgpu, she's dated October 2026, and the footer's version tag is just amdgpu_vm_bo_update(9) again because she loves a callback. bye bestie, go fill in those page table entries πβ¨π
π¦ 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