STRUCT IOMMU_VEVENT_ARM_SMMUV3(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct iommu_vevent_arm_smmuv3(9)

okay so this is a page straight out of the Kernel API Manual, and it's all about struct iommu_vevent_arm_smmuv3 β€” the ARM SMMUv3 Virtual Event, aka IOMMU_VEVENTQ_TYPE_ARM_SMMUV3. bestie it's one struct, one field, and a whole lot of lore. let's get into it πŸŽ€


✨ NAME ✨

struct iommu_vevent_arm_smmuv3 β€” the ARM SMMUv3 Virtual Event, and its type tag is IOMMU_VEVENTQ_TYPE_ARM_SMMUV3. that's the whole vibe. πŸ¦‹


🌸 SYNOPSIS 🌸

struct iommu_vevent_arm_smmuv3 {
    __aligned_le64 evt[4];
 };

yes that's genuinely it. four little 64-bit chunks and she's done. iconic minimalism honestly πŸ‘‘


πŸ’– Members πŸ’–

  • evt β€” the 256-bit ARM SMMUv3 Event record, and it's little-endian just so you know. this is where the reported event records live (go read "7.3 Event records" in the SMMUv3 HW Spec, iykyk). the records you can get are:
    • 0x04 C_BAD_STE
    • 0x06 F_STREAM_DISABLED
    • 0x08 C_BAD_SUBSTREAMID
    • 0x0a C_BAD_CD
    • 0x10 F_TRANSLATION
    • 0x11 F_ADDR_SIZE
    • 0x12 F_ACCESS
    • 0x13 F_PERMISSION

πŸ”₯ Description πŸ”₯

so the StreamID field is out here reporting a virtual device ID β€” that's its whole job, main character energy tbh.

and here's the part where you have to actually do something first: to receive a virtual event for a device, a vDEVICE must be allocated via IOMMU_VDEVICE_ALLOC. no allocation, no events β€” that's the deal, no cap. 🫢

literally cannot stress this enough, allocate the vDEVICE first or you're getting nothing. periodt.

🌈 SEE ALSO 🌈

the whole friend group, in order, and yes i'm listing every single one because we don't do half-finished here πŸ’…

  • the kernel file ./include/uapi/linux/iommufd.h
  • 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_capabilities(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_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, love that for you. this lil beauty lives at ./include/uapi/linux and the version stamp says October 2026 β€” so like, future icon behavior. go forth and vibe check your events πŸ’œπŸ¦‹

πŸ“¦ where this page comes from