Trying to assign GPU to a Win 10 VM


slizz

Recommended Posts

I keep getting this error when trying to start the VM:

 

internal error: early end of file from monitor: possible problem:

2015-11-08T02:08:42.633996Z qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: error, group 1 is not viable, please ensure all devices within the iommu_group are bound to their vfio bus driver.

2015-11-08T02:08:42.634022Z qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: vfio: failed to get group 1

2015-11-08T02:08:42.634029Z qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device initialization failed

2015-11-08T02:08:42.634036Z qemu-system-x86_64: -device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on: Device 'vfio-pci' could not be initialized

 

Any assistance would be greatly appreciated.

 

 

 

 

Link to comment

Here are the PCI devices in System/Tools

 

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v3 Processor DRAM Controller (rev 06)

00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller (rev 06)

00:01.1 PCI bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller (rev 06)

00:14.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI (rev 05)

00:1a.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2 (rev 05)

00:1c.0 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 (rev d5)

00:1c.2 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 (rev d5)

00:1c.3 PCI bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 (rev d5)

00:1d.0 USB controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1 (rev 05)

00:1f.0 ISA bridge: Intel Corporation C222 Series Chipset Family Server Essential SKU LPC Controller (rev 05)

00:1f.2 SATA controller: Intel Corporation 8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (rev 05)

00:1f.3 SMBus: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller (rev 05)

00:1f.6 Signal processing controller: Intel Corporation 8 Series Chipset Family Thermal Management Controller (rev 05)

01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]

01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT HDMI Audio [Radeon HD 7970 Series]

02:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2308 PCI-Express Fusion-MPT SAS-2 (rev 05)

03:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 03)

04:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 30)

05:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

06:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)

Link to comment

Under Tools -> System Devices, please copy and paste your IOMMU Groups section.  The error you are receiving is because the GPU you want to assign to the VM is in an IOMMU group with another PCI device on your system (not necessarily an add-on card).  This could be another GPU, the SATA controller, an ethernet controller, or something else.  Your choices at this point are:

 

1)  Try reseating the GPU in another PCI slot and see if that works (try each slot you can).

2)  Purchase hardware that has ACS support on the processor (currently Intel Extreme Edition desktop CPUs and E5 Xeon CPUs or better).

3)  Turn on the PCIe ACS Override setting under Settings -> VM Manager and reboot your system.

 

The 3rd option is the "easiest" option, but it comes with the potential risk of peer-to-peer DMA occurring between your GPU and another device in the IOMMU group.  Search the forum and look through the wiki and you'll find numerous posts/references to this PCIe ACS Override setting and what it does.  In short...it's use at your own risk, but many have found it to be their saving grace to getting this to work.

Link to comment

I only have one PCI slot that will support it.  I'm currently using am e3-1246v3.

 

/sys/kernel/iommu_groups/0/devices/0000:00:00.0

/sys/kernel/iommu_groups/1/devices/0000:00:01.0

/sys/kernel/iommu_groups/1/devices/0000:00:01.1

/sys/kernel/iommu_groups/1/devices/0000:01:00.0

/sys/kernel/iommu_groups/1/devices/0000:01:00.1

/sys/kernel/iommu_groups/1/devices/0000:02:00.0

/sys/kernel/iommu_groups/2/devices/0000:00:14.0

/sys/kernel/iommu_groups/3/devices/0000:00:1a.0

/sys/kernel/iommu_groups/4/devices/0000:00:1c.0

/sys/kernel/iommu_groups/5/devices/0000:00:1c.2

/sys/kernel/iommu_groups/6/devices/0000:00:1c.3

/sys/kernel/iommu_groups/7/devices/0000:00:1d.0

/sys/kernel/iommu_groups/8/devices/0000:00:1f.0

/sys/kernel/iommu_groups/8/devices/0000:00:1f.2

/sys/kernel/iommu_groups/8/devices/0000:00:1f.3

/sys/kernel/iommu_groups/8/devices/0000:00:1f.6

/sys/kernel/iommu_groups/9/devices/0000:03:00.0

/sys/kernel/iommu_groups/9/devices/0000:04:00.0

/sys/kernel/iommu_groups/10/devices/0000:05:00.0

/sys/kernel/iommu_groups/11/devices/0000:06:00.0

 

I don't fully understand the risks with ACS override so I am treading lightly.

Link to comment

I only have one PCI slot that will support it.  I'm currently using am e3-1246v3.

 

/sys/kernel/iommu_groups/0/devices/0000:00:00.0

/sys/kernel/iommu_groups/1/devices/0000:00:01.0

/sys/kernel/iommu_groups/1/devices/0000:00:01.1

/sys/kernel/iommu_groups/1/devices/0000:01:00.0

/sys/kernel/iommu_groups/1/devices/0000:01:00.1

/sys/kernel/iommu_groups/1/devices/0000:02:00.0

/sys/kernel/iommu_groups/2/devices/0000:00:14.0

/sys/kernel/iommu_groups/3/devices/0000:00:1a.0

/sys/kernel/iommu_groups/4/devices/0000:00:1c.0

/sys/kernel/iommu_groups/5/devices/0000:00:1c.2

/sys/kernel/iommu_groups/6/devices/0000:00:1c.3

/sys/kernel/iommu_groups/7/devices/0000:00:1d.0

/sys/kernel/iommu_groups/8/devices/0000:00:1f.0

/sys/kernel/iommu_groups/8/devices/0000:00:1f.2

/sys/kernel/iommu_groups/8/devices/0000:00:1f.3

/sys/kernel/iommu_groups/8/devices/0000:00:1f.6

/sys/kernel/iommu_groups/9/devices/0000:03:00.0

/sys/kernel/iommu_groups/9/devices/0000:04:00.0

/sys/kernel/iommu_groups/10/devices/0000:05:00.0

/sys/kernel/iommu_groups/11/devices/0000:06:00.0

 

I don't fully understand the risks with ACS override so I am treading lightly.

 

In short, your GPU is grouped with your storage controller (the LSI controller).  Because you can't move the graphics card to another slot, your only option is to either purchase different hardware or enable the PCIe ACS Override.  The risk to using the override here is accidental/unintentional peer-to-peer DMA with your storage controller.  There is nothing in hardware that would prevent this from happening (that's what the ACS feature does on chipsets that support it).  If the devices are "well-behaved", then theory goes this shouldn't ever happen.  I can also tell you there are multiple folks (including myself) that utilize this setting in that exact same situation (with the storage controller).  You just have to decide for yourself if the risk is worth it or not.  The peer-to-peer DMA could cause silent data corruption in your case because it could go to the storage controller, but if you have good backups of your data to begin with, then maybe it's not so bad.  I don't think I've yet heard of anyone finding corrupted data as a result of using this setting, but be warned that it is theoretically possible.

Link to comment
  • 5 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.