NAME
bus_transaction_initiator - 指定行銷區域設定能力
概要
匯流交易啟動器 (BTI) 代表裝置的匯流排/指定行銷區域能力,可用於授予裝置記憶體存取權。
說明
針對每部裝置可用的各公車交易 ID,裝置驅動程式都會提供一個 BTI。在此情況下,公車交易 ID 是 IOMMU 使用的硬體交易 ID (例如 Intel 的 IOMMU 上的 PCI 位址,以及 ARM SMMU 上的 StreamID)。
BTI 可用於固定虛擬記憶體物件 (VMO) 中使用的記憶體。如果呼叫端將 VMO 中的記憶體固定,則會提供裝置實體位址,可用來向 VMO 發出記憶體交易 (前提是交易具有正確的匯流交易 ID)。如果影響這些地址的交易使用了不同的交易 ID,則交易可能會失敗,且核發裝置可能需要重設才能繼續運作。
BTI 會管理隔離的固定記憶體權杖 (PMT) 清單。如果使用 zx_bti_pin()
從 BTI 建立 PMT,且在未呼叫 zx_pmt_unpin()
的情況下釋出 PMT 的控制代碼,則該 PMT 將遭到隔離。隔離的 PMT 會防止系統將基礎實體記憶體釋放給系統重複使用,以防止 DMA 進入後置放的記憶體。您可以叫用 zx_bti_release_quarantine()
來清除隔離區。
TODO(teisenbe):新增交易失敗通知的詳細資料。
另查看
音效
zx_bti_create()
- 建立新的公車交易啟動器zx_bti_pin()
- 固定記憶體,並授予 BTI 存取權zx_bti_release_quarantine()
- 發布遭到隔離的 PMTzx_pmt_unpin()
- 撤銷存取權並取消固定記憶體