STRUCT DRM_PVR_IOCTL_CREATE_FREE_LIST_ARGS(9)
πΈ NAME πΈ
struct drm_pvr_ioctl_create_free_list_args β the args struct for %DRM_IOCTL_PVR_CREATE_FREE_LIST, bestie π
This one lives in the Kernel API Manual, the ./include/uapi/drm corner of the kernel, and it's dated October 2026 β¨
π¦ SYNOPSIS π¦
okay so here's the whole struct, literally character for character, no cap:
struct drm_pvr_ioctl_create_free_list_args {
__u64 free_list_gpu_addr;
__u32 initial_num_pages;
__u32 max_num_pages;
__u32 grow_num_pages;
__u32 grow_threshold;
__u32 vm_context_handle;
__u32 handle;
};
π Members π
so like, every field, one by one, iykyk π
free_list_gpu_addrβ [IN] the address of the GPU mapping of the buffer object that holds the memory your free list is gonna use π«Ά
And listen, two big rules for that buffer object, don't skip them:
- the mapped region of the buffer object must be at least
max_num_pages * ``sizeof(__u32)``` π (yes, that'ssizeof(__u32)timesmax_num_pages`, do the math babe) - the buffer object must have been created with
DRM_PVR_BO_DEVICE_PM_FW_PROTECTset, andDRM_PVR_BO_CPU_ALLOW_USERSPACE_ACCESSnot set β periodt, no exceptions π
initial_num_pagesβ [IN] the pages initially allocated to the free list β¨max_num_pagesβ [IN] the maximum number of pages in the free list πgrow_num_pagesβ [IN] how many pages the free list grows by, per request π±grow_thresholdβ [IN] the percentage of FL memory used that should trigger a new grow request π₯vm_context_handleβ [IN] handle for the VM context that the free list buffer object is mapped in π§handleβ [OUT] handle for the created free list, coming right back at ya π
π Description π
Free list arguments have these constraints, and honestly they're giving rules are rules:
max_num_pagesmust be greater than zero.grow_thresholdmust be between 0 and 100.grow_num_pagesmust be less than or equal tomax_num_pages.initial_num_pages,max_num_pagesandgrow_num_pagesmust be multiples of 4.- When
grow_num_pagesis 0,initial_num_pagesmust be equal tomax_num_pages. - When
grow_num_pagesis non-zero,initial_num_pagesmust be less thanmax_num_pages.
bestie please actually check these before you submit the ioctl π the kernel is not gonna be nice about it
β SEE ALSO β
the whole friend group, all of them, not skipping a single one π«Ά
- 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_map_args(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_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)
okay that's the whole page, love u, go build something iconic πβ¨
this one came from ./include/uapi/drm, dated October 2026 β signed, sealed, shipped, 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