iommu_unmap_fast(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… iommu_unmap_fast ✨

Okay bestie, welcome to the Kernel API Manual πŸŽ€ β€” this one's iommu_unmap_fast(9), and no cap, it's kind of a niche icon but she knows what she's doing.


🌸 NAME 🌸

iommu_unmap_fast β€” remove mappings from a range of IOVA without the IOTLB sync, periodt. πŸ’…


✨ SYNOPSIS ✨

size_t iommu_unmap_fast (struct iommu_domain *domain , unsigned long
iova , size_t size , struct iommu_iotlb_gather *iotlb_gather );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • domain β€” the domain you're messing with. your main character 🫢
  • iova β€” the IO virtual address where the range starts, like, the beginning of the story ✨
  • size β€” length of the range starting from iova. how much we're doing today πŸ’–
  • iotlb_gather β€” range info for a pending IOTLB flush. she's holding the deets for later πŸ”₯

πŸ‘‘ DESCRIPTION πŸ‘‘

So iommu_unmap_fast will remove a translation that was created by iommu_map. literally undoing the thing πŸ’€

Important vibe check: she can't subdivide a mapping created by iommu_map, so you should call her with IOVA ranges that match what was passed to iommu_map. The range can aggregate contiguous iommu_map calls β€” but only so long as no individual range is split. no splitting, bestie, that's the rule πŸ™ˆ

Basically, iommu_unmap_fast is the same as iommu_unmap but for callers who manage the IOTLB flushing externally to perform a batched sync. it's giving "I'll handle the follow-up, you just do the unmapping" ✨


🌈 RETURN 🌈

Number of bytes of IOVA unmapped. and like, iova + res will be the point where unmapping stopped β€” so you always know exactly where she left off πŸŽ€


🧚 SEE ALSO 🧚

Kernel file ./drivers/iommu/iommu.c


and that's the whole page, bestie β€” mwah πŸ’‹ this lil number lives over in ./drivers/iommu and she's dated October 2026, so like, mark your calendar πŸ—“οΈπŸ’œ slay, go unmap responsibly βœ¨πŸ¦‹πŸŽ€

πŸ“¦ where this page comes from