STRUCT DEV_IOMMU(9)
πΈ NAME πΈ
okay so bestie, welcome to struct dev_iommu(9) from the Kernel API Manual β it's literally the collection of per-device IOMMU data π
Like, struct dev_iommu is the whole vibe: one lil bundle holding all the IOMMU-ish stuff that belongs to a single device. Iconic. Periodt.
β¨ SYNOPSIS β¨
struct dev_iommu {
struct mutex lock;
struct iommu_fault_param *fault_param;
struct iommu_fwspec *fwspec;
struct iommu_device *iommu_dev;
void *priv;
u32 max_pasids;
u32 attach_deferred:1;
u32 pci_32bit_workaround:1;
u32 require_direct:1;
u32 shadow_on_flush:1;
};
no cap, that's the whole struct right there π«Ά
π Members π
okay let's go field by field, bestie, no skipping π
fault_paramβ the IOMMU detected device fault reporting data. it's giving "receipts for when things go wrong" πfwspecβ the IOMMU fwspec data πiommu_devβ the IOMMU device that this device is linked to. main character energy, fr fr πprivβ the IOMMU Driver private data π (yes it's private, don't be nosy)max_pasidsβ the number of PASIDs this device can consume π’attach_deferredβ the dma domain attachment is deferred β³pci_32bit_workaroundβ Limit DMA allocations to 32-bit IOVAs π§require_directβ device requiresIOMMU_RESV_DIRECTregions βshadow_on_flushβ IOTLB flushes are used to sync shadow tables π¦
also lowkey note there's alock(astruct mutex) sitting at the top of the struct in the synopsis β the manpage doesn't give it its own little Member blurb, so like, don't come for me, I'm just reporting what's there π
π Description π
okay so here's the tea: this section is literally a TODO β
TODO: migrate other per device data pointers underiommu_dev_data, e.g.c struct iommu_group *iommu_group;
so yeah, the description is basically an "I'll finish this later" note from the kernel devs β honestly relatable, we've all been there ππ«Ά
π₯ SEE ALSO π₯
bestie you already KNOW there's a whole friend group, all from the kernel file ./include/linux/iommu.h:
struct iommu_fault_page_request(9)struct iommu_fault(9)enum iommu_page_response_code(9)struct iommu_page_response(9)struct iopf_queue(9)struct iommu_resv_region(9)struct iommu_iotlb_gather(9)struct iommu_dirty_bitmap(9)struct iommu_dirty_ops(9)struct iommu_user_data(9)struct iommu_user_data_array(9)__iommu_copy_struct_from_user(9)iommu_copy_struct_from_user(9)__iommu_copy_struct_from_user_array(9)iommu_copy_struct_from_user_array(9)iommu_copy_struct_from_full_user_array(9)__iommu_copy_struct_to_user(9)iommu_copy_struct_to_user(9)struct iommu_ops(9)struct iommu_domain_ops(9)struct iommu_device(9)struct iommu_fault_param(9)iommu_iotlb_gather_is_disjoint(9)iommu_iotlb_gather_add_range(9)iommu_iotlb_gather_add_page(9)struct iommu_fwspec(9)struct iommu_sva(9)iommu_map_sgtable(9)
like, the whole extended universe, iykyk ππ
so that's the page, bestie π it lives in ./include/linux and the footer says October 2026 β mwah, go read the other ones too, ily, 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