Bus Transaction Initiator


英文原文快照


名称

bus_transaction_initiator —— DMA配置能力

概要

总线事务启动器(BTI)表示设备的总线主控/DMA功能,可用于设备对存储器的访问进行授权。

描述

系统为每个设备驱动程序其对应的设备,可使用的每个总线事务ID提供一个BTI。 在此上下文中的总线事务ID是可由IOMMU使用的硬件事务标识符(例如,Intel的IOMMU上的PCI地址和ARM的SMMU上的StreamID)。

BTI可用于固定虚拟内存对象(VMO)中使用的内存。 如果调用者固定来自VMO的内存,则内核为它们提供设备物理地址,这些地址可用于向VMO发出内存事务(前提是事务具有正确的总线事务ID)。 如果设备使用不同的事务ID发起影响这些地址的事务,则事务可能失败并且发起设备可能需要重置以便于继续运行。

BTI管理了隔离的PMT列表。 如果使用bti_pin() 从BTI创建PMT,并且在没有调用pmt_unpin() 的情况下释放PMT句柄,则PMT将处于隔离状态。 隔离的PMT将阻止其底层物理内存被释放到系统以供重用,以防止DMA到这些重新分配的内存。 可通过调用bti_release_quarantine() 来清除隔离内存。

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

另见

  • pmt —— 固定内存令牌(PMT)
  • vm_object —— 虚拟内存对象

系统调用