amdgpu_vm_handle_fault(9)
π amdgpu_vm_handle_fault(9) β Kernel API Manual β¨
okay so bestie, we're deep in the kernel today and the page we're vibing with is amdgpu_vm_handle_fault(9). yes that's a mouthful, no we're not scared of it π«Ά
πΈ NAME πΈ
amdgpu_vm_handle_fault β graceful handling of VM faults π
like, when the VM trips and falls, this function catches it. gracefully. iconic behaviour honestly.
β¨ SYNOPSIS β¨
bool amdgpu_vm_handle_fault (struct amdgpu_device *adev , u32 pasid ,
u32 vmid , u32 node_id , uint64_t addr , uint64_t ts , bool write_fault
);
it returns a bool, bestie. remember that, it's gonna matter in a sec π
π ARGUMENTS π
adevβ the amdgpu device pointer. your main character device, fr fr.pasidβ the PASID of the VM. its little ID badge πͺͺvmidβ the VMID. heads up: only used for GFX 9.4.3. everywhere else it's just sitting there being decorative πnode_idβ thenode_idreceived in the IH cookie. only applicable for GFX 9.4.3, so same energy β niche but valid πaddrβ the address of the fault. where the drama went down πtsβ the timestamp of the fault. for the record, for the receipts β°write_faultβtruemeans it's a write fault,falsemeans it's a read fault. binary queen π
π¦ DESCRIPTION π¦
so the whole point: try to gracefully handle a VM fault. that's it, that's the vibe π§
it returns true if the fault was handled and shouldn't be reported any more. so like β if you get a true back, the situation is handled, we are NOT reporting it again, move on, nothing to see here π
ngl the "graceful" part is doing a lot of work in that sentence β this function's whole personality is not making a scene about a fault β¨
π SEE ALSO π
the whole friend group, in kernel file ./drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c, plus:
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_validate(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_debugfs_vm_bo_info(9)amdgpu_vm_update_fault_cache(9)
like yes that's a long list but they're all important, don't skip them, i'm serious ππ«Ά
and that's the page, bestie! this one lives at ./drivers/gpu/drm/amd/amdgpu, dated October 2026, under the name amdgpu_vm_handle_fault(9) β slay, go handle some faults gracefully, periodt ππ
π¦ 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