参照元†
- FIXME: これは何?
- 優先順に書くと
- IOMMU が定義する DMA 処理
- デバイス独自の DMA 処理(dev->archdata.dma_ops)
- ARM64 デフォルトの DMA 処理(swiotlb_dma_ops)
- struct device *dev
- u64 dma_base
- u64 size
- struct iommu_ops *iommu
- bool coherent
返り値†
DMA 操作の取得
関係する DMA 操作
- ダミーは直接設定されるわけではなく、この関数を一度も呼ばないなど
DMA 操作が未定義の状態で DMA API を使った場合、下記経路でダミーを返す
void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
struct iommu_ops *iommu, bool coherent)
{
if (!dev->archdata.dma_ops)
dev->archdata.dma_ops = &swiotlb_dma_ops;
- デバイス独自の DMA 処理が定義されていなければ ARM64 デフォルトの DMA 処理を使う
dev->archdata.dma_coherent = coherent;
__iommu_setup_dma_ops(dev, dma_base, size, iommu);
}
コメント†