STRUCT VDUSE_IOVA_UMEM(9)
π struct vduse_iova_umem(9) β Kernel API Manual, bestie edition β¨
okay so picture this: it's a Kernel API Manual page about struct vduse_iova_umem, and it's literally the blueprint for how userspace memory gets mapped to one IOVA region. no cap, it's giving "backstage pass to the IOMMU." let's get into it π
β¨ NAME β¨
struct vduse_iova_umem β the userspace memory configuration for one IOVA region. one region. that's her whole personality. π
π¦ SYNOPSIS π¦
struct vduse_iova_umem {
__u64 uaddr;
__u64 iova;
__u64 size;
__u32 asid;
__u32 reserved[5];
};
that's the whole struct, copied character-for-character because we do not mess with code. π«Ά
πΈ Members πΈ
uaddrβ the start address of the userspace memory. and listen, this one's got rules: it must be aligned to page size. like, not optional. the kernel will vibe check it and you will fail. πiovaβ the start of the IOVA region. where the magic happens on the other side. β¨sizeβ how big the IOVA region is. big girl energy, however big you need. πasidβ the Address Space ID of the IOVA region. that's her government name. πͺͺreservedβ reserved for future use, and it needs to be initialized to zero. not "probably zero", not "zero if you feel like it" β zero. fr fr. β
π Description π
so what is this thing for, you ask? this struct is the messenger π§ β it's used by the VDUSE_IOTLB_REG_UMEM and VDUSE_IOTLB_DEREG_UMEM ioctls to register / de-register userspace memory for IOVA regions.
register: she's in. de-register: she's out. two ioctls, one struct, zero drama. π
lowkey important: that reserved[5] field is reserved for future use and needs to be initialized to zero. don't be cute, don't get creative. π
π₯ SEE ALSO π₯
- Kernel file
./include/uapi/linux/vduse.h struct vduse_dev_config(9)struct vduse_iotlb_entry(9)struct vduse_config_data(9)struct vduse_vq_config(9)struct vduse_vq_state_split(9)struct vduse_vq_state_packed(9)struct vduse_vq_group_asid(9)struct vduse_vq_info(9)struct vduse_vq_eventfd(9)struct vduse_iova_info(9)struct vduse_iotlb_entry_v2(9)enum vduse_req_type(9)struct vduse_vq_state(9)struct vduse_dev_status(9)struct vduse_iova_range(9)struct vduse_iova_range_v2(9)struct vduse_vq_ready(9)struct vduse_dev_request(9)struct vduse_dev_response(9)
(that's the whole friend group, go say hi π«Άπ)
and that's the page!! it lives over in ./include/uapi/linux and it's dated October 2026, so mark your calendar bestie β struct vduse_iova_umem(9) said see you then. slay, 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