STRUCT IOMMU_FAULT_PAGE_REQUEST(9)
π struct iommu_fault_page_request β Page Request data π
okay so bestie, welcome to the Kernel API Manual, we're talking struct iommu_fault_page_request today and honestly? it's giving "small struct, big responsibilities" β¨ this is the data that shows up when a device is like "hey, I need a page, can u map it for me π₯Ί" β it's the Page Request data, periodt.
πΈ NAME πΈ
struct iommu_fault_page_request β Page Request data π
β¨ SYNOPSIS β¨
struct iommu_fault_page_request {
#define IOMMU_FAULT_PAGE_REQUEST_PASID_VALID (1 << 0);
#define IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE (1 << 1);
#define IOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASID (1 << 2);
u32 flags;
u32 pasid;
u32 grpid;
u32 perm;
u64 addr;
u64 private_data[2];
};
like, copy that exactly bestie, don't be out here renaming things π
π«Ά MEMBERS π«Ά
flagsβ this one's the vibe check of the whole struct ngl. it encodes whether the corresponding fields are valid and whether this is the last page in the group (you know, theIOMMU_FAULT_PAGE_REQUEST_*values π ). and listen, this part matters: whenIOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASIDis set, the page response must have the same PASID value as the page request β same, matching, no cap. when it's clear, the page response should not have a PASID. okurrr π¦pasidβ Process Address Space ID πgrpidβ Page Request Group Index πpermβ the requested page permissions (thoseIOMMU_FAULT_PERM_*values, iykyk) π₯addrβ page address πprivate_dataβ device-specific private information π like, the device's own little secret stash, not for us
π SEE ALSO π
so there's a whole friend group here, fr fr β start with the Kernel file ./include/linux/iommu.h, then:
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_fwspec(9)struct iommu_sva(9)iommu_map_sgtable(9)
okay that's the whole lore drop π this page lives in ./include/linux and it's dated October 2026 β so like, future-core of it all β go read the kernel source bestie, 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