ENUM IOMMUFD_HW_CAPABILITIES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… NAME πŸ’…

enum iommufd_hw_capabilities β€” okay so bestie, this is the caps enum for the iommufd subsystem in the kernel API manual, and ngl the original literally left the description blank after the dash 😭 so we're not inventing one, we're just vibing with the name and letting the rest of the page do the talking ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

enum iommufd_hw_capabilities {
    IOMMU_HW_CAP_DIRTY_TRACKING ,
    IOMMU_HW_CAP_PCI_PASID_EXEC ,
    IOMMU_HW_CAP_PCI_PASID_PRIV ,
    IOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED

};

That's the whole enum, four members, no cap πŸŽ€


🌸 CONSTANTS 🌸

Periodt, here's the rundown of every single member, no skipping:

  • IOMMU_HW_CAP_DIRTY_TRACKING β€” IOMMU hardware support for dirty tracking. If it's available, it means the following APIs are supported β€” and babe, this is the whole point, so listen up πŸ‘‘:
  • IOMMU_HW_CAP_PCI_PASID_EXEC β€” Execute Permission Supported. Real talk: the user just ignores it when the struct iommu_hw_info::out_max_pasid_log2 is zero. Like, zero means zero, don't @ me πŸ’€
  • IOMMU_HW_CAP_PCI_PASID_PRIV β€” Privileged Mode Supported. Same energy as the one above: the user ignores it when the struct iommu_hw_info::out_max_pasid_log2 is zero. iykyk 🧚
  • IOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED β€” ATS is not supported or cannot be used on this device</at>. And lowkey the important part: the absence of this cap implies ATS may be enabled. Careful, bestie πŸ™ˆ

πŸ’– DESCRIPTION πŸ’–

So when IOMMU_HW_CAP_DIRTY_TRACKING shows up, these are the APIs that come with it:

IOMMU_HWPT_GET_DIRTY_BITMAP
IOMMU_HWPT_SET_DIRTY_TRACKING

That's it, that's the flex πŸ’…


🌈 SEE ALSO 🌈

The kernel file that started it all: ./include/uapi/linux/iommufd.h πŸ¦‹

And a whole friend group of related pages, fr fr β€” every single one, in order:

  • General ioctl format(9)
  • struct iommu_destroy(9)
  • struct iommu_ioas_alloc(9)
  • struct iommu_iova_range(9)
  • struct iommu_ioas_iova_ranges(9)
  • struct iommu_ioas_allow_iovas(9)
  • enum iommufd_ioas_map_flags(9)
  • struct iommu_ioas_map(9)
  • struct iommu_ioas_noiommu_get_pa(9)
  • struct iommu_ioas_map_file(9)
  • struct iommu_ioas_copy(9)
  • struct iommu_ioas_unmap(9)
  • enum iommufd_option(9)
  • enum iommufd_option_ops(9)
  • struct iommu_option(9)
  • enum iommufd_vfio_ioas_op(9)
  • struct iommu_vfio_ioas(9)
  • enum iommufd_hwpt_alloc_flags(9)
  • enum iommu_hwpt_vtd_s1_flags(9)
  • struct iommu_hwpt_vtd_s1(9)
  • struct iommu_hwpt_arm_smmuv3(9)
  • struct iommu_hwpt_amd_guest(9)
  • enum iommu_hwpt_data_type(9)
  • struct iommu_hwpt_alloc(9)
  • enum iommu_hw_info_vtd_flags(9)
  • struct iommu_hw_info_vtd(9)
  • enum iommu_hw_info_arm_smmuv3_flags(9)
  • struct iommu_hw_info_arm_smmuv3(9)
  • struct iommu_hw_info_tegra241_cmdqv(9)
  • struct iommu_hw_info_amd(9)
  • enum iommu_hw_info_type(9)
  • enum iommufd_hw_info_flags(9)
  • struct iommu_hw_info(9)
  • struct iommu_hwpt_set_dirty_tracking(9)
  • enum iommufd_hwpt_get_dirty_bitmap_flags(9)
  • struct iommu_hwpt_get_dirty_bitmap(9)
  • enum iommu_hwpt_invalidate_data_type(9)
  • enum iommu_hwpt_vtd_s1_invalidate_flags(9)
  • struct iommu_hwpt_vtd_s1_invalidate(9)
  • struct iommu_viommu_arm_smmuv3_invalidate(9)
  • struct iommu_hwpt_invalidate(9)
  • enum iommu_hwpt_pgfault_flags(9)
  • enum iommu_hwpt_pgfault_perm(9)
  • struct iommu_hwpt_pgfault(9)
  • enum iommufd_page_response_code(9)
  • struct iommu_hwpt_page_response(9)
  • struct iommu_fault_alloc(9)
  • enum iommu_viommu_type(9)
  • struct iommu_viommu_tegra241_cmdqv(9)
  • struct iommu_viommu_alloc(9)
  • struct iommu_vdevice_alloc(9)
  • struct iommu_ioas_change_process(9)
  • enum iommu_veventq_flag(9)
  • struct iommufd_vevent_header(9)
  • enum iommu_veventq_type(9)
  • struct iommu_vevent_arm_smmuv3(9)
  • struct iommu_vevent_tegra241_cmdqv(9)
  • struct iommu_veventq_alloc(9)
  • enum iommu_hw_queue_type(9)
  • struct iommu_hw_queue_alloc(9)

✨ and that's the whole page, bestie ✨ It came from the ./include/uapi/linux directory, dated October 2026 β€” so go forth, read the caps, respect the caps, and remember: absence of IOMMU_HW_CAP_PCI_ATS_NOT_SUPPORTED is not a vibe check you can skip πŸ«ΆπŸ’–

πŸ“¦ where this page comes from