Skip to content

Commit

Permalink
common/cnxk: reset stale values on error debug registers
Browse files Browse the repository at this point in the history
LF's error debug registers like NIX_LF_SQ_OP_ERR_DBG,
NIX_LF_MNQ_ERR_DBG, NIX_LF_SEND_ERR_DBG captures debug
info for an error detected during LMT operation or meta
enqueue or after meta enqueue granted respectively. HW
sets a valid bit when info is captured and SW is expected
to clear this valid bit by writing 1, else these registers
will show stale values of first interrupt when occurred and
will never update with subsequent interrupts.

Fixes: f6d567b ("common/cnxk: support NIX IRQ")
Cc: stable@dpdk.org

Signed-off-by: Harman Kalra <hkalra@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
  • Loading branch information
Harman Kalra authored and jerinjacobk committed Jan 23, 2022
1 parent 83e2755 commit 9b7198e
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion drivers/common/cnxk/roc_nix_irq.c
Expand Up @@ -202,9 +202,12 @@ nix_lf_sq_debug_reg(struct nix *nix, uint32_t off)
uint64_t reg;

reg = plt_read64(nix->base + off);
if (reg & BIT_ULL(44))
if (reg & BIT_ULL(44)) {
plt_err("SQ=%d err_code=0x%x", (int)((reg >> 8) & 0xfffff),
(uint8_t)(reg & 0xff));
/* Clear valid bit */
plt_write64(BIT_ULL(44), nix->base + off);
}
}

static void
Expand Down

0 comments on commit 9b7198e

Please sign in to comment.