Environment
Problem Statement
ESXi fails to list the Intel X540 (ixgben) as configurable network ports via a Thunderbolt3 to Thunderbolt2 Apple Adapter.
- On ESXi, the Intel X540 PCI card does get detected and is properly listed under Hardware -> PCI Devices:

[root@esxinuc:~] lspci | grep X540
0000:40:00.0 Ethernet controller: Intel(R) Ethernet Controller 10 Gigabit X540-AT2
0000:40:00.1 Ethernet controller: Intel(R) Ethernet Controller 10 Gigabit X540-AT2
- You can clearly see that the ESXi detects the PCI card; however, there seems to be some addressing issue on the PCI side of things; as it fails to list the (2) available network ports.
- In addition, I have an Apple Thunderbolt to Gigabit Ethernet Adapter (Broadcom Corporation NetXtreme BCM57762) connected via the same Thunderbolt chain and the network port get detected with the tg3 inbox driver. It appears that ESXi fails to address the Intel X540 with the ixgben driver when the TB3 to TB2 adapter is the intermediary between the host and card.
[root@esxinuc:~] esxcli network nic list
Name PCI Device Driver Admin Status Link Status Speed Duplex MAC Address MTU Description
------ ------------ ------ ------------ ----------- ----- ------ ----------------- ---- --------------------------------------------------------
vmnic0 0000:00:1f.6 ne1000 Up Down 0 Half d4:5d:df:07:4f:59 1500 Intel Corporation Ethernet Connection (2) I219-V
vmnic1 0000:05:00.0 igbn Up Up 1000 Full d4:5d:df:07:4f:5a 1500 Intel Corporation I210 Gigabit Network Connection
vmnic2 0000:44:00.0 tg3 Up Down 0 Half 38:c9:86:22:e4:b0 1500 Broadcom Corporation NetXtreme BCM57762 Gigabit Ethernet
- The problem would have made more sense if the PCI card didn't get detected by ESXi; however, the fact that it is detected, ESXi should be able to assign the ixgben driver.
- The problem isn't the SANLink2 10GbE (Intel X540) but an MMIO addressing issue amongst the Thunderbolt bus translation to ESXi when using a TB3 to TB2 adapter; hence, the ixgben driver never gets assigned.
- Disclaimer – I understand that:
(A) the Intel NUC is not officially part of the HCL (many people in the community use NUCs for home labs)
(B) an Apple Thunderbolt3 to Thunderbolt2 adapter is not officially part of the HCL
- Please note that if I boot in Windows 10 with the same HW (Intel NUC) and physical configuration (SL2 via TB3 to TB2), the Intel X540 contained in the Promise SANLink2 10GbE via the Thunderbolt bus works perfectly fine:


- For those wondering if the Promise SANLink2 10GbE works natively using the ixgbe (ESXi 6.0) or the newer driver ixgben (ESXi 6.5, 6.7), when connecting the Promise SANLink2 10GbE to a Thunderbolt2 or Thunderbolt1 host running on ESXi, it works perfectly fine. ESXi automatically assigns the driver to the Intel Ethernet Controller X540.
ESXi 6.7 with SL2 connected to a TB1 MacBook Pro

- I've used the SL2 with multiple Thunderbolt1/2 based Macs that are running ESXi and they work great.
- Since I had (1) laying around, I thought I would test using the TB3 to TB2 adapter before looking for TB3 based 10GbE adapters; as the ones listed in Virtually Ghetto.
The vmkwarning.log outputs PCI MMIO limit exceeded warnings:
0:00:00:05.485 cpu0:2097152)WARNING: PCI: 452: 0000:40:00.0: Failed to add BAR[2] (IO f=0x1 0xa020-0xa040) - out of resources on parent: 0000:3f:03.0
0:00:00:05.485 cpu0:2097152)WARNING: PCI: 475: 0000:40:00.0: Failed to add BAR[2] (IO f=0x1 0xa020-0xa040) status: Limit exceeded
0:00:00:05.485 cpu0:2097152)WARNING: PCI: 221: IO (0xa000 - 0xa01f) out of range
0:00:00:05.485 cpu0:2097152)WARNING: PCI: 452: 0000:40:00.1: Failed to add BAR[2] (IO f=0x1 0xa000-0xa020) - out of resources on parent: 0000:3f:03.0
0:00:00:05.485 cpu0:2097152)WARNING: PCI: 475: 0000:40:00.1: Failed to add BAR[2] (IO f=0x1 0xa000-0xa020) status: Limit exceeded
0:00:00:05.496 cpu0:2097152)WARNING: PCI: 678: 0000:40:00.0: Unable to free BAR[2] (IO f=0x1 0xa020-0xa040): Limit exceeded
0:00:00:05.496 cpu0:2097152)WARNING: PCI: 678: 0000:40:00.0: Unable to free BAR[4] (MEM64 f=0xc 0x2fd0200000-0x2fd0204000): Limit exceeded
0:00:00:05.496 cpu0:2097152)WARNING: PCI: 678: 0000:40:00.1: Unable to free BAR[2] (IO f=0x1 0xa000-0xa020): Limit exceeded
0:00:00:05.496 cpu0:2097152)WARNING: PCI: 678: 0000:40:00.1: Unable to free BAR[4] (MEM64 f=0xc 0x2fd0600000-0x2fd0604000): Limit exceeded
[root@esxinuc:~] lspci | grep 0000:3f:03.0
0000:3f:03.0 PCI bridge: Intel Corporation DSL5520 Thunderbolt 2 Bridge [Falcon Ridge 4C 2013]
- TB2 Bridge via Apple TB3-to-TB2 Adapter (Parent)
0:00:00:05.496 cpu0:2097152)WARNING: PCI: 678: 0000:40:00.0: Unable to free BAR[4] (MEM64 f=0xc 0x2fd0200000-0x2fd0204000): Limit exceeded
0:00:00:05.496 cpu0:2097152)WARNING: PCI: 678: 0000:40:00.1: Unable to free BAR[2] (IO f=0x1 0xa000-0xa020): Limit exceeded
- Promise SANLink2 10GbE (Intel Ethernet Controller 10 Gigabit X540-AT2)
It appears that I'm experiencing a PCI MMIO issue with the adapter and verified this by reviewing Memory Addressing Limits for ESXi 5.1.x, 5.5.x 6.x and 7.0 (2087943)
I couldn't figure out a way to change this on the Intel NUC with the latest BIOS. :smileysad: