STRUCT DRM_ASAHI_VM_CREATE(9)
β¨ struct drm_asahi_vm_create(9) β¨
okay so bestie, buckle up β this is a page from the Kernel API Manual, and it's literally all about the struct drm_asahi_vm_create situation. it's the arguments you pass to DRM_IOCTL_ASAHI_VM_CREATE, i.e. the lil' bundle of info that tells the kernel "hey, make me a VM bestie π". it's giving paperwork but make it iconic.
π SYNOPSIS π
struct drm_asahi_vm_create {
__u64 kernel_start;
__u64 kernel_end;
__u32 vm_id;
__u32 pad;
};
πΈ Members πΈ
kernel_startβ where the kernel-reserved address range starts. seedrm_asahi_params_global::vm_kernel_min_sizefor the deets.
okay so this next bit is important, bestie, don't scroll past it π β both kernel_start and kernel_end have to land inside the range of valid VAs that drm_asahi_params_global::vm_start and drm_asahi_params_global::vm_end give you. and the size of the kernel range (kernel_end - kernel_start) has to be at least drm_asahi_params_global::vm_kernel_min_size. no cap. π
π¨ and listen β userspace must not bind any memory on this VM into this reserved range. it's for kernel use only, periodt. that range is not yours, it's the kernel's main character energy. don't touch. π₯
kernel_endβ where the kernel-reserved address range ends. seekernel_startabove, they're a matched set π«Ά.vm_idβ the returned VM ID β¨ (yes, this one comes back to you, it's the whole point).padβ MBZ. (that's "must be zero", bestie β not "maybe zero", not "zero if you feel like it". zero it. π)
π SEE ALSO π
- Kernel file
./include/uapi/drm/asahi_drm.h - Introduction to the Asahi UAPI(9)
enum drm_asahi_ioctl_id(9)struct drm_asahi_params_global(9)enum drm_asahi_feature(9)struct drm_asahi_get_params(9)struct drm_asahi_vm_destroy(9)enum drm_asahi_gem_flags(9)struct drm_asahi_gem_create(9)struct drm_asahi_gem_mmap_offset(9)enum drm_asahi_bind_flags(9)struct drm_asahi_gem_bind_op(9)struct drm_asahi_vm_bind(9)enum drm_asahi_bind_object_op(9)enum drm_asahi_bind_object_flags(9)struct drm_asahi_gem_bind_object(9)enum drm_asahi_cmd_type(9)enum drm_asahi_priority(9)struct drm_asahi_queue_create(9)struct drm_asahi_queue_destroy(9)enum drm_asahi_sync_type(9)struct drm_asahi_sync(9)DRM_ASAHI_BARRIER_NONE(9)struct drm_asahi_cmd_header(9)struct drm_asahi_submit(9)struct drm_asahi_attachment(9)struct drm_asahi_zls_buffer(9)struct drm_asahi_timestamp(9)struct drm_asahi_timestamps(9)struct drm_asahi_helper_program(9)struct drm_asahi_bg_eot(9)struct drm_asahi_cmd_render(9)struct drm_asahi_cmd_compute(9)struct drm_asahi_get_time(9)DRM_IOCTL_ASAHI(9)
that's the whole vibe check, bestie β go forth and create your VMs responsibly π¦π
this lil' page lives in ./include/uapi/drm, dated October 2026, and it's filed under struct drm_asahi_vm_create(9) β mwah, sending you off with a π and a β, iykyk π
π¦ 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