Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c010ee0 authored by Anjali Singhai Jain's avatar Anjali Singhai Jain Committed by Jeff Kirsher
Browse files

i40e: Suppress HMC error to Interrupt message level



The HMC error interrupt would generate an un-necessary message
"unhandled interrupt", causing extra log spam, in addition to causing
a reset that was not necessary.  Prevent this issue by handling the
HMC error case explicitly, and only reset if the interrupt was from
some of the other causes.

Change-Id: Iabd203ba1dfc26a136b638597f3e9991acfa29f3
Signed-off-by: default avatarShannon Nelson <shannon.nelson@intel.com>
Signed-off-by: default avatarAnjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
Tested-by: default avatarKavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 4836650b
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -2814,6 +2814,11 @@ static irqreturn_t i40e_intr(int irq, void *data)
			pf->empr_count++;
	}

	if (icr0 & I40E_PFINT_ICR0_HMC_ERR_MASK) {
		icr0 &= ~I40E_PFINT_ICR0_HMC_ERR_MASK;
		dev_info(&pf->pdev->dev, "HMC error interrupt\n");
	}

	/* If a critical error is pending we have no choice but to reset the
	 * device.
	 * Report and mask out any remaining unexpected interrupts.
@@ -2822,19 +2827,14 @@ static irqreturn_t i40e_intr(int irq, void *data)
	if (icr0_remaining) {
		dev_info(&pf->pdev->dev, "unhandled interrupt icr0=0x%08x\n",
			 icr0_remaining);
		if ((icr0_remaining & I40E_PFINT_ICR0_HMC_ERR_MASK) ||
		    (icr0_remaining & I40E_PFINT_ICR0_PE_CRITERR_MASK) ||
		if ((icr0_remaining & I40E_PFINT_ICR0_PE_CRITERR_MASK) ||
		    (icr0_remaining & I40E_PFINT_ICR0_PCI_EXCEPTION_MASK) ||
		    (icr0_remaining & I40E_PFINT_ICR0_ECC_ERR_MASK) ||
		    (icr0_remaining & I40E_PFINT_ICR0_MAL_DETECT_MASK)) {
			if (icr0 & I40E_PFINT_ICR0_HMC_ERR_MASK) {
				dev_info(&pf->pdev->dev, "HMC error interrupt\n");
			} else {
			dev_info(&pf->pdev->dev, "device will be reset\n");
			set_bit(__I40E_PF_RESET_REQUESTED, &pf->state);
			i40e_service_event_schedule(pf);
		}
		}
		ena_mask &= ~icr0_remaining;
	}