Skip to content

Commit

Permalink
scsi: hisi_sas: Add debugfs IOST file and add file operations
Browse files Browse the repository at this point in the history
This patch create debugfs file for IOST and add file operations.

Signed-off-by: Luo Jiaxing <luojiaxing@huawei.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
  • Loading branch information
Luo Jiaxing authored and Martin K. Petersen committed Jan 9, 2019
1 parent 148e379 commit 1afb4b8
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions drivers/scsi/hisi_sas/hisi_sas_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2630,6 +2630,24 @@ static const struct file_operations hisi_sas_debugfs_port_fops = {
.owner = THIS_MODULE,
};

static int hisi_sas_show_row_64(struct seq_file *s, int index,
int sz, u64 *ptr)
{
int i;

/* completion header size not fixed per HW version */
seq_printf(s, "index %04d:\n\t", index);
for (i = 1; i <= sz / 8; i++, ptr++) {
seq_printf(s, " 0x%016llx", le64_to_cpu(*ptr));
if (!(i % 2))
seq_puts(s, "\n\t");
}

seq_puts(s, "\n");

return 0;
}

static int hisi_sas_show_row_32(struct seq_file *s, int index,
int sz, u32 *ptr)
{
Expand Down Expand Up @@ -2722,6 +2740,35 @@ static const struct file_operations hisi_sas_debugfs_dq_fops = {
.owner = THIS_MODULE,
};

static int hisi_sas_debugfs_iost_show(struct seq_file *s, void *p)
{
struct hisi_hba *hisi_hba = s->private;
struct hisi_sas_iost *debugfs_iost = hisi_hba->debugfs_iost;
int i, ret, max_command_entries = hisi_hba->hw->max_command_entries;

for (i = 0; i < max_command_entries; i++, debugfs_iost++) {
ret = hisi_sas_show_row_64(s, i, sizeof(*debugfs_iost),
(u64 *)debugfs_iost);
if (ret)
return ret;
}

return 0;
}

static int hisi_sas_debugfs_iost_open(struct inode *inode, struct file *filp)
{
return single_open(filp, hisi_sas_debugfs_iost_show, inode->i_private);
}

static const struct file_operations hisi_sas_debugfs_iost_fops = {
.open = hisi_sas_debugfs_iost_open,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
.owner = THIS_MODULE,
};

static void hisi_sas_debugfs_create_files(struct hisi_hba *hisi_hba)
{
struct dentry *dump_dentry;
Expand Down Expand Up @@ -2783,6 +2830,10 @@ static void hisi_sas_debugfs_create_files(struct hisi_hba *hisi_hba)
goto fail;
}

if (!debugfs_create_file("iost", 0400, dump_dentry, hisi_hba,
&hisi_sas_debugfs_iost_fops))
goto fail;

return;
fail:
debugfs_remove_recursive(hisi_hba->debugfs_dir);
Expand Down

0 comments on commit 1afb4b8

Please sign in to comment.