some X520 NICs cause CPU USB to stop working once kernel loaded

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

equinox

New Member
Feb 17, 2024
3
1
3
Hello everyone, my first post here after years of reading the main site :) I have encountered a truly baffling issue on my new server setup:

The setup: I have two "virtually identical" servers, each with a Supermicro H12SSL-I motherboard, AMD Epyc 7302P, 128GB SKHynix RAM, and crucially, two X520-DA2 NICs. The CPUs are at the same microcode patch level, all motherboard firmware (CPLD, BIOS and IPMI) are up to date and consequently in parity. In total, I own 3 X520-DA2 adapters, one Dell OEM, two Intel. From different vendors and bought at different times.

The issue: when booting either of the two machines, two out of the three X520-DA2 adapters (the Dell and one of the Intels) consistently cause the CPU direct-attached USB 3.0 ports 0 and 1 to stop working after booting into an operating system. It is notable that both of these USB3.0 ports work just fine in the BIOS / EFI shell / GRUB, and only stop working once a kernel is fully booted and running (I have tried both Ubuntu and Debian). All other USB 3.0 ports work fine throughout the duration of the boot process, all the way into interacting with the machine from userland.

My current guess: something about PCIe address space perhaps? I am thinking perhaps the other two cards have an older (or different, somehow incompatible) firmware that perhaps causes system peripherals to fail to initialize. I have monitored lsusb, lspci and dmesg (grepping for USB events, but not finding anything notable, like an initialization failure) with both the working X520-DA2 and the two problematic cards. With the problematic cards, significantly less USB peripherals appear including some that I believe the IPMI uses to talk to the system for OOB management (I haven't gotten a chance to confirm this, in the many hours i have had so far been able to dedicate to power cycling these machines, and waiting through the lengthy Supermicro initialization)

The question: Any ideas what is causing this? TL;DR: one of 3 X520s causes CPU usb to stop working on mutliple systems when installed

Any ideas much appreciated!
 

equinox

New Member
Feb 17, 2024
3
1
3
Something small that I could use help with as well, related to this, is how best to interact with / program the firmware on such cards. I have seen much online about an intel tool (that seems to only run on windows?) but also people talking about using ethtool or other such "userland" utilities for programming the firmware on these X520 cards. If anyone could share what the consensus on modifying and updating firmware on the X520 is, that would be much appreciated :)
 

equinox

New Member
Feb 17, 2024
3
1
3
Are you running linux?
Run lspci and post output.

(this is very odd)
Well, sparing more back and forth, I fixed the issue! I first began by downloading version 29.0 of the intel preboot utility. After compiling the included driver (which required gcc-12, gcc and make) and running the utility (which i did on a live Ubuntu 20.04 without issue), I used it to disable 64-bit BAR addressing with ./bootutil -64d -NIC=1 and -NIC=2 respectively. Upon rebooting, all USB ports work fine, and my NIC still performs as expected.

The tool can be found here:

I would note that my working card had a much older firmware with entirely different "flash firmware options": 2.4.13, vs my nonworking card which was 8.2.31. I tried saving and copying the old firmware from the good card to the bad (new) card, but the tool declared that the new card's EEPROM was too small. Don't know if this was a false error however
 
  • Like
Reactions: UhClem