XCP PCI passthrough + USB passthrough does not work together

Hello community!

First i want to tell you i already ask the same in the XCP-np forum, but i didn’t get an answer!
I am a complete beginner at Xen/XCP-NG, so please be gentle to me :slightly_smiling_face: If you need me to provide logs, etc please give me the code to bring those up. Thank you to everyone in advance!

What do i have:

  • XCP Version 8.1 2020-03-30
  • Motherboard gigabyte MZ32-ar0
  • Processor AMD Epyc 4702p - 24 cores
  • 1x AMD R7 240
  • 1x AMD Radeon Pro WX3200
  • RAM 32 GB

I need this PC for my smart home house because i have 5 displays installed in the house to be able to control the smart home server + camera system via touch displays! There is one more big System called “Screen-wall” which are 4 monitors in 2x2 matrix. So in total i need 5 small graphic cards and one big graphic card for the 4 monitor Screen-wall!
The idea was 5 displays (5 graphic cards, at the moment only one is installed for the test scenario --> AMD R7 240) and one AMD Radeon Pro WX3200 for the screen-wall. Each one has one Touch screen via USB driver!
The 5 displays should run each with Debian and the Screen-wall with one windows 10!

What is the Problem:
The XCP tool is very easy to use it. I am able to add the graphic cards to the VM and start the machine, doesn’t matter if it is Windows or Debian!
I am also able to start the machine only with the USB passthrough and the device is available.

But if i use both together in one VM, the VM crashes during startup. PCI + USB together does not work!

Windows 10:

  • R7 Added or WX3200 added
  • USB Touch screen added
  • VM Start
  • Virtual BIOS complete successfully (also tested with virtual UEFI)
  • Windows starting screen with the loading circle a very short time, about 3 sec.
  • Crashes with failure:

“Failed”,“Starting VM ‘InfoScreen_Template’
Internal error: xenopsd internal error: Call to usb reset failed: Forkhelpers.Spawn_internal_error(“usage: usb_reset.py attach [-h] -d DOMID -p PID [-r RESET_ONLY] device\nusb_reset.py attach: error: argument -r: expected one argument\n”, “”, _)
Time: 00:00:03”,“localhost.localdomain”,“Sep 21, 2020 9:38 PM”

Debian 10:

  • R7 Added or WX3200 added
  • USB Touch screen added
  • VM Start
  • Virtual BIOS complete successfully
  • Bootloader is displayed and linux is starting
  • last which is printed “Loading initial ram disk”
  • Crashes with same failure:

“Failed”,“Starting VM ‘InfoScreen_Template’
Internal error: xenopsd internal error: Call to usb reset failed: Forkhelpers.Spawn_internal_error(“usage: usb_reset.py attach [-h] -d DOMID -p PID [-r RESET_ONLY] device\nusb_reset.py attach: error: argument -r: expected one argument\n”, “”, _)
Time: 00:00:03”,“localhost.localdomain”,“Sep 21, 2020 9:38 PM”

I have no idea why this functions are not working together!

Please help me!
Tell me wich log files i should provide!

Best regards
Kevin

Seems like I’m facing the exact same issue (using XCP-ng 8.2)

I’m trying to create a HTPC (Home Theather PC) vm, passing through via USB a bluetooth dongle (for keyboard/mice) and an IR receiver (for TV remote), which I’ve been able to do with success.

Attempting to pass an ATI Cape Verde PRO R7 250e breaks the bootup of the VM, claiming a failure to invoke USB reset.

Passing the PCI peripheral on it’s own seems to cause no issue. It’s really the combination of both USB and PCI that causes my issues.

@kevstone122 Did you ever figure this out?

For anyone who may stumble upon this, the issue has been reported at these locations:

Github, xcp-ng/xcp/issues/511
Github, xapi-project/xen-api/issues/4491
(circumventing inhability to post links)