History log of /linux-master/drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.h
Revision Date Author Comments
# f7133135 17-Jan-2023 Shay Drory <shayd@nvidia.com>

net/mlx5: fw_tracer, Add support for unrecognized string

In case FW is publishing a string which isn't found in the driver's
string DBs, keep the string as raw data.

Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>


# 7dfcd110 12-Jan-2023 Shay Drory <shayd@nvidia.com>

net/mlx5: fw_tracer, Add support for strings DB update event

In case a new string DB is added to the FW, the FW publishes an event
notifying the strings DB have updated.

Add support in driver for handling this event.

Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>


# 83fec3f1 12-Oct-2021 Aharon Landau <aharonl@nvidia.com>

RDMA/mlx5: Replace struct mlx5_core_mkey by u32 key

In mlx5_core and vdpa there is no use of mlx5_core_mkey members except
for the key itself.

As preparation for moving mlx5_core_mkey to mlx5_ib, the occurrences of
struct mlx5_core_mkey in all modules except for mlx5_ib are replaced by
a u32 key.

Signed-off-by: Aharon Landau <aharonl@nvidia.com>
Reviewed-by: Shay Drory <shayd@nvidia.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>


# 2d693567 07-Oct-2020 Moshe Shemesh <moshe@mellanox.com>

net/mlx5: Add support for fw live patch event

Firmware live patch event notifies the driver that the firmware was just
updated using live patch. In such case the driver should not reload or
re-initiate entities, part to updating the firmware version and
re-initiate the firmware tracer which can be updated by live patch with
new strings database to help debugging an issue.

Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
Reviewed-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>


# fd1483fe 11-Dec-2018 Moshe Shemesh <moshe@mellanox.com>

net/mlx5: Add support for FW reporter dump

Add support of dump callback for mlx5 FW reporter. Once we trigger FW
dump, the FW will write the core dump to its raw data buffer. The tracer
translates the raw data to traces and save it to a cyclic array. Once
dump is done, the saved traces data is filled into the dump buffer. In
case syndrome is not zero the health buffer content will be printed as
well.

FW dump example:
$ devlink health dump show pci/0000:82:00.0 reporter fw
dump fw traces:
timestamp: 509006640427 lost: false event_id: 185 msg: dump general
info GVMI=0x0000
timestamp: 509006645474 lost: false event_id: 185 msg: GVMI
management info, gvmi_management context:
timestamp: 509006654463 lost: false event_id: 185 msg: [000]:
00000000 00000000 00000000 00000000
timestamp: 509006656127 lost: false event_id: 185 msg: [010]:
00000000 00000000 00000000 00000000
timestamp: 509006656255 lost: false event_id: 185 msg: [020]:
00000000 00000000 00000000 00000000
timestamp: 509006656511 lost: false event_id: 185 msg: [030]:
00000000 00000000 00000000 00000000
timestamp: 509006656639 lost: false event_id: 185 msg: [040]:
00000000 00000000 00000000 00000000
timestamp: 509006656895 lost: false event_id: 185 msg: [050]:
00000000 00000000 00000000 00000000
timestamp: 509006657023 lost: false event_id: 185 msg: [060]:
00000000 00000000 00000000 00000000
timestamp: 509006657180 lost: false event_id: 185 msg: [070]:
00000000 00000000 00000000 00000000
timestamp: 509006659839 lost: false event_id: 185 msg: CMDIF dbase
from IRON: active_dbase_slots = 0x00000000
timestamp: 509006667391 lost: false event_id: 185 msg: GVMI=0x0000
hw_toc context:
timestamp: 509006667647 lost: false event_id: 185 msg: [000]:
00000000 00000000 00000000 fffff000
timestamp: 509006667775 lost: false event_id: 185 msg: [010]:
00000000 00000000 00000000 80d00000
...
...

Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>


# 720a936d 20-Nov-2018 Saeed Mahameed <saeedm@mellanox.com>

net/mlx5: FWTrace, Use async events chain

Remove the explicit call to mlx5_fw_tracer_event on
MLX5_EVENT_TYPE_DEVICE_TRACER and let fw tracer to register
its own handler when its ready.

Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>


# 24406953 22-Feb-2018 Feras Daoud <ferasda@mellanox.com>

net/mlx5: FW tracer, Enable tracing

Add the tracer file to the makefile and add the init
function to the load one flow.

Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>


# 70dd6fdb 18-Feb-2018 Feras Daoud <ferasda@mellanox.com>

net/mlx5: FW tracer, parse traces and kernel tracing support

For each message the driver should do the following:
1- Find the message string in the strings database
2- Count the param number of each message
3- Wait for the param events and accumulate them
4- Calculate the event timestamp using the local event timestamp
and the first timestamp event following it.
5- Print message to trace log

Enable the tracing by:
echo 1 > /sys/kernel/debug/tracing/events/mlx5/mlx5_fw/enable

Read traces by:
cat /sys/kernel/debug/tracing/trace

Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>


# c71ad41c 07-Feb-2018 Feras Daoud <ferasda@mellanox.com>

net/mlx5: FW tracer, events handling

The tracer has one event, event 0x26, with two subtypes:
- Subtype 0: Ownership change
- Subtype 1: Traces available

An ownership change occurs in the following cases:
1- Owner releases his ownership, in this case, an event will be
sent to inform others to reattempt acquire ownership.
2- Ownership was taken by a higher priority tool, in this case
the owner should understand that it lost ownership, and go through
tear down flow.

The second subtype indicates that there are traces in the trace buffer,
in this case, the driver polls the tracer buffer for new traces, parse
them and prepares the messages for printing.

The HW starts tracing from the first address in the tracer buffer.
Driver receives an event notifying that new trace block exists.
HW posts a timestamp event at the last 8B of every 256B block.
Comparing the timestamp to the last handled timestamp would indicate
that this is a new trace block. Once the new timestamp is detected,
the entire block is considered valid.

Block validation and parsing, should be done after copying the current
block to a different location, in order to avoid block overwritten
during processing.

Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>


# 48967ffd 06-Feb-2018 Feras Daoud <ferasda@mellanox.com>

net/mlx5: FW tracer, create trace buffer and copy strings database

For each PF do the following:
1- Allocate memory for the tracer strings database and read the
strings from the FW to the SW. These strings will be used later for
parsing traces.
2- Allocate and dma map tracer buffers.

Traces that will be written into the buffer will be parsed as a group
of one or more traces, referred to as trace message. The trace message
represents a C-like printf string.
First trace of a message holds the pointer to the correct string in
strings database. The following traces holds the variables of the
message.

Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>


# f53aaa31 16-Jul-2018 Feras Daoud <ferasda@mellanox.com>

net/mlx5: FW tracer, implement tracer logic

Implement FW tracer logic and registers access, initialization and
cleanup flows.

Initializing the tracer will be part of load one flow, as multiple
PFs will try to acquire ownership but only one will succeed and will
be the tracer owner.

Signed-off-by: Feras Daoud <ferasda@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>