Skip to content

Commit 30d8439

Browse files
besheltoJeff Kirsher
authored andcommitted
ice: Do not check INTEVENT bit for OICR interrupts
According to the hardware spec, checking the INTEVENT bit isn't a reliable way to detect if an OICR interrupt has occurred. This is because this bit can be cleared by the hardware/firmware before the interrupt service routine has run. So instead, just check for OICR events every time. Fixes: 940b61a ("ice: Initialize PF and setup miscellaneous interrupt") Signed-off-by: Ben Shelton <[email protected]> Signed-off-by: Anirudh Venkataramanan <[email protected]> Tested-by: Tony Brelinski <[email protected]> Signed-off-by: Jeff Kirsher <[email protected]>
1 parent 34357a9 commit 30d8439

File tree

2 files changed

+0
-6
lines changed

2 files changed

+0
-6
lines changed

drivers/net/ethernet/intel/ice/ice_hw_autogen.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,6 @@
121121
#define PFINT_FW_CTL_CAUSE_ENA_S 30
122122
#define PFINT_FW_CTL_CAUSE_ENA_M BIT(PFINT_FW_CTL_CAUSE_ENA_S)
123123
#define PFINT_OICR 0x0016CA00
124-
#define PFINT_OICR_INTEVENT_S 0
125-
#define PFINT_OICR_INTEVENT_M BIT(PFINT_OICR_INTEVENT_S)
126124
#define PFINT_OICR_HLP_RDY_S 14
127125
#define PFINT_OICR_HLP_RDY_M BIT(PFINT_OICR_HLP_RDY_S)
128126
#define PFINT_OICR_CPM_RDY_S 15

drivers/net/ethernet/intel/ice/ice_main.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1722,9 +1722,6 @@ static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
17221722
oicr = rd32(hw, PFINT_OICR);
17231723
ena_mask = rd32(hw, PFINT_OICR_ENA);
17241724

1725-
if (!(oicr & PFINT_OICR_INTEVENT_M))
1726-
goto ena_intr;
1727-
17281725
if (oicr & PFINT_OICR_GRST_M) {
17291726
u32 reset;
17301727
/* we have a reset warning */
@@ -1782,7 +1779,6 @@ static irqreturn_t ice_misc_intr(int __always_unused irq, void *data)
17821779
}
17831780
ret = IRQ_HANDLED;
17841781

1785-
ena_intr:
17861782
/* re-enable interrupt causes that are not handled during this pass */
17871783
wr32(hw, PFINT_OICR_ENA, ena_mask);
17881784
if (!test_bit(__ICE_DOWN, pf->state)) {

0 commit comments

Comments
 (0)