]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
bnxt_en: Add fw log trace support for 5731X/5741X chips
authorShruti Parab <shruti.parab@broadcom.com>
Wed, 17 Sep 2025 04:08:34 +0000 (21:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Nov 2025 20:37:26 +0000 (15:37 -0500)
[ Upstream commit ba1aefee2e9835fe6e07b86cb7020bd2550a81ee ]

These older chips now support the fw log traces via backing store
qcaps_v2. No other backing store memory types are supported besides
the fw trace types.

Reviewed-by: Hongguang Gao <hongguang.gao@broadcom.com>
Reviewed-by: Andy Gospodarek <andrew.gospodarek@broadcom.com>
Signed-off-by: Shruti Parab <shruti.parab@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Link: https://patch.msgid.link/20250917040839.1924698-6-michael.chan@broadcom.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h
drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c
drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.h

index 0f3cc21ab03203223741a1db3b156000dfe135dd..60e20b7642174364b408f05b9886033934f4cd42 100644 (file)
@@ -265,6 +265,7 @@ const u16 bnxt_bstore_to_trace[] = {
        [BNXT_CTX_CA1]          = DBG_LOG_BUFFER_FLUSH_REQ_TYPE_CA1_TRACE,
        [BNXT_CTX_CA2]          = DBG_LOG_BUFFER_FLUSH_REQ_TYPE_CA2_TRACE,
        [BNXT_CTX_RIGP1]        = DBG_LOG_BUFFER_FLUSH_REQ_TYPE_RIGP1_TRACE,
+       [BNXT_CTX_KONG]         = DBG_LOG_BUFFER_FLUSH_REQ_TYPE_AFM_KONG_HWRM_TRACE,
 };
 
 static struct workqueue_struct *bnxt_pf_wq;
@@ -9155,7 +9156,7 @@ static int bnxt_backing_store_cfg_v2(struct bnxt *bp, u32 ena)
        int rc = 0;
        u16 type;
 
-       for (type = BNXT_CTX_SRT; type <= BNXT_CTX_RIGP1; type++) {
+       for (type = BNXT_CTX_SRT; type <= BNXT_CTX_KONG; type++) {
                ctxm = &ctx->ctx_arr[type];
                if (!bnxt_bs_trace_avail(bp, type))
                        continue;
@@ -9305,6 +9306,10 @@ static int bnxt_alloc_ctx_mem(struct bnxt *bp)
        if (!ctx || (ctx->flags & BNXT_CTX_FLAG_INITED))
                return 0;
 
+       ena = 0;
+       if (!(bp->flags & BNXT_FLAG_CHIP_P5_PLUS))
+               goto skip_legacy;
+
        ctxm = &ctx->ctx_arr[BNXT_CTX_QP];
        l2_qps = ctxm->qp_l2_entries;
        qp1_qps = ctxm->qp_qp1_entries;
@@ -9313,7 +9318,6 @@ static int bnxt_alloc_ctx_mem(struct bnxt *bp)
        ctxm = &ctx->ctx_arr[BNXT_CTX_SRQ];
        srqs = ctxm->srq_l2_entries;
        max_srqs = ctxm->max_entries;
-       ena = 0;
        if ((bp->flags & BNXT_FLAG_ROCE_CAP) && !is_kdump_kernel()) {
                pg_lvl = 2;
                if (BNXT_SW_RES_LMT(bp)) {
@@ -9407,6 +9411,7 @@ skip_rdma:
                ena |= FUNC_BACKING_STORE_CFG_REQ_ENABLES_TQM_SP << i;
        ena |= FUNC_BACKING_STORE_CFG_REQ_DFLT_ENABLES;
 
+skip_legacy:
        if (bp->fw_cap & BNXT_FW_CAP_BACKING_STORE_V2)
                rc = bnxt_backing_store_cfg_v2(bp, ena);
        else
index 119d4ef6ef6604cfbd778c9cd32f343f9df0cc29..2317172166c7df0af956439e0327d47eb64fc005 100644 (file)
@@ -1968,10 +1968,11 @@ struct bnxt_ctx_mem_type {
 #define BNXT_CTX_CA1   FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_CA1_TRACE
 #define BNXT_CTX_CA2   FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_CA2_TRACE
 #define BNXT_CTX_RIGP1 FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_RIGP1_TRACE
+#define BNXT_CTX_KONG  FUNC_BACKING_STORE_QCAPS_V2_REQ_TYPE_AFM_KONG_HWRM_TRACE
 
 #define BNXT_CTX_MAX   (BNXT_CTX_TIM + 1)
 #define BNXT_CTX_L2_MAX        (BNXT_CTX_FTQM + 1)
-#define BNXT_CTX_V2_MAX        (BNXT_CTX_RIGP1 + 1)
+#define BNXT_CTX_V2_MAX        (BNXT_CTX_KONG + 1)
 #define BNXT_CTX_INV   ((u16)-1)
 
 struct bnxt_ctx_mem_info {
index 18d6c94d5cb825455c95af2fcd812d1781a9e25a..a0a37216efb3b1e06ed7684ccdfc1bd7c369e3f2 100644 (file)
@@ -36,6 +36,7 @@ static const u16 bnxt_bstore_to_seg_id[] = {
        [BNXT_CTX_CA1]                  = BNXT_CTX_MEM_SEG_CA1,
        [BNXT_CTX_CA2]                  = BNXT_CTX_MEM_SEG_CA2,
        [BNXT_CTX_RIGP1]                = BNXT_CTX_MEM_SEG_RIGP1,
+       [BNXT_CTX_KONG]                 = BNXT_CTX_MEM_SEG_KONG,
 };
 
 static int bnxt_dbg_hwrm_log_buffer_flush(struct bnxt *bp, u16 type, u32 flags,
@@ -359,7 +360,7 @@ static u32 bnxt_get_ctx_coredump(struct bnxt *bp, void *buf, u32 offset,
 
        if (buf)
                buf += offset;
-       for (type = 0 ; type <= BNXT_CTX_RIGP1; type++) {
+       for (type = 0; type <= BNXT_CTX_KONG; type++) {
                struct bnxt_ctx_mem_type *ctxm = &ctx->ctx_arr[type];
                bool trace = bnxt_bs_trace_avail(bp, type);
                u32 seg_id = bnxt_bstore_to_seg_id[type];
index d1cd6387f3ab4b44ad987bf502f7de57693333ef..8d0f58c74cc32a72cdc055f1081cbbe14b68f3fc 100644 (file)
@@ -102,6 +102,7 @@ struct bnxt_driver_segment_record {
 #define BNXT_CTX_MEM_SEG_CA1   0x9
 #define BNXT_CTX_MEM_SEG_CA2   0xa
 #define BNXT_CTX_MEM_SEG_RIGP1 0xb
+#define BNXT_CTX_MEM_SEG_KONG  0xd
 
 #define BNXT_CRASH_DUMP_LEN    (8 << 20)