report_iommu_fault(9)
π 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, likeIOMMU_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
- 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