Configure ESXi to pass-through the X10SL7-F motherboard SATA controller

Status
Not open for further replies.

Spearfoot

He of the long foot
Moderator
Joined
May 13, 2015
Messages
2,478
By default, VMware ESXi 6.0 does not make the X10SL7-F motherboard's SATA controller available for VT-d passthrough. Because who in their right mind would do such a thing? :smile:

Well... I do! I've never used the motherboard's SATA controller; I boot from a Dell H200 HBA. Recently I wanted to add a single large disk to serve as a replication target for backup purposes. The motherboard's built-in LSI 2308 HBA is already fully populated. So my only option for giving FreeNAS access to the drive is to use the motherboard's SATA controller.

I found this post over at servethehome.com, which got me pointed in the right direction. It turns out that you can indeed configure ESXi to pass-through the SATA controller. The trick is to identify it correctly and add an entry to the /etc/vmware/passthru.map file.

TL;DR: add the following to /etc/vmware/passthru.map to pass-through the SATA controller on your X10SL7-F:
Code:
# Intel Lynx Point SATA AHCI controller
8086  8c02  d3d0  false
You will need to reboot the system for the change to take effect. Mark the device for passthrough in the vSphere client and reboot again. At that point you'll be able to assign the device to your FreeNAS VM and gain support for 6 additional SATA devices.

Here are the gory details:

Log on to the ESXi host and run the lspci command. This gives you a list of the PCI devices:
Code:
0000:00:00.0 Bridge: Intel Corporation Xeon E3-1200 v3 Processor DRAM Controller
0000:00:01.0 Bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x16 Controller [PCIe RP[0000:00:01.0]]
0000:00:01.1 Bridge: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller [PCIe RP[0000:00:01.1]]
0000:00:14.0 Serial bus controller: Intel Corporation 8 Series/C220 Series Chipset Family USB xHCI
0000:00:1a.0 Serial bus controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #2
0000:00:1c.0 Bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #1 [PCIe RP[0000:00:1c.0]]
0000:00:1c.2 Bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #3 [PCIe RP[0000:00:1c.2]]
0000:00:1c.3 Bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #4 [PCIe RP[0000:00:1c.3]]
0000:00:1c.4 Bridge: Intel Corporation 8 Series/C220 Series Chipset Family PCI Express Root Port #5 [PCIe RP[0000:00:1c.4]]
0000:00:1d.0 Serial bus controller: Intel Corporation 8 Series/C220 Series Chipset Family USB EHCI #1
0000:00:1f.0 Bridge: Intel Corporation C222 Series Chipset Family Server Essential SKU LPC Controller
0000:00:1f.2 Mass storage controller: Intel Corporation Lynx Point AHCI Controller [vmhba1]
0000:00:1f.3 Serial bus controller: Intel Corporation 8 Series/C220 Series Chipset Family SMBus Controller
0000:00:1f.6 Signal processing controller: Intel Corporation 8 Series Chipset Family Thermal Management Controller
0000:01:00.0 Network controller: Intel(R) 82599 10 Gigabit Dual Port Network Connection [vmnic2]
0000:02:00.0 Mass storage controller: LSI Logic / Symbios Logic LSI2308_1 [vmhba0]
0000:03:00.0 Bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge
0000:04:00.0 Display controller: ASPEED Technology, Inc. ASPEED Graphics Family
0000:05:00.0 Network controller: Intel Corporation I210 Gigabit Network Connection [vmnic0]
0000:06:00.0 Network controller: Intel Corporation I210 Gigabit Network Connection [vmnic1]
0000:07:00.0 Mass storage controller: LSI Logic / Symbios Logic Dell PERC H200 Adapter [vmhba2]

The SATA contoller is this gizmo: 0000:00:1f.2 Mass storage controller: Intel Corporation Lynx Point AHCI Controller [vmhba1]

Then run the lspci -n command, getting this output:
Code:
0000:00:00.0 Class 0600: 8086:0c08
0000:00:01.0 Class 0604: 8086:0c01 [PCIe RP[0000:00:01.0]]
0000:00:01.1 Class 0604: 8086:0c05 [PCIe RP[0000:00:01.1]]
0000:00:14.0 Class 0c03: 8086:8c31
0000:00:1a.0 Class 0c03: 8086:8c2d
0000:00:1c.0 Class 0604: 8086:8c10 [PCIe RP[0000:00:1c.0]]
0000:00:1c.2 Class 0604: 8086:8c14 [PCIe RP[0000:00:1c.2]]
0000:00:1c.3 Class 0604: 8086:8c16 [PCIe RP[0000:00:1c.3]]
0000:00:1c.4 Class 0604: 8086:8c18 [PCIe RP[0000:00:1c.4]]
0000:00:1d.0 Class 0c03: 8086:8c26
0000:00:1f.0 Class 0601: 8086:8c52
0000:00:1f.2 Class 0106: 8086:8c02 [vmhba1]
0000:00:1f.3 Class 0c05: 8086:8c22
0000:00:1f.6 Class 1180: 8086:8c24
0000:01:00.0 Class 0200: 8086:10fb [vmnic2]
0000:02:00.0 Class 0107: 1000:0086 [vmhba0]
0000:03:00.0 Class 0604: 1a03:1150
0000:04:00.0 Class 0300: 1a03:2000
0000:05:00.0 Class 0200: 8086:1533 [vmnic0]
0000:06:00.0 Class 0200: 8086:1533 [vmnic1]
0000:07:00.0 Class 0107: 1000:0072 [vmhba2]

We're interested in this line: 0000:00:1f.2 Class 0106: 8086:8c02 [vmhba1]. It gives us the 8086:8c02 address, which is what we need to add to /etc/vmware/passthru.map, like this:
Code:
# passthrough attributes for devices
# file format: vendor-id device-id resetMethod fptShareable
# vendor/device id: xxxx (in hex) (ffff can be used for wildchar match)
# reset methods: flr, d3d0, link, bridge, default
# fptShareable: true/default, false

# Intel 82598 10Gig cards can be reset with d3d0
8086  10b6  d3d0  default
8086  10c6  d3d0  default
8086  10c7  d3d0  default
8086  10c8  d3d0  default
8086  10dd  d3d0  default
# Broadcom 57710/57711/57712 10Gig cards are not shareable
14e4  164e  default  false
14e4  164f  default  false
14e4  1650  default  false
14e4  1662  link  false
# Qlogic 8Gb FC card can not be shared
1077  2532  default  false
# LSILogic 1068 based SAS controllers
1000  0056  d3d0  default   
1000  0058  d3d0  default
# NVIDIA
10de  ffff  bridge  false
# Intel Lynx Point SATA AHCI controller
8086  8c02  d3d0  false
 

Dice

Wizard
Joined
Dec 11, 2015
Messages
1,410
cool!
 

Zofoor

Patron
Joined
Aug 16, 2016
Messages
219
That's really nice, thanks! I'll try that soon.

Sent from my Nexus 5 using Tapatalk
 

golfleep

Dabbler
Joined
Nov 3, 2016
Messages
21
That's pretty cool! I ran into the same issues trying to passthrough the intel SATA controller on my x11ssl-cf, and while I have not gotten around to actually adding my controller to the passthrough.map, your modifications seem to be similar to those needed on the Sunrise Point AHCI controller, which I found on a post in the VMware forums here. Nice to have confirmation that similar modifications allow the onboard SATA to be configured for passthrough

Code:
# INTEL Sunrise Point-H AHCI Controller
8086  a102  d3d0  false
 

averyfreeman

Contributor
Joined
Feb 8, 2015
Messages
164
OK, I'm trying this ... Supermicro X10SRL-F 2011-3 board, god damn TWO SATA CONTROLLERS, and neither one shows up *(!!)*. Have already populated 5 out of 7 PCIe slots, don't have room to spare...

ssh-ed to ESXi host... so far I've run:

Code:
[root@robotboy:~] lspci -p | grep hba
0000:00:11.4 8086:8d62 15d9:0832  11/   /0x30 A V vmw_ahci	 vmhba0
0000:00:14.0 8086:8d31 15d9:0832   4/   /0x31 D V vmkusb	   vmhba32
0000:00:1f.2 8086:8d02 15d9:0832  11/   /0x33 A V vmw_ahci	 vmhba1
0000:02:00.0 1c5c:1285 1c5c:0000  11/   /	 A V nvme		 vmhba3
0000:05:00.0 144d:a802 144d:a801  11/   /	 A V nvme		 vmhba2



and

Code:
[root@robotboy:~] lspci -n | grep hba
0000:00:11.4 Class 0106: 8086:8d62 [vmhba0]
0000:00:14.0 Class 0c03: 8086:8d31 [vmhba32]
0000:00:1f.2 Class 0106: 8086:8d02 [vmhba1]
0000:02:00.0 Class 0108: 1c5c:1285 [vmhba3]
0000:05:00.0 Class 0108: 144d:a802 [vmhba2]


OK so looks like `8086:8d62 15d9:0832` and `8086:8d02 15d9:0832` - but where'd you get the
`d3d0`?

Ohh, I see from the beginning of the file, it's a reset method, it's confusing at first because it's in the same format as devid, vendorid and class.

I am trying it right now, wish me luck!

Edit:

I have tried this on my C612 Wellsburg X10SRL-F and it hasn't worked so far - Wellsburg AHCI still shows up in Manage-->Hardware as greyed out at best (if not in passthrough.map as d3d0 it doesn't show up at all). so far I've tried
Code:
venid devid d3d0 false
venid devid d3d0 default
venid devid link false
veind devid default false


Has anyone with a C61x chipset been able to get this to work?? I am running out of PCIe slots...
 
Last edited:

Sphinxicus

Dabbler
Joined
Nov 3, 2016
Messages
32
Has anyone with a C61x chipset been able to get this to work?? I am running out of PCIe slots...
Don't know if you managed to get this to work yet?

I have just come across this thread while building using ESXi 6.7u1

I'm using a SM X10DRL-i board that has 10 SATA ports via two controllers and used the C612 chipset.

Code:
[root@SuperESXi:~] lspci | grep -i mass
0000:00:11.4 Mass storage controller: Intel Corporation Wellsburg AHCI Controller [vmhba0]
0000:00:1f.2 Mass storage controller: Intel Corporation Wellsburg AHCI Controller [vmhba1]
0000:01:00.0 Mass storage controller: LSI Logic / Symbios Logic LSI2008 [vmhba3]
0000:82:00.0 Mass storage controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981 [vmhba2]

[root@SuperESXi:~] lspci -n | grep vmhba
0000:00:11.4 Class 0106: 8086:8d62 [vmhba0]
0000:00:14.0 Class 0c03: 8086:8d31 [vmhba32]
0000:00:1f.2 Class 0106: 8086:8d02 [vmhba1]
0000:01:00.0 Class 0107: 1000:0072 [vmhba3]
0000:82:00.0 Class 0108: 144d:a808 [vmhba2]


Looking at the ones I'm interested in (vmhba0 & vmhba1), i added the following lines to my /etc/vmware/passthru.map config

Code:
# Intel Wellsburg AHCI SATA Controllers
8086  8d62  d3d0	 false
8086  8d02  d3d0	 false


Then rebooted the ESXi host went into Host > manage > hardware, ticked the two AHCI controllers that are no longer greyed out, selected toggle passthrough and rebooted the ESXi host again.

Now they both show as enabled
passthrough.PNG
 
Status
Not open for further replies.
Top