133 lines
5.1 KiB
Diff
133 lines
5.1 KiB
Diff
From df452ec00576ff7201a4234b32bec1d760799ca7 Mon Sep 17 00:00:00 2001
|
|
From: Luo Jiaxing <luojiaxing@huawei.com>
|
|
Date: Thu, 24 Oct 2019 22:08:18 +0800
|
|
Subject: [PATCH 031/108] scsi: hisi_sas: Add debugfs file structure for ITCT
|
|
|
|
mainline inclusion
|
|
from mainline-v5.5-rc1
|
|
commit 0161d55f23a1e020e5e6892177caf92a61e5c161
|
|
category: feature
|
|
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I8F81L
|
|
|
|
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0161d55f23a1e020e5e6892177caf92a61e5c161
|
|
|
|
----------------------------------------------------------------------
|
|
|
|
Create a file structure which was used to save the memory address for ITCT
|
|
at debugfs. This structure is bound to the corresponding debugfs file, it
|
|
can help callback function of debugfs file to get what it needs.
|
|
|
|
Link: https://lore.kernel.org/r/1571926105-74636-12-git-send-email-john.garry@huawei.com
|
|
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>
|
|
Signed-off-by: YunYi Yang <yangyunyi2@huawei.com>
|
|
|
|
Conflicts:
|
|
drivers/scsi/hisi_sas/hisi_sas_main.c
|
|
---
|
|
drivers/scsi/hisi_sas/hisi_sas.h | 6 +++++-
|
|
drivers/scsi/hisi_sas/hisi_sas_main.c | 25 +++++++++++++------------
|
|
2 files changed, 18 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/drivers/scsi/hisi_sas/hisi_sas.h b/drivers/scsi/hisi_sas/hisi_sas.h
|
|
index efedf889b91c..97ca00c2ece4 100644
|
|
--- a/drivers/scsi/hisi_sas/hisi_sas.h
|
|
+++ b/drivers/scsi/hisi_sas/hisi_sas.h
|
|
@@ -391,6 +391,10 @@ struct hisi_sas_debugfs_iost {
|
|
struct hisi_sas_iost *iost;
|
|
};
|
|
|
|
+struct hisi_sas_debugfs_itct {
|
|
+ struct hisi_sas_itct *itct;
|
|
+};
|
|
+
|
|
struct hisi_hba {
|
|
/* This must be the first element, used by SHOST_TO_SAS_HA */
|
|
struct sas_ha_struct *p;
|
|
@@ -475,7 +479,7 @@ struct hisi_hba {
|
|
struct hisi_sas_debugfs_cq debugfs_cq[HISI_SAS_MAX_QUEUES];
|
|
struct hisi_sas_debugfs_dq debugfs_dq[HISI_SAS_MAX_QUEUES];
|
|
struct hisi_sas_debugfs_iost debugfs_iost;
|
|
- struct hisi_sas_itct *debugfs_itct;
|
|
+ struct hisi_sas_debugfs_itct debugfs_itct;
|
|
u64 *debugfs_iost_cache;
|
|
u64 debugfs_timestamp;
|
|
u64 *debugfs_itct_cache;
|
|
diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
|
|
index 4edecfc3e7b7..69efd0639964 100644
|
|
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
|
|
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
|
|
@@ -1630,7 +1630,7 @@ static int hisi_sas_controller_reset(struct hisi_hba *hisi_hba)
|
|
if (test_and_set_bit(HISI_SAS_RESET_BIT, &hisi_hba->flags))
|
|
return -EPERM;
|
|
|
|
- if (hisi_sas_debugfs_enable && hisi_hba->debugfs_itct)
|
|
+ if (hisi_sas_debugfs_enable && hisi_hba->debugfs_itct.itct)
|
|
hisi_hba->hw->debugfs_work_handler(&hisi_hba->debugfs_work);
|
|
|
|
dev_info(dev, "controller resetting...\n");
|
|
@@ -2131,7 +2131,7 @@ _hisi_sas_internal_task_abort(struct hisi_hba *hisi_hba,
|
|
|
|
/* Internal abort timed out */
|
|
if ((task->task_state_flags & SAS_TASK_STATE_ABORTED)) {
|
|
- if (hisi_sas_debugfs_enable && hisi_hba->debugfs_itct)
|
|
+ if (hisi_sas_debugfs_enable && hisi_hba->debugfs_itct.itct)
|
|
queue_work(hisi_hba->wq, &hisi_hba->debugfs_work);
|
|
|
|
if (!(task->task_state_flags & SAS_TASK_STATE_DONE)) {
|
|
@@ -2850,7 +2850,7 @@ static void hisi_sas_debugfs_snapshot_ras_reg(struct hisi_hba *hisi_hba)
|
|
static void hisi_sas_debugfs_snapshot_itct_reg(struct hisi_hba *hisi_hba)
|
|
{
|
|
void *cachebuf = hisi_hba->debugfs_itct_cache;
|
|
- void *databuf = hisi_hba->debugfs_itct;
|
|
+ void *databuf = hisi_hba->debugfs_itct.itct;
|
|
struct hisi_sas_itct *itct;
|
|
int i;
|
|
|
|
@@ -3582,13 +3582,13 @@ static const struct file_operations hisi_sas_debugfs_iost_cache_fops = {
|
|
static int hisi_sas_debugfs_itct_show(struct seq_file *s, void *p)
|
|
{
|
|
int i;
|
|
- struct hisi_hba *hisi_hba = s->private;
|
|
- struct hisi_sas_itct *debugfs_itct = hisi_hba->debugfs_itct;
|
|
+ struct hisi_sas_debugfs_itct *debugfs_itct = s->private;
|
|
+ struct hisi_sas_itct *itct = debugfs_itct->itct;
|
|
|
|
- for (i = 0; i < HISI_SAS_MAX_ITCT_ENTRIES; i++, debugfs_itct++) {
|
|
- __le64 *itct = &debugfs_itct->qw0;
|
|
+ for (i = 0; i < HISI_SAS_MAX_ITCT_ENTRIES; i++, itct++) {
|
|
+ __le64 *data = &itct->qw0;
|
|
|
|
- hisi_sas_show_row_64(s, i, sizeof(*debugfs_itct), itct);
|
|
+ hisi_sas_show_row_64(s, i, sizeof(*itct), data);
|
|
}
|
|
|
|
return 0;
|
|
@@ -3709,8 +3709,9 @@ static void hisi_sas_debugfs_create_files(struct hisi_hba *hisi_hba)
|
|
debugfs_create_file("iost_cache", 0400, dump_dentry, hisi_hba,
|
|
&hisi_sas_debugfs_iost_cache_fops);
|
|
|
|
- debugfs_create_file("itct", 0400, dump_dentry, hisi_hba,
|
|
- &hisi_sas_debugfs_itct_fops);
|
|
+ debugfs_create_file("itct", 0400, dump_dentry,
|
|
+ &hisi_hba->debugfs_itct,
|
|
+ &hisi_sas_debugfs_itct_fops);
|
|
|
|
debugfs_create_file("itct_cache", 0400, dump_dentry, hisi_hba,
|
|
&hisi_sas_debugfs_itct_cache_fops);
|
|
@@ -3926,8 +3927,8 @@ static int hisi_sas_debugfs_alloc(struct hisi_hba *hisi_hba)
|
|
/* New memory allocation must be locate before itct */
|
|
sz = HISI_SAS_MAX_ITCT_ENTRIES * sizeof(struct hisi_sas_itct);
|
|
|
|
- hisi_hba->debugfs_itct = devm_kmalloc(dev, sz, GFP_KERNEL);
|
|
- if (!hisi_hba->debugfs_itct)
|
|
+ hisi_hba->debugfs_itct.itct = devm_kmalloc(dev, sz, GFP_KERNEL);
|
|
+ if (!hisi_hba->debugfs_itct.itct)
|
|
goto fail;
|
|
|
|
return 0;
|
|
--
|
|
2.27.0
|
|
|