Skip to contentSkip to conversation

Vga passthrough to KVM Guest issues

DISCUSSION Max Schettler 3 participants 6 messages Oct 16, 2013 – Nov 1, 2013 KVM

lore
Share & tools
lore
#0 lore raw

Hi guys,

Im trying to set up vga passthrough. I use the latest mainline kernel (3.12rc5) and patched qemu (1.6.50). When i try to start a VM using this command:

qemu-system-x86_64 -enable-kvm -M q35 -m 1024 -cpu qemu64 -bios /usr/share/qemu/bios.bin -vga none
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 -device vfio-pci,host=06:00.0,bus=root.1,multifunction=on,x-vga=on -device vfio-pci,host=06:00.1,bus=root.1

The screen attached to the passthroughed GPU turns on but does not show any output.
Also I get some warnings from amd_iommu and my kernel messages are full of AMD-Vi messages:
"AMD-Vi: Completion-Wait loop timed out" and
"AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=06:00.0 address=0x0000000438544b90"

If i dont stop the qemu process this eventually forces me to reboot since the host gets unusable.

I uploaded the whole dmesg output, if its of any help here:
http://pastebin.com/ki13dqEd

My hardware is an AMD FX-8350 with an Gigabyte 970A-UD3 and a Gigabyte 7870OC.

Any help is much appreciated, thanks in advance!

#1 lore raw
Quoted 24 lines · Max Schettler

Hi guys,

Im trying to set up vga passthrough. I use the latest mainline kernel (3.12rc5) and patched qemu (1.6.50). When i try to start a VM using this command:

qemu-system-x86_64 -enable-kvm -M q35 -m 1024 -cpu qemu64

(quoted diff) +0 -2
-bios /usr/share/qemu/bios.bin -vga none 
-device

ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1

(quoted diff) +0 -2
-device vfio-pci,host=06:00.0,bus=root.1,multifunction=on,x-vga=on
-device vfio-pci,host=06:00.1,bus=root.1

The screen attached to the passthroughed GPU turns on but does not show any output.
Also I get some warnings from amd_iommu and my kernel messages are full of AMD-Vi messages:
"AMD-Vi: Completion-Wait loop timed out" and
"AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=06:00.0 address=0x0000000438544b90"

If i dont stop the qemu process this eventually forces me to reboot since the host gets unusable.

Quoted 7 lines

I uploaded the whole dmesg output, if its of any help here:
http://pastebin.com/ki13dqEd

My hardware is an AMD FX-8350 with an Gigabyte 970A-UD3 and a Gigabyte 7870OC.

Any help is much appreciated, thanks in advance!

You seem to get the AMD-Vi errors even before using VFIO, so I'd suspect there's something wrong with the setup from the beginning. Copying Joerg in case he has any ideas. You can also try the disable_hugepages=1 module option for vfio_iommu_type1 (can also be set via sysfs), but I'm not sure it's related. Can you assign other devices installed in the same slot? Thanks,

Alex

#2 lore raw

Hey Max,

Quoted 25 lines · Alex Williamson
Quoted 24 lines · Max Schettler

Hi guys,

Im trying to set up vga passthrough. I use the latest mainline kernel (3.12rc5) and patched qemu (1.6.50). When i try to start a VM using this command:

qemu-system-x86_64 -enable-kvm -M q35 -m 1024 -cpu qemu64

(quoted diff) +0 -2
-bios /usr/share/qemu/bios.bin -vga none 
-device

ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1

(quoted diff) +0 -2
-device vfio-pci,host=06:00.0,bus=root.1,multifunction=on,x-vga=on
-device vfio-pci,host=06:00.1,bus=root.1

The screen attached to the passthroughed GPU turns on but does not show any output.
Also I get some warnings from amd_iommu and my kernel messages are full of AMD-Vi messages:
"AMD-Vi: Completion-Wait loop timed out" and
"AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=06:00.0 address=0x0000000438544b90"

If i dont stop the qemu process this eventually forces me to reboot since the host gets unusable.

Quoted 7 lines
Quoted 7 lines

I uploaded the whole dmesg output, if its of any help here:
http://pastebin.com/ki13dqEd

My hardware is an AMD FX-8350 with an Gigabyte 970A-UD3 and a Gigabyte 7870OC.

Any help is much appreciated, thanks in advance!

That's interesting, what GPU is it that you are trying to pass through to the guest? It seems to be an ATS capable device. Either there is a problem in the AMD IOMMU driver with handling ATS or there is a problem with the hardware and ATS should not be enabled there. Either way, the fix/workaround has to be in the AMD IOMMU driver.

Joerg

#3 lore raw

Hey Joerg,

Am Freitag, den 01.11.2013, 16:09 +0100 schrieb Joerg Roedel:

Quoted 43 lines

Hey Max,

Quoted 25 lines · Alex Williamson
Quoted 24 lines · Max Schettler

Hi guys,

Im trying to set up vga passthrough. I use the latest mainline kernel (3.12rc5) and patched qemu (1.6.50). When i try to start a VM using this command:

qemu-system-x86_64 -enable-kvm -M q35 -m 1024 -cpu qemu64

(quoted diff) +0 -2
-bios /usr/share/qemu/bios.bin -vga none 
-device

ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1

(quoted diff) +0 -2
-device vfio-pci,host=06:00.0,bus=root.1,multifunction=on,x-vga=on
-device vfio-pci,host=06:00.1,bus=root.1

The screen attached to the passthroughed GPU turns on but does not show any output.
Also I get some warnings from amd_iommu and my kernel messages are full of AMD-Vi messages:
"AMD-Vi: Completion-Wait loop timed out" and
"AMD-Vi: Event logged [IOTLB_INV_TIMEOUT device=06:00.0 address=0x0000000438544b90"

If i dont stop the qemu process this eventually forces me to reboot since the host gets unusable.

Quoted 7 lines
Quoted 7 lines

I uploaded the whole dmesg output, if its of any help here:
http://pastebin.com/ki13dqEd

My hardware is an AMD FX-8350 with an Gigabyte 970A-UD3 and a Gigabyte 7870OC.

Any help is much appreciated, thanks in advance!

That's interesting, what GPU is it that you are trying to pass through to the guest? It seems to be an ATS capable device. Either there is a problem in the AMD IOMMU driver with handling ATS or there is a problem with the hardware and ATS should not be enabled there. Either way, the fix/workaround has to be in the AMD IOMMU driver.

Quoted 1 line

Joerg

I fixed this issue in the meanwhile by switching to another Mainboard, so I guess it was at least somehow associated with the Hardware.

The first Setup was this one:
AMD FX-8350
Gigabyte 970A-UD3
Gigabyte 7870GHz Edition
Sapphire 6450

I switched to an Asrock 990FX Extreme3.

#4 lore raw
Quoted 10 lines · Max Schettler

I fixed this issue in the meanwhile by switching to another Mainboard, so I guess it was at least somehow associated with the Hardware.

The first Setup was this one:
AMD FX-8350
Gigabyte 970A-UD3
Gigabyte 7870GHz Edition
Sapphire 6450

I switched to an Asrock 990FX Extreme3.

Hmm, in this case it might also have been a BIOS issue. The Gigabyte BIOS might have configured the IOMMU in a wrong way causing those errors. Have you tried with the latest BIOS on the Gigabyte Mainboard?

Joerg

#5 lore raw

Am Freitag, den 01.11.2013, 17:45 +0100 schrieb Joerg Roedel:

Quoted 10 lines · Max Schettler
Quoted 9 lines

I fixed this issue in the meanwhile by switching to another Mainboard, so I guess it was at least somehow associated with the Hardware.

The first Setup was this one:
AMD FX-8350
Gigabyte 970A-UD3
Gigabyte 7870GHz Edition
Sapphire 6450

Quoted 8 lines
Quoted 1 line

I switched to an Asrock 990FX Extreme3.

Hmm, in this case it might also have been a BIOS issue. The Gigabyte BIOS might have configured the IOMMU in a wrong way causing those errors. Have you tried with the latest BIOS on the Gigabyte Mainboard?

Joerg

I installed the latest BIOS when i tried to get it working.

Max