VFIO Platform 与 AMBA 设备

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
2
3
4
5
vfio-platform driver binds
-> initialize vfio device
-> enumerate resources
-> discover reset
-> vfio_register_group_dev

只有具备 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设备模型设计。

文章互动

阅读 --

留言

0 条留言

正在加载留言…