]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40evf: Add additional check for reset
authorMitch Williams <mitch.a.williams@intel.com>
Thu, 10 Mar 2016 22:59:49 +0000 (14:59 -0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 7 Jul 2016 17:40:47 +0000 (10:40 -0700)
Orabug: 23176970

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: Mitch Williams <mitch.a.williams@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from commit 19b73d8efaa459a66665b5e0a3e7acedd05f4901)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/intel/i40evf/i40evf_main.c

index 880bb06750dab7cd5e67d40205f9d55107786e94..755ea3667eb54b9a40a34ddf13eaa7e4ba5c0b6e 100644 (file)
@@ -1994,6 +1994,8 @@ static void i40evf_adminq_task(struct work_struct *work)
 
        /* check for error indications */
        val = rd32(hw, hw->aq.arq.len);
+       if (val == 0xdeadbeef) /* indicates device in reset */
+               goto freedom;
        oldval = val;
        if (val & I40E_VF_ARQLEN1_ARQVFE_MASK) {
                dev_info(&adapter->pdev->dev, "ARQ VF Error detected\n");