总线交易发起方

姓名

bus_transaction_initiator - DMA 配置功能

摘要

总线事务发起者 (BTI) 代表设备的总线母带/DMA 功能,可用于授予设备访问内存的权限。

说明

为设备驱动程序提供其每个设备可以使用的每个总线事务 ID 的 BTI。在这种情况下,总线事务 ID 是 IOMMU 可以使用的硬件事务标识符(例如,Intel IOMMU 上的 PCI 地址以及 ARM SMMU 上的 StreamID)。

BTI 可用于固定虚拟内存对象 (VMO) 中使用的内存。如果调用方固定来自 VMO 的内存,系统会为这些对象提供设备物理地址,这些地址可用于向 VMO 发出内存事务(前提是事务具有正确的总线事务 ID)。如果影响这些地址的事务使用其他事务 ID 发出,则事务可能会失败,并且签发设备可能需要重置才能继续运行。

BTI 管理着一系列被隔离的固定内存令牌 (PMT)。如果 PMT 是使用 zx_bti_pin() 根据 BTI 创建的,而 PMT 的句柄在未调用 zx_pmt_unpin() 的情况下被释放,PMT 将被隔离。隔离的 PMT 会阻止其底层物理内存被释放到系统以供重复使用,以防止 DMA 指向已重新分配的内存。通过调用 zx_bti_release_quarantine() 即可清除隔离区。

TODO(teisenbe):添加有关交易失败通知的详细信息。

另请参阅

  • pmt - 固定的内存令牌
  • vm_object - 虚拟内存对象

系统调用