You are not logged in.

#1 2021-02-02 00:25:43

aamm19
Member
Registered: 2019-05-02
Posts: 5

PCI passthrough via OVMF only returns black screen

Hey everyone

I've been trying to set up a virtual machine with pass-through for a couple of hours now but haven't been able to get output through the screen. I've been using the ArchWiki for the setup and everything seemed to be running smoothly until I tried to attach the PCI Device for a graphics card.

dmesg | grep -i -e DMAR -e IOMMU

[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=7a2cdb89-46cd-4d5e-806b-359bbc343a20 rw loglevel=3 quiet amd_iommu=on iommu=pt vfio-pci.ids=1002:6810,1002:aab0
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=7a2cdb89-46cd-4d5e-806b-359bbc343a20 rw loglevel=3 quiet amd_iommu=on iommu=pt vfio-pci.ids=1002:6810,1002:aab0
[    0.183758] iommu: Default domain type: Passthrough (set via kernel command line)
[    0.300764] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[    0.300825] pci 0000:00:01.0: Adding to iommu group 0
[    0.300835] pci 0000:00:01.3: Adding to iommu group 1
[    0.300848] pci 0000:00:02.0: Adding to iommu group 2
[    0.300862] pci 0000:00:03.0: Adding to iommu group 3
[    0.300873] pci 0000:00:03.1: Adding to iommu group 4
[    0.300882] pci 0000:00:03.2: Adding to iommu group 5
[    0.300895] pci 0000:00:04.0: Adding to iommu group 6
[    0.300908] pci 0000:00:07.0: Adding to iommu group 7
[    0.300918] pci 0000:00:07.1: Adding to iommu group 8
[    0.300931] pci 0000:00:08.0: Adding to iommu group 9
[    0.300940] pci 0000:00:08.1: Adding to iommu group 10
[    0.300957] pci 0000:00:14.0: Adding to iommu group 11
[    0.300967] pci 0000:00:14.3: Adding to iommu group 11
[    0.301009] pci 0000:00:18.0: Adding to iommu group 12
[    0.301018] pci 0000:00:18.1: Adding to iommu group 12
[    0.301027] pci 0000:00:18.2: Adding to iommu group 12
[    0.301036] pci 0000:00:18.3: Adding to iommu group 12
[    0.301045] pci 0000:00:18.4: Adding to iommu group 12
[    0.301053] pci 0000:00:18.5: Adding to iommu group 12
[    0.301063] pci 0000:00:18.6: Adding to iommu group 12
[    0.301072] pci 0000:00:18.7: Adding to iommu group 12
[    0.301094] pci 0000:01:00.0: Adding to iommu group 13
[    0.301105] pci 0000:01:00.1: Adding to iommu group 13
[    0.301115] pci 0000:01:00.2: Adding to iommu group 13
[    0.301119] pci 0000:02:00.0: Adding to iommu group 13
[    0.301122] pci 0000:02:02.0: Adding to iommu group 13
[    0.301129] pci 0000:02:03.0: Adding to iommu group 13
[    0.301133] pci 0000:02:04.0: Adding to iommu group 13
[    0.301136] pci 0000:02:05.0: Adding to iommu group 13
[    0.301140] pci 0000:02:06.0: Adding to iommu group 13
[    0.301143] pci 0000:02:07.0: Adding to iommu group 13
[    0.301147] pci 0000:03:00.0: Adding to iommu group 13
[    0.301151] pci 0000:04:00.0: Adding to iommu group 13
[    0.301177] pci 0000:0a:00.0: Adding to iommu group 14
[    0.301189] pci 0000:0a:00.1: Adding to iommu group 14
[    0.301213] pci 0000:0b:00.0: Adding to iommu group 15
[    0.301224] pci 0000:0b:00.1: Adding to iommu group 15
[    0.301235] pci 0000:0c:00.0: Adding to iommu group 16
[    0.301246] pci 0000:0c:00.2: Adding to iommu group 17
[    0.301256] pci 0000:0c:00.3: Adding to iommu group 18
[    0.301266] pci 0000:0d:00.0: Adding to iommu group 19
[    0.301276] pci 0000:0d:00.2: Adding to iommu group 20
[    0.301287] pci 0000:0d:00.3: Adding to iommu group 21
[    0.301672] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[    0.302084] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[    0.318299] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>

I ran the script that's suggested to check the IOMMU grouping and this is the graphic cards results:

IOMMU Group 14:
        0a:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] [1002:67df] (rev ef)
        0a:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] [1002:aaf0]
IOMMU Group 15:
        0b:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X] [1002:6810]
        0b:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] [1002:aab0]
IOMMU Group 16:

Since the card I want to pass through is the 270X, I edited /etc/default/grub like so:

GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet amd_iommu=on iommu=pt vfio-pci.ids=1002:6810,1002:aab0"

And verified the configuration worked:
dmesg | grep -i vfio

[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=7a2cdb89-46cd-4d5e-806b-359bbc343a20 rw loglevel=3 quiet amd_iommu=on iommu=pt vfio-pci.ids=1002:6810,1002:aab0
[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-linux root=UUID=7a2cdb89-46cd-4d5e-806b-359bbc343a20 rw loglevel=3 quiet amd_iommu=on iommu=pt vfio-pci.ids=1002:6810,1002:aab0
[    3.407480] VFIO - User Level meta-driver version: 0.3
[    3.411718] vfio-pci 0000:0b:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=none
[    3.427077] vfio_pci: add [1002:6810[ffffffff:ffffffff]] class 0x000000/00000000
[    3.443794] vfio_pci: add [1002:aab0[ffffffff:ffffffff]] class 0x000000/00000000
[    5.705924] vfio-pci 0000:0b:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=none
[  129.113388] vfio-pci 0000:0b:00.0: enabling device (0000 -> 0003)
[  129.113644] vfio-pci 0000:0b:00.0: vfio_ecap_init: hiding ecap 0x19@0x270
[  129.113650] vfio-pci 0000:0b:00.0: vfio_ecap_init: hiding ecap 0x1b@0x2d0
[  226.040280] vfio-pci 0000:0b:00.0: vfio_ecap_init: hiding ecap 0x19@0x270
[  226.040287] vfio-pci 0000:0b:00.0: vfio_ecap_init: hiding ecap 0x1b@0x2d0
[ 1555.333394] vfio-pci 0000:0b:00.0: vfio_ecap_init: hiding ecap 0x19@0x270
[ 1555.333402] vfio-pci 0000:0b:00.0: vfio_ecap_init: hiding ecap 0x1b@0x2d0

lspci -nnk -d 1002:6810

0b:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X] [1002:6810]
        Subsystem: PC Partner Limited / Sapphire Technology Device [174b:e271]
        Kernel driver in use: vfio-pci
        Kernel modules: radeon, amdgpu

lspci -nnk -d 1002:aab0

0b:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000 Series] [1002:aab0]
        Subsystem: PC Partner Limited / Sapphire Technology Device [174b:aab0]
        Kernel driver in use: vfio-pci
        Kernel modules: snd_hda_intel

I installed windows 10 on the VM and everything went smoothly. But when I got to the point of adding the video card and booting, The monitor that's plugged to the VM doesn't go out of hibernation state and on the VM window I just get a black screen where its trying to boot.

Any thoughts?

As a sidenote: When I try to set the CPU to "host-passthrough", it instantly crashes the VM and tries to send me to recovery but crash-loops

Thanks before hand.

Last edited by aamm19 (2021-02-02 01:15:41)

Offline

Board footer

Powered by FluxBB