STRUCT IOMMU_FWSPEC(9)
β¨ struct iommu_fwspec(9) β¨
okay so bestie, welcome to the Kernel API Manual β this one's all about struct iommu_fwspec, aka the per-device IOMMU instance data. it's giving "small struct, big responsibilities" tbh π«Ά
πΈ NAME πΈ
struct iommu_fwspec β per-device IOMMU instance data π
π SYNOPSIS π
struct iommu_fwspec {
struct fwnode_handle *iommu_fwnode;
u32 flags;
unsigned int num_ids;
u32 ids[];
};
like, that's the whole struct. cute, right? four fields and a flex array. iconic. β¨
π¦ Members π¦
iommu_fwnodeβ the firmware handle for this device's IOMMU. literally the "who's your IOMMU" pointer πflagsβ theIOMMU_FWSPEC_*flags. yes, all of them. iykyk π«num_idsβ number of associated device IDs. it's giving headcount πidsβ the IDs which this device may present to the IOMMU. the whole guest list, basically π
π Description π
okay so this is important, no cap: the IDs (and honestly any other information stored in this structure) should be considered private to the IOMMU device driver. they are not to be used directly by IOMMU consumers. π
bestie please do not touch. that data is not yours, it's the driver's. hands off. π
like, i cannot stress this enough β the manpage says "and any other information, really," which is such a mood, but fr fr it means everything in there is off-limits to consumers. periodt. π₯
π SEE ALSO π
Kernel file ./include/linux/iommu.h, plus this whole squad right here π
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)struct dev_iommu(9)iommu_iotlb_gather_is_disjoint(9)iommu_iotlb_gather_add_range(9)iommu_iotlb_gather_add_page(9)struct iommu_sva(9)iommu_map_sgtable(9)
aaaand that's the whole page, bestie, ate and left no crumbs π this lil gem lives over in ./include/linux and the version stamp says October 2026 β so like, future vibes only π¦β¨ mwah, go read your kernel headers responsibly π§ββοΈπ
π¦ 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