KVM/QEMU 部署与设备绑定
1. 前置检查
1 | zcat /proc/config.gz | grep -E 'VFIO|IOMMU|KVM' |
先证明硬件 IOMMU和 group存在,再配置 VFIO。
2. 推荐配置
1 | CONFIG_VFIO=y/m |
不要启用 VFIO_NOIOMMU作为生产替代。
3. PCI绑定
1 | DEV=0000:01:00.0 |
命令必须按实际 driver状态调整;切换网络/存储设备可能立即中断系统。
4. Group完整性
列出:
1 | GROUP=$(basename "$(readlink -f /sys/bus/pci/devices/$DEV/iommu_group)") |
组内每个 function和 bridge关系都需评估,不能只绑定目标 function。
5. 权限
QEMU进程需:
- group node访问;
-足够 memlock;
-KVM访问;
-必要 hugepages;
-设备 firmware/ROM;
-受控 cgroup/device ACL。
不建议 chmod 666 /dev/vfio/*。
6. QEMU
典型参数概念:
1 | -device vfio-pci,host=0000:01:00.0 |
ARM virt machine还需正确 GIC/ITS、guest firmware和 MMIO window。具体参数取决于 QEMU版本。
7. 启动前
-停止 host业务;
-确认 reset能力;
-备份 console;
-确认 rootfs/network不依赖目标;
-验证组隔离;
-验证 guest driver;
-准备失败回绑。
8. 关闭
Guest shutdown后确认 DMA停止、fd关闭和 reset成功,再清 driver_override并 probe原 driver。无法 reset的设备可能需整机重启。
9. RK3588限制
在当前 DTS无 PCIe IOMMU映射的前提下,上述流程预期会在 group/Type1 attach阶段不满足安全条件;不要以 unsafe no-IOMMU强行完成。
正在加载留言…