HBA adapter (HBA355i) registers as Storage Adapter (vmhba#) preventing PCI Passthrough for Nutanix on ESXi hosts
search cancel

HBA adapter (HBA355i) registers as Storage Adapter (vmhba#) preventing PCI Passthrough for Nutanix on ESXi hosts

book

Article ID: 434815

calendar_today

Updated On:

Products

VMware vSphere ESXi VMware vSphere ESXi 8.0 VMware Cloud Foundation

Issue/Introduction

After hardware maintenance or reseating an HBA355i controller on Nutanix HCI host, the ESXi hypervisor incorrectly identifies the device as a standard storage adapter ( vmhba# ) instead of a PCI Passthrough device. 
This prevents the controller VM (CVM) from claiming the HBA, leading to local storage mounting failures. 

Validation can be confirmed by the following:

  • UI Error when enabling Passthrough on this device:
              " An error occurred during host configuration: Failed to apply the provided configuration..
          Failed to unbind devices: 0000:##:00.0. Configuration will be applied after reboot."

  • CLI Error: 
              # esxcli hardware pci pcipassthru set -d 0000:##:00.0 -a -e=1
         Error: Unable to configure the PCI device: Failed to unbind device 0000:##:00.0

  • VMkernel Logs:

    • WARNING: ScsiAdapter: 3567: Cannot unregister adapter vmhba# with paths claimed

      WARNING: Unregister of vmkAdapter vmhba# failed: Busy

      Device: 412: psa:driver->ops.detachDevice:0 ms



Environment

VMware ESXi 7.0.x
VMware ESXi 8.0.x
VMware ESXi 9.0.x
VMware ESXi (Running on Nutanix HCI)
Broadcom/LSI HBA355i Front

Cause

The native ESXi driver lsi_msgpt35 driver module is enabled and claims the HBA355i during the boot sequence.
Because the driver immediately establishes active paths to the enclosure/LUNs, the device enters a "Busy" state.
This prevents the kernel from dynamically unbinding the device to satisfy a PCI Passthrough request. 

Resolution


To allow the kernel to unbind the device, you must manually release the active paths and disable the driver module before enabling passthrough. 
Note: Host must be in maintenance mode before making these changes. Replace the # in vmhba# with the appropriate HBA device number.

  1. Identify active paths: Run one of these commands below   to confirm the device is busy.

    • esxcfg-scsidevs -A  

    • esxcfg-mpath -b

    • esxcli storage core path list -A vmhba# 

  2. Unclaim the device paths: Force the Pluggable Storage Architecture (PSA) to release the device:      # esxcli storage core claiming unclaim -t location -A vmhba#

  3. Disable the driver module: Prevent the native driver from claiming the device on subsequent boots:  # esxcli system module set --enabled=false --module=lsi_msgpt35

  4. Enable Passthrough:

    • In the vSphere Client, navigate to Host > Configure > Hardware > PCI Devices.

    • Locate the HBA355i and click Toggle Passthrough.

  5. Persist and Reboot:

    • Run /sbin/auto-backup.sh to ensure configuration changes are saved to the boot bank.

    • Reboot the ESXi host.

  6. Verification: After reboot, verify the module status: esxcli system module list | grep lsi_msgpt35   Ensure both 'Enabled' and 'Loaded' columns are false.

Additional Information

For Nutanix environments, the HBA must be in passthrough mode for the CVM to achieve direct I/O access to the physical drives.