Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第16章 ゲスト仮想マシンのデバイス設定

Red Hat Enterprise Linux 7 は、ゲスト仮想マシン用に 3 つのクラスのデバイスに対応します。
  • エミュレートされたデバイス は、実際のハードウェアを模倣する純粋な仮想デバイスであり、未変更のゲストオペレーティングシステムが標準のインボックスドライバーを使用して動作できるようにします。
  • Virtio デバイス (paravirtualized とも呼ばれます) は、純粋に仮想マシンで最適に機能するように設計された仮想デバイスです。Virtio デバイスはエミュレートされたデバイスに似ていますが、Linux 以外の仮想マシンには、デフォルトで必要なドライバーが含まれません。Virtual Machine Manager (virt-manager) や Red Hat Virtualization Hypervisor などの仮想化管理ソフトウェアは、サポートされている Linux 以外のゲストオペレーティングシステム用にこれらのドライバーを自動的にインストールします。Red Hat Enterprise Linux 7 は、最大 216 の virtio デバイスに対応します。詳細は、5章KVM 準仮想化 (virtio) ドライバー. を参照してください。
  • 割り当てられたデバイス は、仮想マシンに公開される物理デバイスです。この方法は passthrough としても知られています。デバイスの割り当てにより、仮想マシンはさまざまなタスクで PCI デバイスに排他的にアクセスできるようになり、PCI デバイスがゲストオペレーティングシステムに物理的に接続されているかのように見え、動作します。Red Hat Enterprise Linux 7 は、仮想マシンごとに最大 32 の割り当てられたデバイスをサポートします。
    デバイスの割り当ては、一部のグラフィックデバイス を含む PCIe デバイスでサポートされています。パラレル PCI デバイスは、割り当てられたデバイスとしてサポートされる場合がありますが、セキュリティーとシステム設定の競合のために厳しい制限があります。
Red Hat Enterprise Linux 7 は、単一機能スロットとして仮想マシンに公開されるデバイスの PCI ホットプラグに対応します。これを可能にするために、単一機能のホストデバイスや、多機能のホストデバイスの個別の機能を設定できます。デバイスを多機能 PCI スロットとして仮想マシンに公開する設定は、ホットプラグ以外のアプリケーションにのみ推奨されます。
特定のデバイスおよび関連の制限の詳細は、「Devices」 を参照してください。
注記
デバイスが割り当てられたゲストをホストから完全に分離するには、プラットフォームが割り込みの再マッピングをサポートしている必要があります。このようなサポートがないと、ホストは悪意のあるゲストからの割り込み注入攻撃に対して脆弱となる可能性があります。ゲストが信頼されている環境では、vfio_iommu_type1 モジュールへの allow_unsafe_interrupts を使用した PCI デバイスの割り当てを引き続き許可するように、管理者がオプトインする場合があります。これは、以下を含む /etc/modprobe.d に .conf ファイル (local.conf など) を追加することで、永続的に実行できます。
options vfio_iommu_type1 allow_unsafe_interrupts=1
または sysfs エントリーを使用して動的に同じことを行います。
# echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts

16.1. PCI デバイス

PCI デバイスの割り当ては、Intel VT-d または AMD IOMMU のいずれかに対応するハードウェアプラットフォームでのみ利用できます。PCI デバイスの割り当てを機能させるには、この Intel VT-d または AMD IOMMU の仕様が、ホスト BIOS で有効になっている必要があります。

手順16.1 PCI デバイス割り当てのための Intel システムの準備

  1. Intel VT-d 仕様を有効にする

    Intel VT-d 仕様では、物理デバイスを仮想マシンに直接割り当てるハードウェアサポートが提供されます。この仕様は、Red Hat Enterprise Linux で PCI デバイスの割り当てを使用するために必要です。
    Intel VT-d 仕様は、BIOS で有効にする必要があります。システムの製造元によっては、この仕様をデフォルトで無効にしている場合があります。これらの仕様を表示するのに使用される用語はメーカーにより異なります。適切な用語は、システムの製造元のドキュメントを参照してください。
  2. カーネルで Intel VT-d をアクティブにします。

    /etc/sysconfig/grub ファイル内の GRUB_CMDLINX_LINUX 行の末尾に、引用符で囲んで intel_iommu=on パラメーターおよび iommu=pt パラメーターを追加して、カーネル内で Intel VT-d をアクティブにします。
    以下は、Intel VT-d を有効にした修正grubです。
    GRUB_CMDLINE_LINUX="rd.lvm.lv=vg_VolGroup00/LogVol01
    vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg_VolGroup_1/root
    vconsole.keymap=us $([ -x /usr/sbin/rhcrashkernel-param ] && /usr/sbin/
    rhcrashkernel-param || :) rhgb quiet intel_iommu=on iommu=pt"
  3. 設定ファイルの再生成

    以下を実行して /etc/grub2.cfg を再生成します。
    grub2-mkconfig -o /etc/grub2.cfg
    UEFI ベースのホストを使用している場合は、ターゲットファイルが/etc/grub2-efi.cfg であることに注意してください。
  4. 使用準備完了

    システムを再起動して、変更を有効にします。これで、システムで PCI デバイスの割り当てが可能になります。

手順16.2 PCI デバイス割り当て用の AMD システムの準備

  1. AMD IOMMU 仕様を有効にする

    Red Hat Enterprise Linux で PCI デバイスの割り当てを使用するには、AMD IOMMU の仕様が必要です。この仕様は、BIOS で有効にする必要があります。システムの製造元によっては、この仕様をデフォルトで無効にしている場合があります。
  2. IOMMU カーネルサポートの有効化

    システムの起動時に AMD IOMMU 仕様が有効になるように、/etc/sysconfig/grub の GRUB_CMDLINX_LINUX 行の末尾に引用符で囲って iommu=pt を追加します。
  3. 設定ファイルの再生成

    以下を実行して /etc/grub2.cfg を再生成します。
    grub2-mkconfig -o /etc/grub2.cfg
    UEFI ベースのホストを使用している場合は、ターゲットファイルが/etc/grub2-efi.cfg であることに注意してください。
  4. 使用準備完了

    システムを再起動して、変更を有効にします。これで、システムで PCI デバイスの割り当てが可能になります。
注記
IOMMU の詳細は、付録E IOMMU グループの使用 を参照してください。

16.1.1. virsh を使用した PCI デバイスの割り当て

この手順では、KVM ハイパーバイザーの仮想マシンに PCI デバイスを割り当てる方法を説明します。
この例では、PCI 識別子コード、pci_0000_01_00_0、および完全に仮想化されたゲストマシン guest1-rhel7-64 を持つ PCIe ネットワークコントローラーを使用します。

手順16.3 virsh を使用した PCI デバイスのゲスト仮想マシンへの割り当て

  1. デバイスの識別

    まず、仮想マシンへのデバイス割り当てに指定されている PCI デバイスを特定します。使用可能な PCI デバイスのリストを表示する場合は、lspci コマンドを実行します。grep を使用して、lspci の出力を絞り込むことができます。
    この例では、以下の出力で強調表示されているイーサネットコントローラーを使用します。
    # lspci | grep Ethernet
    00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection
    01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    このイーサネットコントローラーは、短い識別子 00:19.0 で表示されます。この PCI デバイスを仮想マシンに割り当てるには、virsh が使用する完全な ID を確認する必要があります。
    これを行うには、virsh nodedev-list コマンドを使用して、ホストマシンに接続されている特定タイプ (pci) のデバイスをすべてリスト表示します。次に、使用するデバイスの短い識別子にマップする文字列の出力を調べます。
    この例では、短い識別子 00:19.0 を使用して、イーサネットコントローラーにマップする文字列を示しています。: 文字および . 文字は、完全識別子の下線に置き換えられることに注意してください。
    # virsh nodedev-list --cap pci
    pci_0000_00_00_0
    pci_0000_00_01_0
    pci_0000_00_03_0
    pci_0000_00_07_0
    pci_0000_00_10_0
    pci_0000_00_10_1
    pci_0000_00_14_0
    pci_0000_00_14_1
    pci_0000_00_14_2
    pci_0000_00_14_3
    pci_0000_00_19_0
    pci_0000_00_1a_0
    pci_0000_00_1a_1
    pci_0000_00_1a_2
    pci_0000_00_1a_7
    pci_0000_00_1b_0
    pci_0000_00_1c_0
    pci_0000_00_1c_1
    pci_0000_00_1c_4
    pci_0000_00_1d_0
    pci_0000_00_1d_1
    pci_0000_00_1d_2
    pci_0000_00_1d_7
    pci_0000_00_1e_0
    pci_0000_00_1f_0
    pci_0000_00_1f_2
    pci_0000_00_1f_3
    pci_0000_01_00_0
    pci_0000_01_00_1
    pci_0000_02_00_0
    pci_0000_02_00_1
    pci_0000_06_00_0
    pci_0000_07_02_0
    pci_0000_07_03_0
    使用するデバイスにマップする PCI デバイス番号を記録します。これは別の手順で必要になります。
  2. デバイス情報の確認

    ドメイン、バス、および機能の情報は、virsh nodedev-dumpxml コマンドの出力から取得できます。

    図16.1 ダンプの内容

    
    # virsh nodedev-dumpxml pci_0000_00_19_0
    <device>
      <name>pci_0000_00_19_0</name>
      <parent>computer</parent>
      <driver>
        <name>e1000e</name>
      </driver>
      <capability type='pci'>
        <domain>0</domain>
        <bus>0</bus>
        <slot>25</slot>
        <function>0</function>
        <product id='0x1502'>82579LM Gigabit Network Connection</product>
        <vendor id='0x8086'>Intel Corporation</vendor>
        <iommuGroup number='7'>
          <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
        </iommuGroup>
      </capability>
    </device>
    
    
    注記
    IOMMU グループは、IOMMU からの視認性とデバイスの分離に基づいて決定されます。各 IOMMU グループには、1 つ以上のデバイスを含めることができます。複数のデバイスが存在する場合は、グループ内のすべてのデバイスがゲストに割り当てられるため、IOMMU グループ内のすべてのエンドポイントが要求されます。これは、追加のエンドポイントをゲストに割り当てるか、virsh nodedev-detach を使用してホストドライバーから外すことで実行できます。1 つのグループに含まれるデバイスが複数のゲストに分割されたり、ホストとゲストが分割されたりすることはありません。PCIe root ポート、スイッチポート、ブリッジなどのエンドポイント以外のデバイスは、ホストドライバーから分離しないでください。また、エンドポイントの割り当てに影響を及ぼしません。
    IOMMU グループ内のデバイスは、virsh nodedev-dumpxml 出力の IOMMU グループセクションを使用して決定できます。グループの各メンバーは、別のアドレスフィールドで提供されます。この情報は、sysfs で以下を使用して取得することもできます。
    $ ls /sys/bus/pci/devices/0000:01:00.0/iommu_group/devices/
    この出力の例を以下に示します。
    0000:01:00.0  0000:01:00.1
    ゲストに 0000.01.00.0 のみを割り当てるには、ゲストを起動する前に、使用されていないエンドポイントをホストから分離する必要があります。
    $ virsh nodedev-detach pci_0000_01_00_1
  3. 必要な設定の詳細を決定する

    設定ファイルに必要な値は、virsh nodedev-dumpxml pci_0000_00_19_0 コマンドの出力を参照してください。
    この例のデバイスは、bus = 0、slot = 25、および function = 0 の値を持ちます。10 進数の設定では、この 3 つの値が使用されます。
    bus='0'
    slot='25'
    function='0'
  4. 設定の詳細の追加

    virsh edit を実行し、仮想マシン名を指定し、<devices> セクションにデバイスエントリーを追加して、PCI デバイスをゲスト仮想マシンに割り当てます。以下に例を示します。
    # virsh edit guest1-rhel7-64

    図16.2 PCI デバイスの追加

    
    <devices>
    	[...]
     <hostdev mode='subsystem' type='pci' managed='yes'>
       <source>
          <address domain='0' bus='0' slot='25' function='0'/>
       </source>
     </hostdev>
     [...]
    </devices>
    
    または、virsh attach-device を実行して、仮想マシンの名前とゲストの XML ファイルを指定します。
    virsh attach-device guest1-rhel7-64 file.xml
    注記
    PCI デバイスには、デバイスファームウェアまたはデバイス用の起動前ドライバー (PXE など) を提供するための オプションの読み取り専用メモリー (ROM) モジュール (オプション ROM または 拡張 ROM としても知られている) が含まれます。通常、このオプション ROM は、PCI デバイスの割り当てを使用して物理 PCI デバイスを仮想マシンに接続する際に、仮想環境でも機能します。
    ただし、オプション ROM が必要ない場合があります。これにより、仮想マシンの起動に時間がかかったり、デバイスが提供する起動前ドライバーが仮想化と互換性がなくなり、ゲスト OS の起動に失敗する可能性があります。この場合、Red Hat は、仮想マシンからオプション ROM をマスクすることを推奨します。これを行うには、以下を行います。
    1. ホストで、割り当てるデバイスに拡張 ROM ベースアドレスレジスタ (BAR) があることを確認します。これを行うには、デバイスに対して lspci -v コマンドを使用し、以下を含む行の出力を確認します。
      Expansion ROM at
    2. <rom bar='off'/> 要素を、ゲストの XML 設定の <hostdev> 要素の子として追加します。
      <hostdev mode='subsystem' type='pci' managed='yes'>
        <source>
           <address domain='0' bus='0' slot='25' function='0'/>
        </source>
        <rom bar='off'/>
      </hostdev>
      
  5. 仮想マシンの起動

    # virsh start guest1-rhel7-64
これにより、PCI デバイスが仮想マシンに正常に割り当てられ、ゲストオペレーティングシステムにアクセスできるようになります。

16.1.2. virt-manager を使用した PCI デバイスの割り当て

PCI デバイスは、グラフィカルvirt-managerツールを使用してゲスト仮想マシンに追加できます。次の手順では、ギガビットイーサネットコントローラーをゲスト仮想マシンに追加します。

手順16.4 virt-manager を使用した PCI デバイスのゲスト仮想マシンへの割り当て

  1. ハードウェア設定を開く

    ゲスト仮想マシンを開き、Add Hardware をクリックして、仮想マシンに新しいデバイスを追加します。

    図16.3 仮想マシンのハードウェア情報ウィンドウ

    トップのタスクバーで情報ボタンが選択され、左側のメニューペインで Overview が選択されている仮想マシンのハードウェアウィンドウ。
  2. PCI デバイスの選択

    左側の Hardware リストから PCI Host Device を選択します。
    未使用の PCI デバイスを選択します。現在、別のゲストが使用している PCI デバイスを選択すると、エラーが発生することに注意してください。この例では、予備のオーディオコントローラーが使用されています。Finish を選択して設定を完了します。

    図16.4 Add new virtual hardware ウィザード

    左側のメニューペインで PCI Host Device が選択されている Add new virtual hardware ウィザード。右側のメニューペインで、選択するホストデバイスのリストが表示されています。
  3. 新しいデバイスの追加

    セットアップが完了し、ゲスト仮想マシンが PCI デバイスに直接アクセスできるようになりました。

    図16.5 仮想マシンのハードウェア情報ウィンドウ

    上部のタスクバーで Information ボタンが選択され、左側のメニューペインで Overview が選択された仮想マシンハードウェアウィンドウ。左側のメニューペインの仮想マシンデバイスのリストに新しく追加された PCI デバイスが表示されます。
注記
デバイスの割り当てに失敗すると、同じ IOMMU グループに、ホストに依然として接続されているその他のエンドポイントが存在する可能性があります。virt-manager を使用してグループ情報を取得する方法はありませんが、virsh コマンドを使用すると、IOMMU グループの境界を分析したり、必要に応じてデバイスを隔離したりできます。
IOMMU グループの詳細と、virsh を使用してエンドポイントデバイスの割り当てを解除する方法は、「virsh を使用した PCI デバイスの割り当て」注記 を参照してください。

16.1.3. virt-install を使用した PCI デバイスの割り当て

virt-install でゲストをインストールする際に、PCI デバイスを割り当てることができます。これには、--host-device パラメーターを使用します。

手順16.5 virt-install を使用した、仮想マシンへの PCI デバイスの割り当て

  1. デバイスの識別

    ゲスト仮想マシンにデバイス割り当てに指定されている PCI デバイスを特定します。
    # lspci | grep Ethernet
    00:19.0 Ethernet controller: Intel Corporation 82567LM-2 Gigabit Network Connection
    01:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    01:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
    virsh nodedev-list コマンドは、システムに接続されているすべてのデバイスのリストを表示し、各 PCI デバイスを文字列で識別します。出力を PCI デバイスに限定するには、次のコマンドを実行します。
    # virsh nodedev-list --cap pci
    pci_0000_00_00_0
    pci_0000_00_01_0
    pci_0000_00_03_0
    pci_0000_00_07_0
    pci_0000_00_10_0
    pci_0000_00_10_1
    pci_0000_00_14_0
    pci_0000_00_14_1
    pci_0000_00_14_2
    pci_0000_00_14_3
    pci_0000_00_19_0
    pci_0000_00_1a_0
    pci_0000_00_1a_1
    pci_0000_00_1a_2
    pci_0000_00_1a_7
    pci_0000_00_1b_0
    pci_0000_00_1c_0
    pci_0000_00_1c_1
    pci_0000_00_1c_4
    pci_0000_00_1d_0
    pci_0000_00_1d_1
    pci_0000_00_1d_2
    pci_0000_00_1d_7
    pci_0000_00_1e_0
    pci_0000_00_1f_0
    pci_0000_00_1f_2
    pci_0000_00_1f_3
    pci_0000_01_00_0
    pci_0000_01_00_1
    pci_0000_02_00_0
    pci_0000_02_00_1
    pci_0000_06_00_0
    pci_0000_07_02_0
    pci_0000_07_03_0
    PCI デバイス番号を記録します。この番号は他の手順で確認する必要があります。
    ドメイン、バス、および機能の情報は、virsh nodedev-dumpxml コマンドの出力から取得できます。
    # virsh nodedev-dumpxml pci_0000_01_00_0

    図16.6 PCI デバイスファイルの内容

    
    <device>
      <name>pci_0000_01_00_0</name>
      <parent>pci_0000_00_01_0</parent>
      <driver>
        <name>igb</name>
      </driver>
      <capability type='pci'>
        <domain>0</domain>
        <bus>1</bus>
        <slot>0</slot>
        <function>0</function>
        <product id='0x10c9'>82576 Gigabit Network Connection</product>
        <vendor id='0x8086'>Intel Corporation</vendor>
        <iommuGroup number='7'>
          <address domain='0x0000' bus='0x00' slot='0x19' function='0x0'/>
        </iommuGroup>
      </capability>
    </device>
    
    注記
    IOMMU グループに複数のエンドポイントがあり、そのすべてがゲストに割り当てられていない場合は、ゲストを起動する前に次のコマンドを実行して、ホストからその他のエンドポイントの割り当てを手動で解除する必要があります。
    $ virsh nodedev-detach pci_0000_00_19_1
    IOMMU グループの詳細は、「virsh を使用した PCI デバイスの割り当て」注記 を参照してください。
  2. デバイスの追加

    virsh nodedev コマンドから出力された PCI 識別子を、--host-device パラメーターの値として使用します。
    virt-install \
    --name=guest1-rhel7-64 \
    --disk path=/var/lib/libvirt/images/guest1-rhel7-64.img,size=8 \
    --vcpus=2 --ram=2048 \
    --location=http://example1.com/installation_tree/RHEL7.0-Server-x86_64/os \
    --nonetworks \
    --os-type=linux \
    --os-variant=rhel7
    --host-device=pci_0000_01_00_0
  3. インストールを完了する

    ゲストのインストールを完了します。PCI デバイスはゲストに接続する必要があります。

16.1.4. 割り当てられた PCI デバイスの取り外し

ホストの PCI デバイスがゲストマシンに割り当てられると、ホストがそのデバイスを使用できなくなります。PCI デバイスが managed モード (ドメインの XML ファイルmanaged='yes' パラメーターを使用して設定) の場合は、ゲストマシンに接続し、ゲストマシンの接続を解除し、必要に応じてホストマシンに再度接続します。PCI デバイスが managed モードではない場合は、ゲストマシンから PCI デバイスの接続を解除し、virsh または virt-manager を使用して再度接続できます。

手順16.6 virsh を使用したゲストからの PCI デバイスの切り離し

  1. デバイスの取り外し

    次のコマンドを使用して、ゲストの XML ファイルから PCI デバイスを削除し、ゲストから PCI デバイスを切り離します。
    # virsh detach-device name_of_guest file.xml
  2. デバイスをホストに再接続します (オプション)。

    デバイスが managed モードの場合は、この手順を省略します。デバイスは自動的にホストに戻ります。
    デバイスが managed モードを使用していない場合は、次のコマンドを使用して、PCI デバイスをホストマシンに再接続します。
    # virsh nodedev-reattach device
    たとえば、pci_0000_01_00_0 デバイスーをホストコンピューターに再接続するには、次のコマンドを実行します。
    # virsh nodedev-reattach pci_0000_01_00_0
    これで、デバイスがホストで使用できるようになります。

手順16.7 virt-manager を使用したゲストからの PCI デバイスの切り離し

  1. 仮想ハードウェアの詳細画面を開きます。

    virt-manager で、デバイスを含む仮想マシンをダブルクリックします。Show virtual hardware details ボタンを選択すると、仮想ハードウェアのリストが表示されます。

    図16.7 仮想ハードウェアの詳細ボタン

    Show virtual hardware details ボタン。
  2. デバイスを選択して削除する

    左側のパネルにある仮想デバイスのリストから、取り外す PCI デバイスを選択します。

    図16.8 取り外す PCI デバイスの選択

    PCI デバイスの詳細と、Remove ボタン。
    Remove ボタンをクリックして確定します。これで、デバイスがホストで使用できるようになります。

16.1.5. PCI ブリッジ

PCI (Peripheral Component Interconnect) ブリッジは、ネットワークカード、モデム、サウンドカードなどのデバイスに接続するために使用されます。物理デバイスと同様に、仮想デバイスも PCI ブリッジに接続できます。以前は、31 個の PCI デバイスしかゲスト仮想マシンに追加できませんでした。現在、31 番目の PCI デバイスを追加すると、PCI ブリッジが 31 番目のスロットに自動的に配置され、追加した PCI デバイスを PCI ブリッジに移動します。各 PCI ブリッジには、31 の追加デバイス用に 31 個のスロットがあり、すべてがブリッジになることができます。この方法では、ゲスト仮想マシンで 900 を超えるデバイスを使用できます。
PCI ブリッジの XML 設定の例は、Domain XML example for PCI Bridge を参照してください。この設定は自動的に設定されるため、手動で調整することは推奨しません。

16.1.6. PCI デバイスの割り当ての制限

PCI デバイスの割り当て (仮想マシンへの PCI デバイスの割り当て) では、ホストシステムが AMD IOMMU または Intel VT-d をサポートして、PCIe デバイスのデバイス割り当てを有効にする必要があります。
Red Hat Enterprise Linux 7 では、ゲストデバイスドライバーによる PCI 設定領域のアクセスが制限されています。この制限により、拡張 PCI 設定領域にあるデバイスの機能や、機能に依存するドライバーが設定に失敗する場合があります。
Red Hat Enterprise Linux 7 仮想マシンには、割り当てられているデバイスの合計が 32 個までに制限されています。これは、仮想マシンに存在する PCI ブリッジの数や、これらの機能を組み合わせて多機能スロットを作成する方法に関係なく、合計 32 の PCI 機能に変換されます。
デバイスが割り当てられたゲストをホストから完全に分離するには、プラットフォームが割り込みの再マッピングをサポートしている必要があります。このようなサポートがないと、ホストは悪意のあるゲストからの割り込み注入攻撃に対して脆弱となる可能性があります。ゲストが信頼されている環境では、管理者が vfio_iommu_type1 モジュールへの allow_unsafe_interrupts オプションを使用して、PCI デバイスの割り当てを引き続き許可するようにオプトインすることができます。これは、以下を含む /etc/modprobe.d に .conf ファイル (local.conf など) を追加することで、永続的に実行できます。
options vfio_iommu_type1 allow_unsafe_interrupts=1
または sysfs エントリーを使用して動的に同じことを行います。
# echo 1 > /sys/module/vfio_iommu_type1/parameters/allow_unsafe_interrupts