Problem with 4x USB controller PCIE cards seems to be not correctly installed.
Situation: We want to use USB Vision cameras with USB adapter cards, providing as much bandwidth as possible. So we tried two different card types: ASMedia xy and Renesas uPD720202, where market is dominated by ASMedia and it was really hard to get a few of the Renesas cards.
The problem: The ASMedia Card is partly working. Usb devices like external SSD drives are usable (with high transferrates), but when using a camera, it stops after a few frames with some DMA error. The camera uses a BULK mode. Googeling for some hours shows, that ASMedia chip seems to have some firmware bugs or whatever, so we dropped the idea of using that card. The ASMedia did work on no tested PC in combination with the camera).
Trying the Card with Renesas chips, it is working perfectly on a ThinkCentre pc but not on the target hardware, a Supermicro Server. Both are using the same OS (Ubuntu 18.04, Kernel 5.4.0-97-generic). The Server has much more RAM, GPUs, etc.
Here's the link to the ThinkCentre where it's working: https://linux-hardware.org/?probe=c945332cad
Here's the link to the Server (not working): https://linux-hardware.org/?probe=f0c1c16098
We tried a lot of stuff in the wild (from random google hits where problems with the renesas card were solved), like autosuspend off, kernel updates, different Ubuntu versions etc.. Nothing helped, so I compared the dmesg of both systems.
The only real difference I could spot a missing line during initialization (?) of the card. Please ignore the fact, that the ThinkCentre is showing 4x the uPD720202 controller but the server only 3x. My colleague says it showed 4x in each other run, but unfortunately I now only have the 3x log.
Here's the difference I could spot:
In the ThinkCentre dmesg there is this block:
[ 0.268577] pci_bus 0000:03: resource 0 [io 0x2000-0x2fff]
[ 0.268578] pci_bus 0000:03: resource 1 [mem 0xdf300000-0xdf3fffff]
[ 0.268578] pci_bus 0000:03: resource 2 [mem 0xd0000000-0xd01fffff 64bit pref]
[ 0.268579] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff]
[ 0.268580] pci_bus 0000:04: resource 1 [mem 0xdf200000-0xdf2fffff]
[ 0.268580] pci_bus 0000:04: resource 2 [mem 0xd0200000-0xd03fffff 64bit pref]
[ 0.268581] pci_bus 0000:05: resource 0 [io 0x4000-0x4fff]
[ 0.268582] pci_bus 0000:05: resource 1 [mem 0xdf100000-0xdf1fffff]
[ 0.268582] pci_bus 0000:05: resource 2 [mem 0xd0400000-0xd05fffff 64bit pref]
[ 0.268583] pci_bus 0000:06: resource 0 [io 0x5000-0x5fff]
[ 0.268584] pci_bus 0000:06: resource 1 [mem 0xdf000000-0xdf0fffff]
[ 0.268584] pci_bus 0000:06: resource 2 [mem 0xd0600000-0xd07fffff 64bit pref]
while on the server I see this block:
[ 10.247535] pci_bus 0000:83: resource 1 [mem 0xd3600000-0xd36fffff]
[ 10.247538] pci_bus 0000:83: resource 2 [mem 0x390000000000-0x3900001fffff 64bit pref]
[ 10.247540] pci_bus 0000:84: resource 1 [mem 0xd3500000-0xd35fffff]
[ 10.247542] pci_bus 0000:84: resource 2 [mem 0x390000200000-0x3900003fffff 64bit pref]
[ 10.247545] pci_bus 0000:85: resource 1 [mem 0xd3400000-0xd34fffff]
[ 10.247547] pci_bus 0000:85: resource 2 [mem 0x390000400000-0x3900005fffff 64bit pref]
[ 10.247550] pci_bus 0000:86: resource 1 [mem 0xd3300000-0xd33fffff]
[ 10.247552] pci_bus 0000:86: resource 2 [mem 0x390000600000-0x3900007fffff 64bit pref]
You can see that there is an io line for each of the resources, which is missing in the server dmesg.
What is this line for? What are likely reasons for those lines missing? How to debug? Is this even the right hint to solve the problem?
Btw: The cameras are working perfectly on any of the internal/native USB controllers of that server.
Thanks for any help/idea.
This is a duplicate post of: