2015年2月12日 星期四

VM with Windows 2008/2012 fail to power on when setup Intel X520/X540 SRIOV NIC

VM with Windows 2008/2012 fail to power on when setup Intel X520/X540 SRIOV NIC 

Details

ESXi supports a maximum of 31 vectors per PCI device.  If you add Intel Ethernet Server Adapter X520-SR2 (ixgbe), Intel Ethernet Server Adapter X540-SR2 as Direct I/O PCI devices to virtual machines with Windows 2008 and later guests, you cannot power on the virtual machines. When you start the virtual machine, Windows accesses all the message signaled interrupts (MSI/MSIX). When a device requests to support more than 31 interrupt vectors, the virtual machine stops responding and the vmware.log file reports an out of MSI-X vectors message.

This issue also occurs when you install the Windows PF driver for these adapters. You see an error similar to PCIPassthru: 07:00.1 tried to modify MSI-X vectors number 32-32, but maximum supported vector number is 31. During load time, the X520-2 device is marked as unsafe. The driver does not load what appears to be an unsafe device. The virtual machine starts and shows the error message.

Solution

To resolve this issue, expose fewer vectors to the guest operating system by adding the pciPassthru0.maxMSIXvectors = 31parameter to the virtual machine's configuration file.

From the vSphere Web Client

  1. Right-click the virtual machine and select Edit Settings.
  2. Click the Options tab and click General.
  3. Click Configuration.
  4. Click Add Row.
  5. Add the parameter to the new row:
    • In the Name column, add pciPassthru0.maxMSIXvectors.
    • In the Value column, add 31.
  6. Click OK.
From a command line

Note: Do not reinstall the driver before modifying the .vmx file.

  1. Open the .vmx file for the virtual machine in a text editor.
  2. Add this entry to the file:

    pciPassthru0.maxMSIXvectors = 31
  3. Reinstall the driver in the virtual machine.
Note: If multiple devices are present, ensure to add entries for each PCI device.

     pciPassthru0.maxMSIXvectors = xx, pciPassthru1.maxMSIXvectors = xx

沒有留言:

張貼留言