Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Ubuntu19.10 KVMでGPUのパススルーができない問題の解決策

More than 1 year has passed since last update.

問題

Ubuntu19.10からKVMでGPUをパススルーし、Windowsのゲストを起動したところ以下の問題が発生しました。
1. ログインパスワードを入力した段階でフリーズ
2. ログイン後数秒で画面が出力されない
3. 画面描写のフレームレートが著しく低い

解決策

該当VMのxmlのos feature内を以下のようにします。
ポイントはq35チップセットを使う点と、 <ioapic driver="kvm"/> (重要) を追加する点です。

  <os>
    <type arch="x86_64" machine="pc-q35-4.0">hvm</type>
    <loader readonly="yes" type="pflash">/usr/share/OVMF/OVMF_CODE.fd</loader>
    <nvram>/var/lib/libvirt/qemu/nvram/Windows_Main_VARS.fd</nvram>
    <boot dev="hd"/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state="on"/>
      <vapic state="on"/>
      <spinlocks state="on" retries="8191"/>
      <vendor_id state="on" value="129286789ab"/>
    </hyperv>
    <kvm>
      <hidden state="on"/>
    </kvm>
    <vmport state="off"/>
    <ioapic driver="kvm"/>
  </features>

原因

NvidiaのドライバーがGPU Passthroughされていることを感知すると、動作を停止させるようです (Error 43問題)
これを回避するために、xmlを以下のようにする手法が、いくつかのサイトで紹介されています。

<features>
    <hyperv>
        ...
        <vendor_id state='on' value='whatever'/>
        ...
    </hyperv>
    ...
    <kvm>
    <hidden state='on'/>
    </kvm>
</features>

しかしこれはqemu4.0未満の環境の設定であり、ubuntu19.10で採用されているqemu4.0では追加で<ioapic driver="kvm"/> の記述が必要なようです。

rarudonet
Unityエンジニア、テクニカルアーティストをやっています
qualiarts-inc
QualiArtsは皆様に長く愛されるエンターテイメントを提供するため、スマートフォンゲームの企画、開発、運営を行っております。
https://qualiarts.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away