Intel Acceleration Stack快速入门指南: Intel FPGA Programmable Acceleration Card D5005

ID 683394
日期 9/09/2020
Public
文档目录

7.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 Device的其他Device编号:
    lspci -nn | grep :0b2[bc]
    样例输出:
    04:00.0 Processing accelerators [1200]: Intel Corporation Device [8086:0b2b]
    04:00.1 Processing accelerators [1200]: Intel Corporation Device [8086:0b2c]

    lspci显示一个额外的Device编号,0b2c。这是分配给VM的VF Device。PF的原始Bus和Device编码保持为0b2b。

    请注意:VF器件的Domain:Bus:Device.Function (BDF)表示法为000:04:00.1

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

    预期输出:

    04:00.1 1200: 8086:0b2c
  8. 绑定VF和vfio-pci驱动程序:使用上一步中的Vendor ID和Device ID。
    sudo sh -c "echo 8086 0b2c > \
    /sys/bus/pci/drivers/vfio-pci/new_id"