-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for trace events for SFs to improve debugging. This covers (a) port add and free trace points (b) device level trace points (c) SF hardware context add, free trace points. (d) SF function activate/deacticate and state trace points SF events examples: echo mlx5:mlx5_sf_add >> /sys/kernel/debug/tracing/set_event echo mlx5:mlx5_sf_free >> /sys/kernel/debug/tracing/set_event echo mlx5:mlx5_sf_hwc_alloc >> /sys/kernel/debug/tracing/set_event echo mlx5:mlx5_sf_hwc_free >> /sys/kernel/debug/tracing/set_event echo mlx5:mlx5_sf_hwc_deferred_free >> /sys/kernel/debug/tracing/set_event echo mlx5:mlx5_sf_update_state >> /sys/kernel/debug/tracing/set_event echo mlx5:mlx5_sf_activate >> /sys/kernel/debug/tracing/set_event echo mlx5:mlx5_sf_deactivate >> /sys/kernel/debug/tracing/set_event Signed-off-by: Parav Pandit <parav@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
- Loading branch information
Parav Pandit
authored and
Saeed Mahameed
committed
Oct 25, 2021
1 parent
5546040
commit b3ccada
Showing
4 changed files
with
222 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
173 changes: 173 additions & 0 deletions
173
drivers/net/ethernet/mellanox/mlx5/core/sf/diag/sf_tracepoint.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ | ||
/* Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ | ||
|
||
#undef TRACE_SYSTEM | ||
#define TRACE_SYSTEM mlx5 | ||
|
||
#if !defined(_MLX5_SF_TP_) || defined(TRACE_HEADER_MULTI_READ) | ||
#define _MLX5_SF_TP_ | ||
|
||
#include <linux/tracepoint.h> | ||
#include <linux/mlx5/driver.h> | ||
#include "sf/vhca_event.h" | ||
|
||
TRACE_EVENT(mlx5_sf_add, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
unsigned int port_index, | ||
u32 controller, | ||
u16 hw_fn_id, | ||
u32 sfnum), | ||
TP_ARGS(dev, port_index, controller, hw_fn_id, sfnum), | ||
TP_STRUCT__entry(__string(devname, dev_name(dev->device)) | ||
__field(unsigned int, port_index) | ||
__field(u32, controller) | ||
__field(u16, hw_fn_id) | ||
__field(u32, sfnum) | ||
), | ||
TP_fast_assign(__assign_str(devname, dev_name(dev->device)); | ||
__entry->port_index = port_index; | ||
__entry->controller = controller; | ||
__entry->hw_fn_id = hw_fn_id; | ||
__entry->sfnum = sfnum; | ||
), | ||
TP_printk("(%s) port_index=%u controller=%u hw_id=0x%x sfnum=%u\n", | ||
__get_str(devname), __entry->port_index, __entry->controller, | ||
__entry->hw_fn_id, __entry->sfnum) | ||
); | ||
|
||
TRACE_EVENT(mlx5_sf_free, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
unsigned int port_index, | ||
u32 controller, | ||
u16 hw_fn_id), | ||
TP_ARGS(dev, port_index, controller, hw_fn_id), | ||
TP_STRUCT__entry(__string(devname, dev_name(dev->device)) | ||
__field(unsigned int, port_index) | ||
__field(u32, controller) | ||
__field(u16, hw_fn_id) | ||
), | ||
TP_fast_assign(__assign_str(devname, dev_name(dev->device)); | ||
__entry->port_index = port_index; | ||
__entry->controller = controller; | ||
__entry->hw_fn_id = hw_fn_id; | ||
), | ||
TP_printk("(%s) port_index=%u controller=%u hw_id=0x%x\n", | ||
__get_str(devname), __entry->port_index, __entry->controller, | ||
__entry->hw_fn_id) | ||
); | ||
|
||
TRACE_EVENT(mlx5_sf_hwc_alloc, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
u32 controller, | ||
u16 hw_fn_id, | ||
u32 sfnum), | ||
TP_ARGS(dev, controller, hw_fn_id, sfnum), | ||
TP_STRUCT__entry(__string(devname, dev_name(dev->device)) | ||
__field(u32, controller) | ||
__field(u16, hw_fn_id) | ||
__field(u32, sfnum) | ||
), | ||
TP_fast_assign(__assign_str(devname, dev_name(dev->device)); | ||
__entry->controller = controller; | ||
__entry->hw_fn_id = hw_fn_id; | ||
__entry->sfnum = sfnum; | ||
), | ||
TP_printk("(%s) controller=%u hw_id=0x%x sfnum=%u\n", | ||
__get_str(devname), __entry->controller, __entry->hw_fn_id, | ||
__entry->sfnum) | ||
); | ||
|
||
TRACE_EVENT(mlx5_sf_hwc_free, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
u16 hw_fn_id), | ||
TP_ARGS(dev, hw_fn_id), | ||
TP_STRUCT__entry(__string(devname, dev_name(dev->device)) | ||
__field(u16, hw_fn_id) | ||
), | ||
TP_fast_assign(__assign_str(devname, dev_name(dev->device)); | ||
__entry->hw_fn_id = hw_fn_id; | ||
), | ||
TP_printk("(%s) hw_id=0x%x\n", __get_str(devname), __entry->hw_fn_id) | ||
); | ||
|
||
TRACE_EVENT(mlx5_sf_hwc_deferred_free, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
u16 hw_fn_id), | ||
TP_ARGS(dev, hw_fn_id), | ||
TP_STRUCT__entry(__string(devname, dev_name(dev->device)) | ||
__field(u16, hw_fn_id) | ||
), | ||
TP_fast_assign(__assign_str(devname, dev_name(dev->device)); | ||
__entry->hw_fn_id = hw_fn_id; | ||
), | ||
TP_printk("(%s) hw_id=0x%x\n", __get_str(devname), __entry->hw_fn_id) | ||
); | ||
|
||
DECLARE_EVENT_CLASS(mlx5_sf_state_template, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
u32 port_index, | ||
u32 controller, | ||
u16 hw_fn_id), | ||
TP_ARGS(dev, port_index, controller, hw_fn_id), | ||
TP_STRUCT__entry(__string(devname, dev_name(dev->device)) | ||
__field(unsigned int, port_index) | ||
__field(u32, controller) | ||
__field(u16, hw_fn_id)), | ||
TP_fast_assign(__assign_str(devname, dev_name(dev->device)); | ||
__entry->port_index = port_index; | ||
__entry->controller = controller; | ||
__entry->hw_fn_id = hw_fn_id; | ||
), | ||
TP_printk("(%s) port_index=%u controller=%u hw_id=0x%x\n", | ||
__get_str(devname), __entry->port_index, __entry->controller, | ||
__entry->hw_fn_id) | ||
); | ||
|
||
DEFINE_EVENT(mlx5_sf_state_template, mlx5_sf_activate, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
u32 port_index, | ||
u32 controller, | ||
u16 hw_fn_id), | ||
TP_ARGS(dev, port_index, controller, hw_fn_id) | ||
); | ||
|
||
DEFINE_EVENT(mlx5_sf_state_template, mlx5_sf_deactivate, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
u32 port_index, | ||
u32 controller, | ||
u16 hw_fn_id), | ||
TP_ARGS(dev, port_index, controller, hw_fn_id) | ||
); | ||
|
||
TRACE_EVENT(mlx5_sf_update_state, | ||
TP_PROTO(const struct mlx5_core_dev *dev, | ||
unsigned int port_index, | ||
u32 controller, | ||
u16 hw_fn_id, | ||
u8 state), | ||
TP_ARGS(dev, port_index, controller, hw_fn_id, state), | ||
TP_STRUCT__entry(__string(devname, dev_name(dev->device)) | ||
__field(unsigned int, port_index) | ||
__field(u32, controller) | ||
__field(u16, hw_fn_id) | ||
__field(u8, state) | ||
), | ||
TP_fast_assign(__assign_str(devname, dev_name(dev->device)); | ||
__entry->port_index = port_index; | ||
__entry->controller = controller; | ||
__entry->hw_fn_id = hw_fn_id; | ||
__entry->state = state; | ||
), | ||
TP_printk("(%s) port_index=%u controller=%u hw_id=0x%x state=%u\n", | ||
__get_str(devname), __entry->port_index, __entry->controller, | ||
__entry->hw_fn_id, __entry->state) | ||
); | ||
|
||
#endif /* _MLX5_SF_TP_ */ | ||
|
||
/* This part must be outside protection */ | ||
#undef TRACE_INCLUDE_PATH | ||
#define TRACE_INCLUDE_PATH sf/diag | ||
#undef TRACE_INCLUDE_FILE | ||
#define TRACE_INCLUDE_FILE sf_tracepoint | ||
#include <trace/define_trace.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters