面向采用Intel® Arria® 10 GX FPGA的Intel®可编程加速卡的Intel加速堆栈快速入门指南

ID 683633
日期 12/04/2020
Public
文档目录

8.2. 配置主机上的VF端口

默认情况下,PF控制AFU端口。以下程序将AFU控制转移到VF。转移到VF控制后,在VM上运行的应用程序可以访问AFU

在多卡系统中,如果只想在单一PCIe器件上配置VF,那么请运行以下命令来查找特定PCIe器件的器件映射:
ls -l /sys/class/fpga/intel-fpga-dev.*
样例输出:
/sys/class/fpga/intel-fpga-dev.0 -> ../../devices/pci0000:36/0000:36:00.0/0000:37:00.0/fpga/intel-fpga-dev.0

/sys/class/fpga/intel-fpga-dev.1 -> ../../devices/pci0000:ae/0000:ae:00.0/0000:af:00.0/fpga/intel-fpga-dev.1

要在以下命令中使用PCIe B:D.F (AF:00.0)和B:D.F (37:00.0),请分别使用instance id 10替换*

  1. 分别运行以下三个命令以导出所需的路径:
    export port_path=$(find /sys/class/fpga/intel-fpga-dev.* \
    -maxdepth 1 -follow -iname intel-fpga-port.*)
    export link_path=$(readlink -m /$port_path/../)
    export pci_path=$link_path/../../
  2. 使用fpgaport工具释放由PF控制的端口:
    sudo fpgaport release /dev/intel-fpga-fme.* 0
  3. 使能SR-IOV和VF。每个VF有1个AFU端口:
    sudo sh -c "echo 1 > $pci_path/sriov_numvfs"
  4. 查找VF器件的附加器件编号:
    lspci -nn | grep :09c[45]
    样例输出:
    04:00.0 Processing accelerators [1200]: Intel Corporation Device [8086:09c4]
    04:00.1 Processing accelerators [1200]: Intel Corporation Device [8086:09c5]

    lspci显示一个附加器件编号09c5。这是一个分配给VM的VF器件。PF的原始总线和器件编号保持为09c4。

    请注意:在此示例中,VF器件的Domain:Bus:Device.Function (BDF)符号是:000:04:00.1。将此BDF替换成系统中相应的BDF。

  5. 加载vfio-pci驱动程序:
    sudo modprobe vfio-pci
  6. 解除VF器件与其驱动程序的绑定
    sudo sh -c "echo 0000:04:00.1 > \
    /sys/bus/pci/devices/0000:04:00.1/driver/unbind"
  7. 查找VF器件的供应商和器件ID:
    lspci -n -s 04:00.1

    样例输出:

    04:00.1 1200: 8086:09c5
  8. 将VF绑定到vfio-pci驱动程序:
    sudo sh -c "echo 8086 09c5 > \
    /sys/bus/pci/drivers/vfio-pci/new_id"