The PCI device was an Intel QAT (Quick Assistant Technology) device.
This (add PCI passthrough then poweron) can be done by vSphere Client, or vSphere Web Client
but failed to do it via powershell CLI: when the device was added via powershell CLI, the VM cannot boot, no matter by powercli or vSphere Client.
The error message from powershell:
DEBUG: 7/13/2017 12:36:44 PM Start-VM The operation for the entity
"colin-61-4" failed with the following message: "The systemId does not match
the current system or the deviceId, and the vendorId does not match the device
currently at 97:0.0.". The systemId does not match the current system or the
deviceId, and the vendorId does not match the device currently at 97:0.0.
Failed to start the virtual machine. An error was received from the ESX host
while powering on VM colin-61-4.
I tried to get /dump the PCI device with powercli passed through the VM via both vSphere Client and powercli, they seemed identical. details attached in the end of this post
The only suspect was the VendorID was dumped to a negative integer, could it be that the Vendor ID was saved incorrectly when adding the device via powercli for that the error message said venderid mismatch?
And there's a thread reporting similar issue like this, which seemed a bug in vSphere web interface: ESXi 6.0 - VM can't boot after assigning PCIE GPU passthrough : vmware
1. script used to dump the device:
$pass_set1 = $vm | Get-PassthroughDevice -Type 'Pci'
ForEach ($d in $pass_set1) {
Write-Debug $d.Uid
Write-Debug($d | Format-List | Out-String)
}
2. when the device was added via vSphere Client, in this case, the VM can boot smoothly.
the device was dumped as followed:
DEBUG: 7/13/2017 12:10:08 PM Get-PassthroughDevice
DEBUG:
/VIServer=root@10.32.228.84:443/PassthroughDevice=10.32.228.154-VirtualMachine-
vm-1945-<class> Co-processor-0000:61:00.0/
DEBUG:
Bus : 97
ClassId : 2880
DeviceId : 14280
Function : 0
Slot : 0
State : Active
VendorId : -32634
Uid :
/VIServer=root@10.32.228.84:443/PassthroughDevice=10.32.228.154
-VirtualMachine-vm-1945-<class> Co-processor-0000:61:00.0/
VendorName : Intel Corporation
Name : <class> Co-processor
VMId : VirtualMachine-vm-1945
VM : colin-61-4
VMHostId : HostSystem-host-1415
VMHost : 10.32.228.154
Key : 13000
ExtensionData : VMware.Vim.VirtualMachinePciPassthroughInfo
Client : VMware.VimAutomation.ViCore.Impl.V1.VimClient
3. when the device was added via powercli, VM cannot boot.
the device was dumped as followed:
DEBUG: 7/13/2017 1:23:42 PM Get-PassthroughDevice
DEBUG:
/VIServer=root@10.32.228.84:443/PassthroughDevice=10.32.228.154-VirtualMachine-
vm-1945-<class> Co-processor-0000:61:00.0/
DEBUG:
Bus : 97
ClassId : 2880
DeviceId : 14280
Function : 0
Slot : 0
State : Active
VendorId : -32634
Uid :
/VIServer=root@10.32.228.84:443/PassthroughDevice=10.32.228.154
-VirtualMachine-vm-1945-<class> Co-processor-0000:61:00.0/
VendorName : Intel Corporation
Name : <class> Co-processor
VMId : VirtualMachine-vm-1945
VM : colin-61-4
VMHostId : HostSystem-host-1415
VMHost : 10.32.228.154
Key : 13000
ExtensionData : VMware.Vim.VirtualMachinePciPassthroughInfo
Client : VMware.VimAutomation.ViCore.Impl.V1.VimClient