VFIO Platform 与 AMBA 设备
1. 目标
Platform VFIO把非PCI MMIO设备的 resources和 IRQ导出给用户态。ARM/ARM64可选。
2. 对象
vfio_platform_device保存:
- vfio_device;
- platform/AMBA parent;
- regions;
- IRQs;
- reset callback/module;
- open count;
- locks。
3. Probe
1 | vfio-platform driver binds |
只有具备 IOMMU group和可安全接管条件的 device才适合。
4. Region
Platform memory resources变成 VFIO regions,支持 GET_REGION_INFO和 read/write/mmap。Resource flags和 page边界决定 mmap能力。
5. IRQ
每个 platform IRQ是一个 VFIO IRQ index,通过 eventfd触发;level IRQ可 automask,用户完成后 unmask。
6. Reset
本树 reset插件只包含:
- Calxeda XGMAC;
- AMD XGBE;
- Broadcom FlexRM。
没有 Rockchip通用 reset插件。vfio-platform模块参数 reset_required默认是 true;找不到/执行 reset失败会使 device open失败。AMBA路径明确把 reset_required设为 false,但这只是接口策略差异,不证明设备可安全交接。
7. Driver override
Platform VFIO通常不能像 PCI按 vendor/device自动安全匹配任意设备;通过 override/bind操作接管必须确保原 driver、clocks、power domain和 child全部处理。
8. AMBA
vfio_amba.c复用 platform base,适用于 AMBA device模型;RK3588多数 IP是 platform device,不是 AMBA PrimeCell枚举。
9. RK3588困难
集成 IP常依赖:
-多个 clocks/resets;
-power domain;
-IOMMU;
-firmware;
-共享 GRF;
-多个子设备;
-vendor kernel API。
通用 VFIO platform只导出 MMIO/IRQ,不能自动虚拟化这些控制面。
10. 结论
不要把 NPU/VPU/ISP绑定 vfio-platform就视为可透传。需要专用 reset、PM、IOMMU和 guest设备模型设计。
正在加载留言…