SR-IOV 支持 - 5.0 简体中文

QDMA Subsystem for PCI Express 产品指南 (PG302)

Document ID
PG302
Release Date
2023-05-16
Version
5.0 简体中文

QDMA Subsystem for PCIe 提供了可选功能特性,以支持单根 I/O 虚拟化 (SR-IOV)。PCI-SIG® 单根 I/O 虚拟化与共享 (SR-IOV) 规范(详见PCI-SIG 规范(www.pcisig.com/specifications))旨在对数据路径传输事务内所涉及的 VMM 的旁路方法加以规范化,并允许单一端点显示为多个独立端点。SR-IOV 将各功能分类为:

  • 物理功能 (PF):全功能特性的 PCIe® 功能,包含 SR-IOV 等功能。
  • 虚拟功能 (VF):PCIe 功能,特供含基址寄存器 (BAR) 的配置空间,但缺少完整配置资源,由 PF 配置进行控制。VF 的主要作用是数据传输。

除了 PCIe 定义的配置空间,QDMA Subsystem for PCI Express 还会将数据路径操作(如队列的指针更新和中断)加以虚拟化。其余管理和配置功能都将推迟到物理功能驱动程序。没有足够特权的驱动程序必须通过邮箱接口与有特权的驱动程序进行通信,邮箱接口在 QDMA Subsystem for PCI Express 内提供。

安全性是虚拟化的一个重要方面。QDMA Subsystem for PCI Express 可提供以下安全性功能:

  • QDMA 只允许有特权的 PF 对每个队列上下文和寄存器进行配置。VF 会将任何队列上下文编程告知对应的 PF。
  • 驱动程序仅限于为分配到的队列执行指针更新。
  • 通过开启系统 IOMMU 即可检查 PF 或 VF 当前请求的 DMA 访问。ARID 来自于有特权的功能所编程的队列上下文。

任何 PF 或 VF 均可通过邮箱与除本身以外的其他 PF 进行通信。每个功能均可实现一个 128B 收件箱和 128B 发件箱。这些邮箱对自身功能的 DMA BAR(通常是 BAR0)中的驱动程序均可见。无论何时,任一功能都能有一条传出邮箱报文和一条传入邮箱报文处于未完成状态。

下图显示了典型系统如何使用 QDMA 的不同功能和操作系统。不同的队列可分配到不同的功能,每个功能都可彼此独立传输 DMA 包。

图 1. 系统中的 QDMA