1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Proxmox VE 8上のWin11でRyzen7 5700UのGPUをPassthroughで使用する

Posted at

はじめに

Proxmox VE 8で稼働しているVM(Windows11)のパフォーマンスを少しでも上げたいと思い年末年始の休暇を利用して試行錯誤しました。
同様のことをやりたい人は多そうなのに、なぜかRyzenのGPU(APU)をPassthroughに関する日本語の情報は少なかったので、とりあえずやったことを残しておきます。

最終的にVMからGPUが見えるようになった状態を手順にしてありますが、この手順で実現できるのかどうかは検証できていません。また実際には不要な手順も残っているかもしれません。

環境

我が家のProxmoxサーバはRyzen7 5700Uが搭載されたミニPCで稼働してます。
今回は、このミニPCのRyzen7 5700UのGPUをVM(Windows11)にPassthroughします。

Proxmox VE のバージョン:8.3.2
使用しているkernel:6.8.12-5-pve

Proxmoxサーバの設定変更

ハードウェア(BIOS)設定

PassthroughするためにはBIOS設定も注意する必要ありますが(デフォルト状態で設定されていたので)省略。
IOMMUとかその辺の項目をenableにする必要あり。

grub設定変更

/etc/default/grub のGRUB_CMDLINE_LINUX_DEFAULTを以下に変更する。

GRUB_CMDLINE_LINUX_DEFAULT="amd-pstate=passive quiet video=efifb:off initcall_blacklist=sysfb_init textonly iommu=pt pcie_acs_override=downstream,multifunction"

上記の変更後にupdate-grubを実行

# update-grub

/etc/initramfs-tools/modulesにvfioモジュールを追加

/etc/initramfs-tools/modulesに以下を追加

/etc/initramfs-tools/modules
vfio
vfio_iommu_type1
vfio_pci

/etc/modprobe.d/vfio.confの作成

PCIデバイスのIDを確認

lspciコマンドでVGAデバイスのIDを確認する(04:00.0の部分)。

# lspci -nn |grep VGA
04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:164c] (rev c1)

Ryzen 5700U関連のデバイスを確認

確認したID(04:00)で絞り込んでRyzen7 5700Uのデバイスを確認する。

# lspci -nn | grep 04:00
04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:164c] (rev c1)
04:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller [1002:1637]
04:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor [1022:15df]
04:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
04:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Renoir/Cezanne USB 3.1 [1022:1639]
04:00.5 Multimedia controller [0480]: Advanced Micro Devices, Inc. [AMD] ACP/ACP3X/ACP6x Audio Coprocessor [1022:15e2] (rev 01)
04:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h/19h HD Audio Controller [1022:15e3]
04:00.7 Signal processing controller [1180]: Advanced Micro Devices, Inc. [AMD] Sensor Fusion Hub [1022:15e4]

vfio.conf作成

ids=にはlspci -nnで確認したIDを書く。VGA(1002:164c)とAudio device(1002:1637)をPassthroughする。

/etc/modprobe.d/vfio.conf
options vfio-pci 1002:164c,1002:1637 disable_vga=1

softdep radeon pre: vfio-pci
softdep amdgpu pre: vfio-pci
softdep snd_hda_intel pre: vfio-pci

BIOSイメージからROMを抽出

ここの情報を参考にROMを抽出。
抽出されたvbios_1002_1636_1.romファイルをProxmox環境の/usr/share/kvm/に配置する。

# cp -p /tmp/extract/output/vbios_1002_1636_1.rom /usr/share/kvm/

/usr/share/kvm/に配置するのは lspciで調べた以下のメッセージにある[1002:164c]に該当するファイルです。

04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:164c] (rev c1)

同様にAMDGopDriver.romも配置する。(これも抽出できるとおもうのだけど未確認。ここの情報を参考に入手した)

Proxmoxサーバ再起動前の確認

GPU のドライバとしてamdgpuを使用していることを確認。

# lspci -nnk | grep -A 2 04:00.0
04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:164c] (rev c1)
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:0123]
        Kernel driver in use: amdgpu

Proxmoxサーバを再起動

initramfsを更新した後、OSを再起動する。

# update-initramfs -u -k all
# shutdown -r now

Proxmoxサーバ再起動後の確認

使用しているのドライバがvfio-pciになっていることを確認する。

# lspci -nnk | grep -A 3 04:00.0
04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:164c] (rev c1)
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Lucienne [1002:0123]
        Kernel driver in use: vfio-pci
        Kernel modules: amdgpu
# lspci -nnk | grep -A 3 04:00.1
04:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller [1002:1637]
        Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] Renoir Radeon High Definition Audio Controller [1002:1637]
        Kernel driver in use: vfio-pci
        Kernel modules: snd_hda_intel

VM側の設定(Windows11)

PCIデバイスを追加

WebUIからPCIデバイスを追加する。
その後、定義ファイルを直接編集してROMファイルを指定する。

/etc/pve/nodes/pve/qemu-server/122.conf
hostpci0: 0000:04:00.0,pcie=1,romfile=vbios_1002_164c.bin
hostpci1: 0000:04:00.1,pcie=1,romfile=AMDGopDriver.rom

ディスプレイを変更

ディスプレイの設定でグラフィックカードを「VirGL GPU」にしていたら起動できなくなったので「既定」に変更する。

VMを起動して動作確認

GPUが見えていることを確認

デバイスマネージャーを開いて確認する。

ドライバのインストール

AMDのサイトからダウンロードしたWindows用ドライバをインストールする。

RadeonResetBugFixのインストール

RadeonResetBugFixをインストールする。
これをインストールしないと、VMを再起動しようとすると起動できない状態になり、再起動するためにはProxmoxサーバ自体を再起動する必要あるらしい。

これをインストールしていても時々そのような状況になることがある気がする。画面見えないから詳細不明。

RadeonResetBugFixService.exeを実行ファイルを配置するパスにおいて以下を実行する。

RadeonResetBugFixService.exe install

Downloadsディレクトリに配置したまま実行すると、Downloadsディレクトリのパスで登録されてしまうので注意。

VMをシャットダウンして出力先を変更

追加したPCIデバイスをメインGPUに変更。
ディスプレイをnoneに変更。

リモートデスクトップ接続して確認

リモートデスクトップで接続して、GPUがPassthroughされて見えていることを確認。

Passthrough設定後

SunshineをインストールしてMoonlightでリモートアクセスしてます。
軽いSteamゲームであれば動作するので良い感じです。

Sunshine起動時にディスプレイがつながっていないとエラーになるようなので、ミニPCにはHDMIダミープラグを指してます。

参考リンク

https://forum.proxmox.com/threads/pci-gpu-passthrough-on-proxmox-ve-8-installation-and-configuration.130218/
https://forum.proxmox.com/threads/amd-apu-gpu-passthrough.138878/
https://github.com/isc30/ryzen-7000-series-proxmox
https://gist.github.com/matt22207/bb1ba1811a08a715e32f106450b0418a
https://zenn.dev/fukumen/articles/proxmox-gpu-passthrough-cezanne

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?