pvr_vm_unmap_obj_locked(9)
π pvr_vm_unmap_obj_locked(9) β from the Kernel API Manual, bestie π
okay so picture this: you're deep in the kernel, the vibes are immaculate, and you need to unmap an already mapped section of device-virtual memory. yeah. that's the whole plot. this is that function. no cap. β¨
πΈ SYNOPSIS πΈ
int pvr_vm_unmap_obj_locked (struct pvr_vm_context *vm_ctx , struct
pvr_gem_object *pvr_obj , u64 device_addr , u64 size );
like, four things in, one int out. it's giving "small function, big responsibility" and honestly? obsessed. π«Ά
π¦ ARGUMENTS π¦
vm_ctxβ the target VM context π like, which VM are we even doing this in, bestie? this one.pvr_objβ the target PowerVR memory object π the actual thing being referenced here.device_addrβ the virtual device address at the start of the target mapping π the beginning. the opening scene. the main character's entrance.sizeβ size of the target mapping π how much of the map we're talking about.
β RETURN β
0on success β slay, it worked π-EINVALifdevice_addris not a valid page-aligned device-virtual address π like bestie, page-aligned. we said page-aligned. it literally has to be page-aligned.- Any error encountered while performing internal operations required to destroy the mapping (returned from
pvr_vm_gpuva_unmaporpvr_vm_gpuva_remap) π those internals don't play, and if they're upset you're gonna hear about it.
π§ DESCRIPTION π§
The vm_ctx->lock must be held when calling this function.
ok this is the important part, do not skip it π₯ the lock is held before you call in. that's why _locked is right there in the name, iykyk. the function is trusting you to already be holding it. don't betray that trust. π
π SEE ALSO π
Kernel file ./drivers/gpu/drm/imagination/pvr_vm.c, Memory context(9), struct pvr_vm_context(9), pvr_vm_get_page_table_root_addr(9), pvr_vm_get_dma_resv(9), Memory mappings(9), struct pvr_vm_gpuva(9), struct pvr_vm_bind_op(9), pvr_vm_bind_op_exec(9), pvr_vm_gpuva_map(9), pvr_vm_gpuva_unmap(9), pvr_vm_gpuva_remap(9), pvr_device_addr_is_valid(9), pvr_device_addr_and_size_are_valid(9), pvr_vm_create_context(9), pvr_vm_context_release(9), pvr_vm_context_lookup(9), pvr_vm_context_put(9), pvr_destroy_vm_contexts_for_file(9), pvr_vm_map(9), pvr_vm_unmap_obj(9), pvr_vm_unmap(9), pvr_vm_unmap_all(9), pvr_heap_contains_range(9), pvr_find_heap_containing(9), pvr_vm_find_gem_object(9), pvr_vm_get_fw_mem_context(9)
like yes that's a lot of reading but they're all literally right there and they all ate π π
and that's the whole page, bestie π straight out of ./drivers/gpu/drm/imagination, dated October 2026 β catch you in the next manpage, mwah πππ¦
π¦ 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