STRUCT IOMMU_DEVICE(9)
π NAME π
struct iommu_device β the IOMMU core's whole entire representation of one IOMMU hardware instance β¨ (this is from the Kernel API Manual, bestie, section 9, we love a documentation era)
πΈ SYNOPSIS πΈ
okay so here's the struct, literally exactly as it is, do not come for me about the indentation:
struct iommu_device {
struct list_head list;
const struct iommu_ops *ops;
struct fwnode_handle *fwnode;
struct device *dev;
struct iommu_group *singleton_group;
u32 max_pasids;
bool ready;
};
π Members π
listβ the iommu-core uses this to keep a list of registered iommus, like a little roster, a group chat of iommus if you will π«Άopsβ theiommu-opsfor talking to this iommu. this is the "how do i actually communicate with you" field πdevβ astruct devicefor sysfs handling. yes bestie, sysfs has needs π¦singleton_groupβ used internally for drivers that have only one group. one group, one girl, main character energy πmax_pasidsβ number of supported PASIDs. that's the number, that's the whole field, no notes π₯readyβ set onceiommu_device_registerhas completed successfully. so like, it's not ready until it's ready, periodt β
real talk: fwnode is in the struct up there π but this page doesn't give it its own little blurb. not me leaving a field undescribed, it's just how the page is π
π SEE ALSO π
the kernel file is ./include/linux/iommu.h, and then there's a whole crew of related pages, all section (9), all iconic in their own way:
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_fault_param(9)struct dev_iommu(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)
okay that's the whole page, mwah π this lil number lives in ./include/linux and it's dated October 2026 β go read it, it ate, no cap ππ§π
π¦ 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