GPU Passthrough with qemu - sem saída de vídeo (AMD 7970)

0

Estou tentando configurar a passagem da GPU no Arch. Eu segui a passagem PCI via wiki OVMF junto com alguns outros recursos online. Eu substitui alguns passos conforme necessário, por exemplo, estou usando o systemd-boot em vez do GRUB.

Tudo parece correto e funcionando, exceto quando eu inicio o script qemu, não há saída na tela. A VM começa a usar a quantidade de memória definida como esperado, mas sem saída de vídeo.

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

Os dispositivos de áudio VGA e HDMI são reivindicados pelo 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

Script de início do 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

Todos os arquivos no script existem. Quando executado, o console do qemu é aberto no host, mas não exibe saída no monitor. A GPU parece estar disponível para a VM, pois eu posso ver o ID de áudio e vga quando executo o comando "info pci" no console do qemu. O Libvirtd está em execução, se for importante. O VT-d e o IOMMU estão habilitados.

Eu também instalei o linux-vfio-lts e atualizei o firmware da GPU para o mais recente (o UEFI é suportado em qualquer firmware) sem nenhuma alteração. Há relatos de pessoas recebendo isso para trabalhar com 7970, então deve funcionar, mas estou completamente preso sobre o que tentar em seguida. Alguma idéia?

    
por DominicM 24.03.2016 / 12:31

1 resposta

0

No final, parece ter sido um problema de configuração de software, embora eu não tenha conseguido identificar a causa exata.

Tanto a Radeon HD7970 quanto a RX 480 funcionam quase perfeitamente com a minha configuração agora.

Eu também acabei escrevendo um guia se alguém tiver problemas semelhantes: Transferência de GPU com o QEMU no Arch Linux

    
por 20.08.2016 / 12:11