VFIO PCI 配置空间、BAR 与 Reset

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,不能用于生产直通。

文章互动

阅读 --

留言

0 条留言

正在加载留言…