RK3588 IOMMU 与 PCIe 透传可行性
1. 配置现状
rockchip_linux_defconfig:
- PCI/PCIe Rockchip host开启;
- Rockchip IOMMU开启;
-未显式开启 VFIO、VFIO PCI、VFIO platform和 KVM。
因此默认镜像不能直接使用 VFIO。
2. Rockchip IOMMU连接
rk3588s.dtsi中 iommus主要出现在:
- NPU;
- VPU/JPEG/IEP/RGA;
- ISP/CIF/FEC;
- VOP。
这些是集成 multimedia IP的专用 MMU。
3. MMU-600节点
rk3588s.dtsi还声明了 mmu600_pcie和 mmu600_php两个 ARM SMMUv3节点,但它们默认 status = "disabled"。在 RK3588 DTS范围内未发现设备引用这两个节点,也未发现 PCIe iommu-map。
4. PCIe关键事实
本树 RK3588 PCIe root nodes包含:
- ranges;
- MSI
msi-map到 GIC ITS; - clocks/PHY/power domain;
但未发现 iommu-map。因此 downstream PCIe requester ID没有映射到 Rockchip IOMMU/SMMU。
5. 结论
不能因为 ROCKCHIP_IOMMU=y就宣称 PCIe endpoint可安全 vfio-pci直通。PCIe ATU inbound/outbound window也不是按 guest IOVA提供隔离的通用 IOMMU。
6. IOMMU Group检查
实际运行必须验证:
1 | readlink -f /sys/bus/pci/devices/0000:*/iommu_group |
没有 group或只有 no-IOMMU group,不能使用 Type1安全映射。
7. Integrated IP
集成 IP虽有 iommus,仍不等于能直接 vfio-platform:
-缺 Rockchip reset插件;
-power/clock/firmware复杂;
-可能共享 IOMMU或资源;
-guest无标准设备模型;
-host vendor driver可能管理多个 blocks;
-secure firmware/GRF依赖。
8. MSI
msi-map只把 PCI requester MSI路由到 ITS。它解决中断地址翻译,不限制普通 DMA。
9. KVM
要做 ARM64 VM直通还需:
- KVM host;
- userspace VMM/QEMU;
-完整 IOMMU;
-irqchip/ITS支持;
-guest资源描述;
-reset;
-group isolation。
本 defconfig未显示 KVM,需产品配置补齐。
10. 推荐
RK3588产品优先使用 virtio/共享内存/专用后端暴露加速能力,而不是直接 platform passthrough。PCIe安全直通需 SoC/板级硬件明确提供 IOMMU路径后再评估。
正在加载留言…