Commit 19b73d8e authored by Mitch Williams's avatar Mitch Williams Committed by Jeff Kirsher

i40evf: Add additional check for reset

If the driver happens to read a register during the time in which the
device is undergoing reset, it will receive a value of 0xdeadbeef
instead of a valid value. Unfortunately, the driver may misinterpret
this as a valid value, especially if it's just looking for individual
bits.

Add an explicit check for this value when we are looking for admin queue
errors, and trigger reset recovery if we find it.
Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 56e5ca68
...@@ -1994,6 +1994,8 @@ static void i40evf_adminq_task(struct work_struct *work) ...@@ -1994,6 +1994,8 @@ static void i40evf_adminq_task(struct work_struct *work)
/* check for error indications */ /* check for error indications */
val = rd32(hw, hw->aq.arq.len); val = rd32(hw, hw->aq.arq.len);
if (val == 0xdeadbeef) /* indicates device in reset */
goto freedom;
oldval = val; oldval = val;
if (val & I40E_VF_ARQLEN1_ARQVFE_MASK) { if (val & I40E_VF_ARQLEN1_ARQVFE_MASK) {
dev_info(&adapter->pdev->dev, "ARQ VF Error detected\n"); dev_info(&adapter->pdev->dev, "ARQ VF Error detected\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment