
不同使用場景下的 DMA 地址總結如下使用場景DMA 地址設備眼中的真實身份數據流經的物理路徑Device ? Host (無 IOMMU)主機系統 RAM 的物理地址Device → PCIe Switch → CPU Root Port →System RAMDevice ? Host (有 IOMMU)IOMMU 映射的虛擬地址 (IOVA)Device → PCIe Switch →IOMMU (翻譯)→ System RAMDevice A → Device B (P2P)Device B 的 PCIe BAR 空間地址Device A → PCIe Switch →Device B (直接路由)RDMA (遠端 ? 本端 Host)經由 RDMA 網卡硬件二次轉換的本地內存標識遠端網卡 → 網絡 → 本端網卡 → 本地 DMA 邏輯 → System RAM在 P2P 場景中一個設備需要知道另一個設備 BAR 的 PCIe 總線地址才能直接訪問這時應使用 pci_bus_address() 函數獲得設備的 PCIe 總線地址。