QDMA 可实现 SR-IOV 直通虚拟化,其中适配器会公开一个独立的虚拟功能 (VF) 以供虚拟机 (VM) 使用。可以选择为物理功能 (PF) 提供完整访问 QDMA 寄存器和资源的特权,但仅限 VF 才能实现逐队列指针更新寄存器和中断。VF 驱动程序必须通过邮箱与附加到 PF 的驱动程序进行通信,以进行配置、资源分配和异常处理。QDMA 可实现功能级别复位 (FLR),在 VM 上支持操作系统进行器件复位,且不会对平台其余部分造成干扰。
类型 | 注释 |
---|---|
队列上下文/其他控制寄存器 | 用于上下文访问的寄存器仅限由 PF(全部 4 个 PF)进行控制。 |
状态和统计数据寄存器 | 主要是仅限 PF 的寄存器。VF 需要与 PF 驱动程序协调以进行错误处理。VF 需要通过邮箱与附加到 PF 的驱动程序进行通信。 |
数据路径寄存器 | PF 和 VF 都必须能直接写入数据路径中涉及的寄存器,而无需穿过虚拟机管理器。VF 或 PF 可使用自有 BAR 空间为与功能关联的队列直接完成 H2C/C2H 描述符提取的指针更新。针对不属于功能的队列执行的任何指针更新都将被丢弃,并记录错误。 |
其他保护建议 | 开启 IOMMU 以保护来自 VM 的错误存储器访问。 |
PF 驱动程序和 VF 驱动程序通信 | VF 驱动程序需与 PF 驱动程序通信,以请求具有全局影响的操作。此通信通道需要该功能来传递报文和生成中断。此通信通道会为每个 VF 使用一组硬件邮箱。 |