qemu를 사용한 GPU 패스스루 - 비디오 출력 없음(AMD 7970)

qemu를 사용한 GPU 패스스루 - 비디오 출력 없음(AMD 7970)

Arch에서 GPU 패스스루를 설정하려고 합니다. 나는 팔로우한다OVMF 위키를 통한 PCI 패스스루그리고 기타 다양한 온라인 리소스. 필요에 따라 몇 가지 단계를 대체했습니다. 예를 들어 GRUB 대신 systemd-boot를 사용했습니다.

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

VGA 및 HDMI 오디오 장치는 vfio-pci에 의해 선언됩니다.

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 콘솔이 열리지만 모니터에는 출력이 없습니다. qemu 콘솔에서 "info pci" 명령을 실행하면 vga 및 오디오 ID를 볼 수 있기 때문에 가상 머신에 GPU를 사용할 수 있는 것으로 보입니다. 그것이 중요하다면 Libvirtd가 실행 중입니다. VT-d 및 IOMMU가 활성화되었습니다.

또한 linux-vfio-lts를 설치하고 GPU 펌웨어를 최신 버전으로 업데이트했습니다(어느 펌웨어든 UEFI를 지원함). 변경 사항은 없습니다. 7970과 함께 작동하도록 하는 사람들에 대한 보고가 있으므로 작동해야 하지만 다음에 무엇을 시도해야 할지 전혀 모릅니다. 어떤 아이디어가 있나요?

답변1

궁극적으로 이는 소프트웨어 구성 문제인 것 같지만 정확한 원인을 정확히 알 수는 없습니다.

Radeon HD7970 및 RX 480은 이제 내 설정에서 거의 완벽하게 실행됩니다.

비슷한 문제가 있는 사람이 있을 경우를 대비해 가이드도 작성했습니다.Arch Linux의 GPU 패스스루 및 QEMU

관련 정보