Commit 100c08c8 authored by Shruti Parab's avatar Shruti Parab Committed by Jakub Kicinski
Browse files

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: 3c2179e6 ("bnxt_en: Add FW trace coredump segments to the coredump")
Reviewed-by: default avatarKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: default avatarShruti Parab <shruti.parab@broadcom.com>
Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
Link: https://patch.msgid.link/20250710213938.1959625-3-michael.chan@broadcom.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent b74c2a2e
Loading
Loading
Loading
Loading
+11 −7
Original line number Diff line number Diff line
@@ -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;