STRUCT IOMMU_FAULT_PAGE_REQUEST(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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, the IOMMU_FAULT_PAGE_REQUEST_* values πŸ’…). and listen, this part matters: when IOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASID is 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 (those IOMMU_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:


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