diff options
| author | Nimrod Oren <noren@nvidia.com> | 2026-08-03 16:25:20 +0300 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-08-05 19:02:15 -0700 |
| commit | b7cfcc9d3dfd5e1ad4f00abe066726da4c8552cd (patch) | |
| tree | 8f7dbc44efb0c829b2b92eb86eb8ed9fceda3766 | |
| parent | c29235677f5e3645e7d7324c5d51aaa78ee9b006 (diff) | |
net/mlx5: add debugfs stats for doorbell dma pools
Add a debugfs file exposing per-node DMA pool usage for doorbell
allocations.
# cat /sys/kernel/debug/mlx5/<dev>/db_dma_pools
node block_size used_blocks allocated_blocks
0 64 0 0
1 64 0 0
Signed-off-by: Nimrod Oren <noren@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20260803132520.2891860-4-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/alloc.c | 27 | ||||
| -rw-r--r-- | include/linux/mlx5/driver.h | 1 |
2 files changed, 28 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c index 3975c726d35c..a92cf545bdaf 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/alloc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/alloc.c @@ -437,11 +437,34 @@ void mlx5_frag_buf_free(struct mlx5_core_dev *dev, struct mlx5_frag_buf *buf) } EXPORT_SYMBOL_GPL(mlx5_frag_buf_free); +static int mlx5_db_dma_pools_debugfs_show(struct seq_file *file, void *priv) +{ + struct mlx5_core_dev *dev = file->private; + int node; + + mlx5_dma_pools_debugfs_print_header(file); + + for_each_node_state(node, N_POSSIBLE) { + struct mlx5_dma_pool *pool = dev->priv.db_node_pools[node]; + + if (!pool) + continue; + + mlx5_dma_pool_debugfs_stats_print(file, pool); + } + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(mlx5_db_dma_pools_debugfs); + void mlx5_db_pools_cleanup(struct mlx5_core_dev *dev) { struct mlx5_priv *priv = &dev->priv; int node; + debugfs_remove(priv->dbg.db_dma_pools_debugfs); + priv->dbg.db_dma_pools_debugfs = NULL; + for_each_node_state(node, N_POSSIBLE) if (priv->db_node_pools[node]) mlx5_dma_pool_destroy(priv->db_node_pools[node]); @@ -471,6 +494,10 @@ int mlx5_db_pools_init(struct mlx5_core_dev *dev) priv->db_node_pools[node] = pool; } + priv->dbg.db_dma_pools_debugfs = + debugfs_create_file("db_dma_pools", 0444, priv->dbg.dbg_root, + dev, &mlx5_db_dma_pools_debugfs_fops); + return 0; } diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index 2c56bb1d676d..83d0a83bbfbc 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h @@ -548,6 +548,7 @@ struct mlx5_debugfs_entries { struct dentry *cq_debugfs; struct dentry *cmdif_debugfs; struct dentry *frag_buf_dma_pools_debugfs; + struct dentry *db_dma_pools_debugfs; struct dentry *pages_debugfs; struct dentry *lag_debugfs; }; |
