report_iommu_fault(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… report_iommu_fault β€” from the Kernel API Manual, bestie ✨

okay so like, this is report_iommu_fault(9) and it lives in the Kernel API Manual, and honestly? she's giving messenger. she's giving "the low-level driver texts the framework and is like bestie, something happened." 🫢 no cap.


🌸 SYNOPSIS 🌸

int report_iommu_fault (struct iommu_domain *domain , struct device *dev
, unsigned long iova , int flags );

πŸŽ€ ARGUMENTS πŸŽ€

  • domain β€” the iommu domain where the fault has happened. that's her home turf πŸ’œ
  • dev β€” the device where the fault has happened. the actual culprit, lowkey 😭
  • iova β€” the faulting address. the exact spot. iconic of it to be that specific ✨
  • flags β€” mmu fault flags, like IOMMU_FAULT_READ/IOMMU_FAULT_WRITE/... β€” basically the vibe check on what kind of fault we're dealing with πŸ¦‹

✨ DESCRIPTION ✨

so the way this works: the low-level IOMMU implementations should call this function whenever IOMMU faults happen, so the high-level users who are interested in such events can, like, actually know about them. communication, bestie. it's everything. πŸ’…

this event may be useful for several possible use cases, and here's the list:

  • mere logging of the event
  • dynamic TLB/PTE loading
  • if restarting of the faulting device is required

returns 0 on success and an appropriate error code otherwise β€” and like, if dynamic PTE/TLB loading will one day be supported, implementations will be able to tell whether it succeeded or not according to this return value. forward thinking. we love to see it πŸ‘‘

specifically, -ENOSYS is returned if a fault handler isn't installed (though fault handlers can also return -ENOSYS, in case they want to elicit the default behavior of the IOMMU drivers). yes that's the same error from two directions, it's a whole thing, don't @ me πŸ’€

bestie pls note: that "one day be supported" bit is exactly how the original says it β€” I'm not making promises about dynamic PTE/TLB loading, I'm just reporting the message fr fr πŸ™ˆ

πŸ¦‹ SEE ALSO πŸ¦‹

kernel file ./drivers/iommu/iommu.c β€” plus the whole friend group:

iommu_device_register(9), iommu_insert_resv_region(9), iommu_group_alloc(9), iommu_group_get_iommudata(9), iommu_group_set_iommudata(9), iommu_group_set_name(9), iommu_group_add_device(9), iommu_group_remove_device(9), iommu_group_mutex_assert(9), iommu_group_for_each_dev(9), iommu_group_get(9), iommu_group_ref_get(9), iommu_group_put(9), iommu_group_id(9), device_iommu_capable(9), iommu_group_has_isolated_msi(9), iommu_set_fault_handler(9), iommu_paging_domain_alloc_flags(9), iommu_attach_device(9), iommu_get_domain_for_dev(9), iommu_driver_get_domain_for_dev(9), iommu_attach_group(9), iommu_unmap(9), iommu_unmap_fast(9), iommu_get_resv_regions(9), iommu_put_resv_regions(9), iommu_setup_default_domain(9), iommu_device_use_default_domain(9), iommu_device_unuse_default_domain(9), iommu_group_claim_dma_owner(9), iommu_device_claim_dma_owner(9), iommu_group_release_dma_owner(9), iommu_device_release_dma_owner(9), iommu_group_dma_owner_claimed(9), iommu_replace_device_pasid(9), iommu_attach_handle_get(9), iommu_attach_group_handle(9), iommu_detach_group_handle(9), iommu_replace_group_handle(9), pci_dev_reset_iommu_prepare(9), pci_dev_reset_iommu_done(9), iommu_dma_prepare_msi(9)

like. that's the whole group chat. literally all of them πŸ“


🌈 sign-off 🌈

this little masterpiece comes from ./drivers/iommu, dated October 2026, and yes she's titled report_iommu_fault(9) because the main character always gets her name in the footer πŸ’– stay faultless bestie 🧚✨

πŸ“¦ where this page comes from