TRX40 AMD USB controllers question

fabiosun

New Member
Mar 22, 2020
22
3
3
I'd like to find the right words to express my question
I would like to understand the relationship if there is between the various USB controllers that I can find with the command from shell: lspci -nnk
04:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Starship USB 3.0 Host Controller [1022:148c]
Subsystem: Micro-Star International Co., Ltd. [MSI] Starship USB 3.0 Host Controller [1462:7c60]
23:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Starship USB 3.0 Host Controller [1022:148c]
Subsystem: Micro-Star International Co., Ltd. [MSI] Starship USB 3.0 Host Controller [1462:7c60]
Kernel driver in use: vfio-pci
Kernel modules: xhci_pci
23:00.4 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller [1022:1487]
Subsystem: Micro-Star International Co., Ltd. [MSI] Starship/Matisse HD Audio Controller [1462:cb60]
Kernel driver in use: vfio-pci
46:00.1 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]
Subsystem: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:1486]
Kernel driver in use: vfio-pci
Kernel modules: xhci_pci
46:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]
Subsystem: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:148c]
Kernel driver in use: vfio-pci
Kernel modules: xhci_pci
and this Qemu configuration file:
[device "ehci"]
driver = "ich9-usb-ehci1"
multifunction = "on"
bus = "pcie.0"
addr = "1d.7"

[device "uhci-1"]
driver = "ich9-usb-uhci1"
multifunction = "on"
bus = "pcie.0"
addr = "1d.0"
masterbus = "ehci.0"
firstport = "0"

[device "uhci-2"]
driver = "ich9-usb-uhci2"
multifunction = "on"
bus = "pcie.0"
addr = "1d.1"
masterbus = "ehci.0"
firstport = "2"

[device "uhci-3"]
driver = "ich9-usb-uhci3"
multifunction = "on"
bus = "pcie.0"
addr = "1d.2"
masterbus = "ehci.0"
firstport = "4"

[device "ehci-2"]
driver = "ich9-usb-ehci2"
multifunction = "on"
bus = "pcie.0"
addr = "1a.7"

[device "uhci-4"]
driver = "ich9-usb-uhci4"
multifunction = "on"
bus = "pcie.0"
addr = "1a.0"
masterbus = "ehci-2.0"
firstport = "0"

[device "uhci-5"]
driver = "ich9-usb-uhci5"
multifunction = "on"
bus = "pcie.0"
addr = "1a.1"
masterbus = "ehci-2.0"
firstport = "2"
[device "uhci-6"]
driver = "ich9-usb-uhci6"
multifunction = "on"
bus = "pcie.0"
addr = "1a.2"
masterbus = "ehci-2.0"
firstport = "4"

# FIXME: Remove this audio0 device at the next possible time
# see: https://pve.proxmox.com/pipermail/pve-devel/2019-July/038417.html
# https://pve.proxmox.com/pipermail/pve-devel/2019-July/038428.html
[device "audio0"]
driver = "ich9-intel-hda"
bus = "pcie.0"
addr = "1b.0"


[device "ich9-pcie-port-1"]
driver = "pcie-root-port"
x-speed = "16"
x-width = "32"
multifunction = "on"
bus = "pcie.0"
addr = "1c.0"
port = "1"
chassis = "1"

[device "ich9-pcie-port-2"]
driver = "pcie-root-port"
x-speed = "16"
x-width = "32"
multifunction = "on"
bus = "pcie.0"
addr = "1c.1"
port = "2"
chassis = "2"

[device "ich9-pcie-port-3"]
driver = "pcie-root-port"
x-speed = "16"
x-width = "32"
multifunction = "on"
bus = "pcie.0"
addr = "1c.2"
port = "3"
chassis = "3"

[device "ich9-pcie-port-4"]
driver = "pcie-root-port"
x-speed = "16"
x-width = "32"
multifunction = "on"
bus = "pcie.0"
addr = "1c.3"
port = "4"
chassis = "4"

##
# Example PCIe switch with two downstream ports
#
#[device "pcie-switch-upstream-port-1"]
# driver = "x3130-upstream"
# bus = "ich9-pcie-port-4"
# addr = "00.0"
#
#[device "pcie-switch-downstream-port-1-1"]
# driver = "xio3130-downstream"
# multifunction = "on"
# bus = "pcie-switch-upstream-port-1"
# addr = "00.0"
# port = "1"
# chassis = "5"
#
#[device "pcie-switch-downstream-port-1-2"]
# driver = "xio3130-downstream"
# multifunction = "on"
# bus = "pcie-switch-upstream-port-1"
# addr = "00.1"
# port = "1"
# chassis = "6"



[device "pcidmi"]
driver = "i82801b11-bridge"
bus = "pcie.0"
addr = "1e.0"

[device "pci.0"]
driver = "pci-bridge"
bus = "pcidmi"
addr = "1.0"
chassis_nr = "1"

[device "pci.1"]
driver = "pci-bridge"
bus = "pcidmi"
addr = "2.0"
chassis_nr = "2"

[device "pci.2"]
driver = "pci-bridge"
bus = "pcidmi"
addr = "3.0"
chassis_nr = "3"

[device "pci.3"]
driver = "pci-bridge"
bus = "pcidmi"
addr = "4.0"
chassis_nr = "4"
in practice, it seems to me that the USB controller that manages all the USBs present on the motherboard is the:
46:00 23:00.3 04:00.3
divided into 46: 00.1 and 46: 00.3, 23:00.3,04:00.3

the other USB controllers visible in the previous spoiler don't seem to bring new USB to my system.

Another aspect that I would like to understand is this:
Because by completely switching (passthrough)the two USB controllers 46: 00.1 and 46: 00.3 it is no longer possible to individually switch(pass) the USB devices connected through the Web interface and the corresponding Hardware / add / USB Device option.
Only by passing the controllers above in this space I no longer see any USB device (they are not seen in the drop down menu, while they are there if I do not pass the controller)
Are the virtual usb devices inside pve-q35-4.0.cfg set to have compatibility with older systems?
Is there a wiki to be able to understand and customize those voices (always if it does not damage the excellent functionality of Proxmox)

Thanks in advance for your clarifications
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!