iommu_unmap(9)
π iommu_unmap β bestie's guide to tearing down IOVA mappings π
okay so this page is from the Kernel API Manual (yes, the iommu_unmap(9) one, the icon herself β¨). Sit down, grab a strawberry drink π, and let's get into it.
β¨ NAME β¨
iommu_unmap β literally removes mappings from a range of IOVA. that's it, that's the vibe πΈ
π¦ SYNOPSIS π¦
size_t iommu_unmap (struct iommu_domain *domain , unsigned long iova ,
size_t size );
look at her. three arguments, returns a size_t, no notes π
π ARGUMENTS π
domainβ the domain you're manipulating. your little playground π«Άiovaβ the IO virtual address where you're starting. the starting line, the main character's entrance β¨sizeβ the length of the range, counting fromiova. how far the vibe extends π
π₯ DESCRIPTION π₯
so iommu_unmap will remove a translation that was created by iommu_map. like, undoing what the other girl did π. it's giving cleanup era.
IMPORTANT bestie: it cannot subdivide a mapping created by iommu_map. so like, you gotta call it with IOVA ranges that match what was passed to iommu_map β no cap, no splitting, no "close enough" energy π.
the range can aggregate contiguous iommu_map calls though β so long as no individual range is split. so you CAN group them, you just can't slice one in half. periodt. π
β RETURN β
returns the number of bytes of IOVA unmapped. and heads up: iova + res will be the point where unmapping stopped. that's how you know where she got to before she clocked out π
π SEE ALSO π
Kernel file ./drivers/iommu/iommu.c β and honestly the whole group chat showed up, so here they all are, every single one, iykyk:
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_fast(9)report_iommu_fault(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)
and that's the page, bestie π§π keep it in this directory: ./drivers/iommu, dated October 2026, and go unmap something responsibly. slay πβ¨
π¦ 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