Multi Channel DMA Intel® FPGA IP for PCI Express* デザイン例のユーザーガイド

ID 683517
日付 10/06/2023
Public
ドキュメント目次

3.5.2.4.4.2. QEMUを使用してのゲストVMの作成

QEMUを使用してゲスト環境を作成し、VFデバイスをVMに割り当てる場合に必要な手順は次のとおりです。

  1. UIOドライバーからデバイスの結び付きを解除します。
    $./dpdk-devbind.py -u <bdf>
  2. vfio-pci モジュールをインストールします。
    $modprobe vfio-pci
  3. デバイスを vfio-pci に結び付けます。
    1. デバイスが ifc_uio に結び付けられている場合は、次のコマンドで解除します。
      $ echo "<bdf>" > /sys/bus/pci/devices/\
      <bdf>/driver/unbind
      例えば、次のようになります。
      echo "0000:01:00.0" > /sys/bus/pci/devices/\
      0000\:01\:00.0/driver/unbind
    2. デバイスを vfio-pci に結び付けます。
      $ echo <PCI Vendor ID> <PCI Device ID> > /sys/bus/pci/drivers/vfio-pci/new_id
      例えば、次のようになります。
      echo 1172 0000 > /sys/bus/pci/drivers/vfio-pci/new_id
  4. CentOS VMの場合: QEMUのバージョン3.0.0 rc0をインテルマシンで使用します。VMは、8GB RAMで作成することが推奨されます。

    ./qemu-3.0.0-rc0/x86_64-softmmu/qemu-system-x86_64 -smp 8 -m 10240M -boot c -machine q35,kernel-irqchip=split -cpu host -enable-kvm -nographic -L /home/dev/QEMU/qemu-3.0.0-rc0/pc-bios -name offload1 -hda /home/dev/QEMU/vm1.qcow2 -device vfio-pci,host=01:00.4 -netdev type=tap,id=net6551,script=no,downscript=no,vhost=on,ifname=net6551 -device virtio-net-pci,netdev=net6551 -device intel-iommu,intremap=on,caching-mode=on -serial telnet::5551,server,nowait -object memory-backend-file,id=mem,size=10240M,mem-path=/dev/hugepages,share=on -numa node,memdev=mem -mem-prealloc -monitor telnet::3331,server,nowait&

    別の端末 (vm) の場合
    telnet localhost 5551
    ifconfig eth0 up
    user:root
    pass:root
    Bring up interface.
    $ifconfig eth0 up
    Assign the IP address to eth0.
    $ifconfig eth0 <1.1.1.11>
    ホストの場合
    $ifconfig net6551 up
    $ifconfig net6551 <1.1.1.12>

    scpを使用してコードをコピーします。

    例: $scp -r <directory> root@<GuestIP>:/ <path_to_the_directory>/

  5. Ubuntu VMの場合
    qemu 7.0.0バージョンを入手し、次の手順に従いコンパイルします。
    wget  https://download.qemu.org/qemu-7.0.0.tar.xz 
    tar xvJf qemu-7.0.0.tar.xz 
    cd qemu-7.0.0 
     ./configure 
     make -j$nproc 
    cd .. 
    Ubuntu VMイメージを入手します。
    wget https://cloud-images.ubuntu.com/releases/jammy/release/ubuntu-22.04-server-cloudimg-amd64.img 
    
    mv ubuntu-22.04-server-cloudimg-amd64.img ubuntu-22.04.qcow2 
    
    sudo qemu-img create -f qcow2 -F qcow2 -o  backing_file=./ubuntu-22.04.qcow2 mcdma_VM-1.qcow2 50G 
    
    qemu-img info mcdma_VM-1.qcow2 
    
    sudo genisoimage -output VM-1-cidata.iso -volid cidata -joliet -rock user-data meta-data 

    VMを起動するコマンド

    sudo qemu-7.0.0/build/x86_64-softmmu/qemu-system-x86_64 -smp 8 -machine accel=kvm,type=q35,kernel-irqchip=split -cpu host -enable-kvm -nographic -boot c -L qemu-7.0.0/build/pc-bios -cpu host -m 20G -hda mcdma_VM-1.qcow2 -cdrom VM-1-cidata.iso -device vfio-pci,host=$BDF -serial telnet::5551,server,nowait -monitor telnet::3331,server,nowait&

    注:
    • AMDマシンでは、パラメーターの「-device intel-iommu,intremap=on,caching-mode=on」は必要ありません。
    • 複数のデバイスが同じグループにある場合は、ルートポートとブリッジでACSが有効になっているかを確認します。
    • 次の表は、検証に使用しているホストおよびゲストVMのコンフィグレーションです。
      表 43.  ホストシステムのコンフィグレーション
      ホストシステム コンフィグレーションの詳細
      オペレーティング・システム

      CentOS Linuxリリース7.8

      Ubuntu 22.04 LTS

      Linuxカーネル

      CentOS: 3.10.0-1127.10.1.el7.28.x86_64

      Ubuntu: 5.15.0-52-generic x86_64

      CPUコア 96
      RAM 128GB (単一のNUMAでは64GB)
      ハイパーバイザー KVM
      Qemuのバージョン QEMUバージョン3.0.0-rc0
      表 44.  ゲストシステムのコンフィグレーション
      ゲストシステム コンフィグレーションの詳細
      オペレーティング・システム CentOS Linuxリリース7.8
      Linuxカーネル 3.10.0-1127.10.1.el7.28.x86_64
      CPUコア 2
      RAM 8GB