STRUCT DRM_PVR_IOCTL_VM_MAP_ARGS(9)
π struct drm_pvr_ioctl_vm_map_args β NAME
okay so bestie, this is a Kernel API Manual page (the man page name is struct drm_p..._vm_map_args(9), yes the truncated vibe is intentional and yes it's iconic of the kernel docs to do that β¨), and it's literally all about:
struct drm_pvr_ioctl_vm_map_args β the args struct for %DRM_IOCTL_PVR_VM_MAP. That's it. That's the whole name section. Short queen. π
π¦ SYNOPSIS
here's the whole struct, and ngl she's giving "I have exactly seven fields and I know it":
struct drm_pvr_ioctl_vm_map_args {
__u32 vm_context_handle;
__u32 flags;
__u64 device_addr;
__u32 handle;
__u32 _padding_14;
__u64 offset;
__u64 size;
};
β¨ Members β¨
okay bestie this is the part you actually came for, let's go field by field, no skips, no cap π«Ά
vm_context_handleβ[IN]Handle for the VM context this mapping is gonna exist in. That's her home. πflagsβ[IN]Flags that affect this mapping. Currently always 0. Like, there are no flags yet. It's a flags field with a dream. πdevice_addrβ[IN]The device-virtual address you're requesting for the mapping. Rules, and I cannot stress this enough, bestie:- it must be non-zero, no zeroes allowed π
- it must be aligned to the device page size for the heap containing the requested address
- it is an error to specify an address that isn't contained within one of the heaps returned by
DRM_PVR_DEV_QUERY_HEAP_INFO_GET
so like, you can't just make up an address, she has to live in a real heap, periodt.
handleβ[IN]Handle of the target buffer object. This must be a valid handle returned byDRM_IOCTL_PVR_CREATE_BO. No random numbers, the vibe check is strict. π₯_padding_14β Reserved. This field must be zeroed. Like actually, zero it. Don't be cute with it. π«offsetβ[IN]Offset into the target bo from which to begin the mapping. Where in the bo you're starting from, basically. πΈsizeβ[IN]Size of the requested mapping. And the alignment requirements are stacked, bestie:- it must be aligned to the device page size for the heap containing the requested address, as well as the host page size
- when added to
device_addr, the result must not overflow the heap which containsdevice_addrβ i.e. the range specified bydevice_addrandsizemust be completely contained within a single heap specified byDRM_PVR_DEV_QUERY_HEAP_INFO_GET
β οΈ lowkey the whole "must be completely contained within a single heap" thing is the main character of this page. One heap. Not two. Don't try her. π
π SEE ALSO
every single one of these, bestie, in order, because the kernel docs said "list them all" and I respect the assignment π§
Kernel file ./include/uapi/drm/pvr_drm.h PowerVR UAPI(9), struct drm_pvr_obj_array(9), DRM_PVR_OBJ_ARRAY(9), PowerVR IOCTL interface(9), PVR_IOCTL(9), PowerVR IOCTL DEV_QUERY interface(9), struct drm_pvr_dev_query_gpu_info(9), struct drm_pvr_dev_query_runtime_info(9), struct drm_pvr_dev_query_quirks(9), struct drm_pvr_dev_query_enhancements(9), enum drm_pvr_heap_id(9), struct drm_pvr_heap(9), struct drm_pvr_dev_query_heap_info(9), enum drm_pvr_static_data_area_usage(9), struct drm_pvr_static_data_area(9), struct drm_pvr_dev_query_static_data_areas(9), enum drm_pvr_dev_query(9), struct drm_pvr_ioctl_dev_query_args(9), PowerVR IOCTL CREATE_BO interface(9), Flags for CREATE_BO(9), struct drm_pvr_ioctl_create_bo_args(9), PowerVR IOCTL GET_BO_MMAP_OFFSET interface(9), struct drm_pvr_ioctl_get_bo_mmap_offset_args(9), PowerVR IOCTL CREATE_VM_CONTEXT and DESTROY_VM_CONTEXT interfaces(9), struct drm_pvr_ioctl_create_vm_context_args(9), struct drm_pvr_ioctl_destroy_vm_context_args(9), PowerVR IOCTL VM_MAP and VM_UNMAP interfaces(9), struct drm_pvr_ioctl_vm_unmap_args(9), PowerVR IOCTL CREATE_CONTEXT and DESTROY_CONTEXT interfaces(9), enum drm_pvr_ctx_priority(9), enum drm_pvr_ctx_type(9), struct drm_pvr_ioctl_create_context_args(9), struct drm_pvr_ioctl_destroy_context_args(9), PowerVR IOCTL CREATE_FREE_LIST and DESTROY_FREE_LIST interfaces(9), struct drm_pvr_ioctl_create_free_list_args(9), struct drm_pvr_ioctl_destroy_free_list_args(9), PowerVR IOCTL CREATE_HWRT_DATASET and DESTROY_HWRT_DATASET interfaces(9), struct drm_pvr_create_hwrt_geom_data_args(9), struct drm_pvr_create_hwrt_rt_data_args(9), struct drm_pvr_ioctl_create_hwrt_dataset_args(9), struct drm_pvr_ioctl_destroy_hwrt_dataset_args(9), PowerVR IOCTL SUBMIT_JOBS interface(9), Flags for the drm_pvr_sync_op object.(9), struct drm_pvr_sync_op(9), Flags for SUBMIT_JOB ioctl geometry command.(9), Flags for SUBMIT_JOB ioctl fragment command.(9), Flags for SUBMIT_JOB ioctl compute command.(9), Flags for SUBMIT_JOB ioctl transfer command.(9), enum drm_pvr_job_type(9), struct drm_pvr_hwrt_data_ref(9), struct drm_pvr_job(9), struct drm_pvr_ioctl_submit_jobs_args(9)
like I said. All of them. π
and that's the page!! source/version is ./include/uapi/drm, dated October 2026 β she's from the future bestie, we stan a time-traveling man page βπ bye!! π
π¦ 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