Arch-Linux

使用 qemu 的 GPU 直通 - 無影片輸出 (AMD 7970)

  • August 20, 2016

我正在嘗試在 Arch 上設置 GPU 直通。我通過 OVMF wiki以及其他一些線上資源遵循了PCI 直通。我根據需要替換了幾個步驟,例如我使用 systemd-boot 而不是 GRUB。

一切似乎都正確且正常,除非我啟動 qemu 腳本時螢幕上沒有輸出。VM 按預期開始使用設置的記憶體量,但沒有影片輸出。

lspci -vnn
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] [1002:6798] (prog-if 00 [VGA controller])
   Subsystem: Gigabyte Technology Co., Ltd Device [1458:254d]
   Flags: fast devsel, IRQ 16
   Memory at e0000000 (64-bit, prefetchable) [size=256M]
   Memory at f7b00000 (64-bit, non-prefetchable) [size=256K]
   I/O ports at e000 [size=256]
   Expansion ROM at f7b40000 [disabled] [size=128K]
   Capabilities: <access denied>
   Kernel driver in use: vfio-pci
   Kernel modules: radeon

01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series] [1002:aaa0]
   Subsystem: Gigabyte Technology Co., Ltd Device [1458:aaa0]
   Flags: fast devsel, IRQ 17
   Memory at f7b60000 (64-bit, non-prefetchable) [disabled] [size=16K]
   Capabilities: <access denied>
   Kernel driver in use: vfio-pci
   Kernel modules: snd_hda_intel

00:01.0 PCI bridge [0604]: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port [8086:0151] (rev 09) (prog-if 00 [Normal decode])
   Flags: bus master, fast devsel, latency 0, IRQ 26
   Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
   I/O behind bridge: 0000e000-0000efff
   Memory behind bridge: f7b00000-f7bfffff
   Prefetchable memory behind bridge: 00000000e0000000-00000000efffffff
   Capabilities: <access denied>
   Kernel driver in use: pcieport
   Kernel modules: shpchp

vfio-pci 聲明了 VGA 和 HDMI 音頻設備。

lspci -nnk

01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] [1002:6798]
   Subsystem: Gigabyte Technology Co., Ltd Device [1458:254d]
   Kernel driver in use: vfio-pci
   Kernel modules: radeon
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series] [1002:aaa0]
   Subsystem: Gigabyte Technology Co., Ltd Device [1458:aaa0]
   Kernel driver in use: vfio-pci
   Kernel modules: snd_hda_intel

Qemu 啟動腳本:

#!/bin/bash

cp /usr/share/edk2.git/ovmf-x64/OVMF_VARS-pure-efi.fd /tmp/my_vars.fd
qemu-system-x86_64 \
-enable-kvm \
-m 2048 \
-cpu host,kvm=off \
-vga none \
-device vfio-pci,host=01:00.0,multifunction=on \
-device vfio-pci,host=01:00.1 \
-drive if=pflash,format=raw,readonly,file=/usr/share/edk2.git/ovmf-x64/OVMF_CODE-pure-efi.fd \
-drive if=pflash,format=raw,file=/tmp/my_vars.fd

腳本中的所有文件都存在。執行時 qemu 控制台在主機上打開,但在監視器上沒有輸出。vm 似乎可以使用 GPU,因為當我在 qemu 控制台中執行“info pci”命令時,我可以看到 vga 和音頻 ID。如果重要,Libvirtd 正在執行。啟用 VT-d 和 IOMMU。

我還安裝了 linux-vfio-lts 並將 GPU 韌體更新到最新(任一韌體都支持 UEFI),沒有任何變化。有報導稱人們讓它與 7970 一起工作,所以它應該可以工作,但我完全不知道接下來要嘗試什麼。有任何想法嗎?

最後它似乎是一個軟體配置問題,雖然我無法查明確切的原因。

Radeon HD7970 和 RX 480 現在幾乎可以完美地配合我的設置。

如果有人遇到類似問題,我最後還寫了一個指南:GPU Passthrough with QEMU on Arch Linux

引用自:https://unix.stackexchange.com/questions/271916