bnxt_en: Flush FW trace before copying to the coredump

bnxt_fill_drv_seg_record() calls bnxt_dbg_hwrm_log_buffer_flush()
to flush the FW trace buffer.  This needs to be done before we
call bnxt_copy_ctx_mem() to copy the trace data.

Without this fix, the coredump may not contain all the FW
traces.

Fixes: 3c2179e663 ("bnxt_en: Add FW trace coredump segments to the coredump")
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil@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/20250710213938.1959625-3-michael.chan@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Shruti Parab 2025-07-10 14:39:37 -07:00 committed by Jakub Kicinski
parent b74c2a2e9c
commit 100c08c89d

View File

@ -368,23 +368,27 @@ static u32 bnxt_get_ctx_coredump(struct bnxt *bp, void *buf, u32 offset,
if (!ctxm->mem_valid || !seg_id)
continue;
if (trace)
if (trace) {
extra_hlen = BNXT_SEG_RCD_LEN;
if (buf) {
u16 trace_type = bnxt_bstore_to_trace[type];
bnxt_fill_drv_seg_record(bp, &record, ctxm,
trace_type);
}
}
if (buf)
data = buf + BNXT_SEG_HDR_LEN + extra_hlen;
seg_len = bnxt_copy_ctx_mem(bp, ctxm, data, 0) + extra_hlen;
if (buf) {
bnxt_fill_coredump_seg_hdr(bp, &seg_hdr, NULL, seg_len,
0, 0, 0, comp_id, seg_id);
memcpy(buf, &seg_hdr, BNXT_SEG_HDR_LEN);
buf += BNXT_SEG_HDR_LEN;
if (trace) {
u16 trace_type = bnxt_bstore_to_trace[type];
bnxt_fill_drv_seg_record(bp, &record, ctxm,
trace_type);
if (trace)
memcpy(buf, &record, BNXT_SEG_RCD_LEN);
}
buf += seg_len;
}
len += BNXT_SEG_HDR_LEN + seg_len;