Enabling pcie passthough for built in devices on ESXi
When trying to setup a ESXi server for the homelab you might find yourself in a situation where you want to not use the onboard SATA controller on the ESXi server itselv, but instead pass it onto a VM, so the VM can use the SATA devices directly. e.g. if you are setting up an embedded NAS that should have direct access to the disks.
This is not always easy - since sometimes ESXi refuses to allow you to do this. And when you look in the PCI Devices list you are met with a picture like this:
So then what?
It turns out you can coax ESXi to relinquish its hold on the device and simply force it to allow pcie-passthough.
This is a guide on how to do it - with an example for the Intel C602 chipset SATA controller.
SSH to esxi host and run the following command:
Which should give an output similar to:
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]
You ran this command to find out what the logical names of the controllers were (vmhba).
lspci -n|grep vmhba
Which should give you two lines like:
0000:00:11.4 Class 0106: 8086:8d62 [vmhba0] 0000:00:1f.2 Class 0106: 8086:8d02 [vmhba1]
Then you find out which of the controllers you want to passthough somewhere and add a line per controller into:
8086 8d62 d3d0 false #vmhba0 8086 8d02 d3d0 false #vmhba1
Reboot the server and you should be able to enable passthough on the controller you added to the passthru.map.
If it does not work, please double check that you used the correct id’s