PCI passthrough + USB passthrough does not work together


  • Hello community!

    I am a complete beginner at Xen/XCP-NG, so please be gentle to me 🙂 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


  • @kevstone122 If you don't have anything else plugged into the USB controller, you can try to passthrough the whole USB controller via PCI passthrough.


  • @tony: Thank you for your answer. I don't have an USB PCI card because i need all the PCI slots for the graphic cards. So for the test i just have the USB Touch screen cable directly to the USB Slots on the motherboard connected!


  • @kevstone122 some on-board USB controller use PCIe as the interconnect so you can still use PCI passthrough with on-board controller, depends on the motherboard. If your USB controller is listed when doing lspci then you have a good chance.


  • sorry for my late reply!
    Thanks for your good tips, but the onboard USB i need for the mouse and keyboard for the XCP and there are only 3 USB slots.
    Together for all touch screens i need minimum 6 USB Ports...
    We still try to find the problem!


XCP-ng Pro Support

XCP-ng Pro Support