VFIO PCI 配置空间、BAR 与 Reset
1. 组成
vfio_pci.c:generic PCI driver绑定;vfio_pci_core.c:device ops和生命周期;vfio_pci_config.c:config space虚拟化;vfio_pci_rdwr.c:region read/write;vfio_pci_intrs.c:INTx/MSI/MSI-X;- vendor/arch extensions。
2. Region
标准 index包括:
- PCI config;
- BAR0–BAR5;
- ROM;
- VGA/PCI vendor regions。
GET_REGION_INFO返回 size、offset、flags和 sparse mmap capability。
3. MMAP
可 mmap BAR需:
- region允许;
- page对齐;
-范围合法;
-非禁止 I/O/config区域;
-平台支持。
Sparse mmap只开放安全/可映射子范围。
4. Config space
Driver维护 virtual config:
-拦截 command;
-BAR sizing/assignment;
-MSI/MSI-X;
-PCIe capabilities;
-ROM;
-reset/power相关 bits。
用户读写不会无条件直达硬件。
5. Reset
可能使用:
- Function Level Reset;
- PM reset;
- bus/slot reset;
- vendor reset;
-hot reset。
若 reset影响同 bus其他设备,必须把相关设备纳入协调范围。
6. Open
Open启用 device、保存状态、设置 power、初始化 config/IRQ。Close禁用 IRQ、reset并恢复 host可接受状态。
7. SR-IOV
PF/VF关系、VF token和 reset隔离很关键。把 VF交出不代表 PF管理面不受信任;PF driver和 firmware必须支持安全隔离。
8. Binding
可通过 PCI ID表或 driver_override=vfio-pci绑定。切换前必须:
-停止原 driver业务;
-unbind;
-确认 group;
-确认 reset;
-绑定组内全部必要 function。
9. RK3588
PCIe endpoint可能支持 BAR/MSI/reset,但本 DTS root complex无 iommu-map。即使 vfio-pci能 bind,也可能没有安全 Type1 DMA domain,不能用于生产直通。
正在加载留言…