iommufd_access_create(9)
π iommufd_access_create(9) β it's giving "kernel API manual" β¨
okay so bestie. welcome to the Kernel API Manual page for iommufd_access_create(9) β yes that's the whole page name, yes the (9) is the section, no we are not skipping it π
. sit down, grab a strawberry π, this one's actually not that long and it's lowkey iconic.
β¨ NAME β¨
iommufd_access_create β create an iommufd_access. that's it. that's the name. it creates the thing. slay π
πΈ SYNOPSIS πΈ
struct iommufd_access * iommufd_access_create (struct iommufd_ctx *ictx
, const struct iommufd_access_ops *ops , void *data , u32 *id );
literally exactly that, character for character, no cap π«Ά. one function, four args, returns a struct iommufd_access *.
π¦ ARGUMENTS π¦
ictxβ the iommufd file descriptor. your entry point, your main character, the thing that makes this whole call make sense π₯opsβ the driver's ops to associate with the access. this is the driver's personality, ok? it gets attached to the access β¨dataβ opaque data to pass into ops functions. it's opaque bestie, we don't peek, we just hand it over πidβ output ID number to return to userspace for this access. it's an output, so you're getting something back βu32 *, so a pointer, so the function writes into it π
π DESCRIPTION π
so what even is an iommufd_access? okay so:
An iommufd_access lets a driver read/write to the IOAS without using DMA. no DMA. none. zero. the way that this access just sidesteps DMA entirely?? obsessed π
The underlying CPU memory can still be reached, and you do that with the iommufd_access_pin_pages or iommufd_access_rw functions β those are your two lanes for getting at that CPU memory π§
And here's the important bit, ngl, don't skip it: the provided ops are required to use iommufd_access_pin_pages. like, required required. no ops, no pinning. that's the vibe check and it does not negotiate π
π quick reminder:opsis not optional if you wantiommufd_access_pin_pagesto work. keep every word of that in your heart.
π SEE ALSO π
Kernel file ./drivers/iommu/iommufd/device.c, plus your whole little friend group of related functions β go read them, they're all linked together, iykyk:
iommufd_device_bind(9)iommufd_ctx_has_group(9)iommufd_device_unbind(9)iommufd_device_attach(9)iommufd_device_replace(9)iommufd_device_detach(9)iommufd_access_destroy(9)iommufd_access_notify_unmap(9)iommufd_access_unpin_pages(9)iommufd_access_pin_pages(9)iommufd_access_rw(9)
and that's the page!! π source path is ./drivers/iommu/iommufd, and this gorgeous little manual page is dated October 2026 β so mark your calendars bestie, see you then βπ 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