I assign XL710 VF to QEMU, and load modified i40evf driver in QEMU, then I encounter the following error in the qemu:
"Admin queue command never completed"
and get the following error log in host OS system:
[ 7823.295061] pci 0000:03:02.2: enabling device (0000 -> 0002)
[ 7823.295959] i40e 0000:03:00.0: VF 2 assigned LAN VSI index 5, VSI id 8
[ 7823.446495] pci 0000:03:02.2: kvm assign device
[ 7826.579576] i40e 0000:03:00.0: VF 2 assigned LAN VSI index 5, VSI id 8
[ 7827.024165] i40e 0000:03:00.0: VF 2 assigned LAN VSI index 5, VSI id 8
[ 7842.719176] dmar: DRHD: handling fault status reg 102
[ 7842.719188] dmar: DMAR:[DMA Read] Request device [03:02.2] fault addr 6551000
DMAR:[fault reason 06] PTE Read access is not set
[ 7843.628420] i40e 0000:03:00.0: ARQ VF Error detected
[ 7843.628426] i40e 0000:03:00.0: ASQ VF Error detected
[ 7847.424745] i40e 0000:03:00.0: VF 2 assigned LAN VSI index 5, VSI id 8
[ 7847.525135] i40e 0000:03:00.0: VF 2 assigned LAN VSI index 5, VSI id 8
Then I unload and reload i40e driver in host OS system and encouter the following error:
[ 7856.803922] i40e: Intel(R) Ethernet Connection XL710 Network Driver - version 0.4.21-k
[ 7856.803925] i40e: Copyright (c) 2013 - 2014 Intel Corporation.
[ 7856.812193] i40e 0000:03:00.0: f0.0 a0.0 n04.24 e800013fd
[ 7856.812196] i40e 0000:03:00.0: The driver for the device detected an older version of the NVM image than expected. Please update the NVM image.
[ 7857.034526] i40e 0000:03:00.0: FCoE capability is disabled
[ 7857.034533] i40e 0000:03:00.0: configure_lan_hmc failed: -49
[ 7857.034679] i40e: probe of 0000:03:00.0 failed with error -2
I debug the i40e driver code and found that the driver call i40evf_asq_send_command to get firmware and api version but the firmware did not write back any information (so the firmware and api version in the above message are both 0). After rebooting the host system, it works again. This problem happens from time to time, and I can't reproduce it at will.
Before unload and reload the i40e driver, I give the EMP reset command by execute "echo empr > /sys/kernel/debug/i40e/0000\:03\:00.0/command", but it did not fix the problem.
Dose anyone know why this happen and how to recover from the problem ? Thanks in advance!
I run on ubuntu 14.10 x86-64 with updated kernel 3.17.6-031706-generic.