mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-24 10:06:37 -05:00
RDMA/hns: Add debugfs to hns RoCE
Add debugfs to hns RoCE. This patch only adds an empty directory "hns_roce" to debugs root directory. Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com> Link: https://lore.kernel.org/r/20231114123449.1106162-3-huangjunxian6@hisilicon.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
committed by
Leon Romanovsky
parent
f45b83ad39
commit
ca7ad04cd5
@@ -7,7 +7,8 @@ ccflags-y := -I $(srctree)/drivers/net/ethernet/hisilicon/hns3
|
||||
|
||||
hns-roce-objs := hns_roce_main.o hns_roce_cmd.o hns_roce_pd.o \
|
||||
hns_roce_ah.o hns_roce_hem.o hns_roce_mr.o hns_roce_qp.o \
|
||||
hns_roce_cq.o hns_roce_alloc.o hns_roce_db.o hns_roce_srq.o hns_roce_restrack.o
|
||||
hns_roce_cq.o hns_roce_alloc.o hns_roce_db.o hns_roce_srq.o hns_roce_restrack.o \
|
||||
hns_roce_debugfs.o
|
||||
|
||||
ifdef CONFIG_INFINIBAND_HNS_HIP08
|
||||
hns-roce-hw-v2-objs := hns_roce_hw_v2.o $(hns-roce-objs)
|
||||
|
||||
63
drivers/infiniband/hw/hns/hns_roce_debugfs.c
Normal file
63
drivers/infiniband/hw/hns/hns_roce_debugfs.c
Normal file
@@ -0,0 +1,63 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* Copyright (c) 2023 Hisilicon Limited.
|
||||
*/
|
||||
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/device.h>
|
||||
|
||||
#include "hns_roce_device.h"
|
||||
|
||||
static struct dentry *hns_roce_dbgfs_root;
|
||||
|
||||
static int hns_debugfs_seqfile_open(struct inode *inode, struct file *f)
|
||||
{
|
||||
struct hns_debugfs_seqfile *seqfile = inode->i_private;
|
||||
|
||||
return single_open(f, seqfile->read, seqfile->data);
|
||||
}
|
||||
|
||||
static const struct file_operations hns_debugfs_seqfile_fops = {
|
||||
.owner = THIS_MODULE,
|
||||
.open = hns_debugfs_seqfile_open,
|
||||
.release = single_release,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek
|
||||
};
|
||||
|
||||
static void init_debugfs_seqfile(struct hns_debugfs_seqfile *seq,
|
||||
const char *name, struct dentry *parent,
|
||||
int (*read_fn)(struct seq_file *, void *),
|
||||
void *data)
|
||||
{
|
||||
debugfs_create_file(name, 0400, parent, seq, &hns_debugfs_seqfile_fops);
|
||||
|
||||
seq->read = read_fn;
|
||||
seq->data = data;
|
||||
}
|
||||
|
||||
/* debugfs for device */
|
||||
void hns_roce_register_debugfs(struct hns_roce_dev *hr_dev)
|
||||
{
|
||||
struct hns_roce_dev_debugfs *dbgfs = &hr_dev->dbgfs;
|
||||
|
||||
dbgfs->root = debugfs_create_dir(dev_name(&hr_dev->ib_dev.dev),
|
||||
hns_roce_dbgfs_root);
|
||||
}
|
||||
|
||||
void hns_roce_unregister_debugfs(struct hns_roce_dev *hr_dev)
|
||||
{
|
||||
debugfs_remove_recursive(hr_dev->dbgfs.root);
|
||||
}
|
||||
|
||||
/* debugfs for hns module */
|
||||
void hns_roce_init_debugfs(void)
|
||||
{
|
||||
hns_roce_dbgfs_root = debugfs_create_dir("hns_roce", NULL);
|
||||
}
|
||||
|
||||
void hns_roce_cleanup_debugfs(void)
|
||||
{
|
||||
debugfs_remove_recursive(hns_roce_dbgfs_root);
|
||||
hns_roce_dbgfs_root = NULL;
|
||||
}
|
||||
27
drivers/infiniband/hw/hns/hns_roce_debugfs.h
Normal file
27
drivers/infiniband/hw/hns/hns_roce_debugfs.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright (c) 2023 Hisilicon Limited.
|
||||
*/
|
||||
|
||||
#ifndef __HNS_ROCE_DEBUGFS_H
|
||||
#define __HNS_ROCE_DEBUGFS_H
|
||||
|
||||
/* debugfs seqfile */
|
||||
struct hns_debugfs_seqfile {
|
||||
int (*read)(struct seq_file *seq, void *data);
|
||||
void *data;
|
||||
};
|
||||
|
||||
/* Debugfs for device */
|
||||
struct hns_roce_dev_debugfs {
|
||||
struct dentry *root;
|
||||
};
|
||||
|
||||
struct hns_roce_dev;
|
||||
|
||||
void hns_roce_init_debugfs(void);
|
||||
void hns_roce_cleanup_debugfs(void);
|
||||
void hns_roce_register_debugfs(struct hns_roce_dev *hr_dev);
|
||||
void hns_roce_unregister_debugfs(struct hns_roce_dev *hr_dev);
|
||||
|
||||
#endif
|
||||
@@ -35,6 +35,7 @@
|
||||
|
||||
#include <rdma/ib_verbs.h>
|
||||
#include <rdma/hns-abi.h>
|
||||
#include "hns_roce_debugfs.h"
|
||||
|
||||
#define PCI_REVISION_ID_HIP08 0x21
|
||||
#define PCI_REVISION_ID_HIP09 0x30
|
||||
@@ -979,6 +980,7 @@ struct hns_roce_dev {
|
||||
u32 is_vf;
|
||||
u32 cong_algo_tmpl_id;
|
||||
u64 dwqe_page;
|
||||
struct hns_roce_dev_debugfs dbgfs;
|
||||
};
|
||||
|
||||
static inline struct hns_roce_dev *to_hr_dev(struct ib_device *ib_dev)
|
||||
|
||||
@@ -6958,12 +6958,14 @@ static struct hnae3_client hns_roce_hw_v2_client = {
|
||||
|
||||
static int __init hns_roce_hw_v2_init(void)
|
||||
{
|
||||
hns_roce_init_debugfs();
|
||||
return hnae3_register_client(&hns_roce_hw_v2_client);
|
||||
}
|
||||
|
||||
static void __exit hns_roce_hw_v2_exit(void)
|
||||
{
|
||||
hnae3_unregister_client(&hns_roce_hw_v2_client);
|
||||
hns_roce_cleanup_debugfs();
|
||||
}
|
||||
|
||||
module_init(hns_roce_hw_v2_init);
|
||||
|
||||
@@ -1079,6 +1079,8 @@ int hns_roce_init(struct hns_roce_dev *hr_dev)
|
||||
if (ret)
|
||||
goto error_failed_register_device;
|
||||
|
||||
hns_roce_register_debugfs(hr_dev);
|
||||
|
||||
return 0;
|
||||
|
||||
error_failed_register_device:
|
||||
@@ -1108,6 +1110,7 @@ int hns_roce_init(struct hns_roce_dev *hr_dev)
|
||||
|
||||
void hns_roce_exit(struct hns_roce_dev *hr_dev)
|
||||
{
|
||||
hns_roce_unregister_debugfs(hr_dev);
|
||||
hns_roce_unregister_device(hr_dev);
|
||||
|
||||
if (hr_dev->hw->hw_exit)
|
||||
|
||||
Reference in New Issue
Block a user