Commit bd49a4e7 authored by Yihang Li's avatar Yihang Li Committed by Slim6882
Browse files

[Backport]scsi: hisi_sas: Add latest_dump for the debugfs dump

mainline inclusion
from mainline-v6.12-rc1
commit cae668130c07f6873718b6f5b415d22e1008f2c9
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IBCN9K
CVE: NA
Reference: https://lore.kernel.org/r/20241008021822.2617339-14-liyihang9@huawei.com



------------------------------------------------------------------

Before that, after the user triggers the dump, the latest dump
information can be viewed in the directory with the maximum number in
the dump directory.

After this series patch, the driver creates all debugfs directories and
files during initialization. Therefore, users cannot know the directory
where the latest dump information is stored. So, add latest_dump file to
notify users where the latest dump information is stored.

Signed-off-by: default avatarYihang Li <liyihang9@huawei.com>
Link: https://lore.kernel.org/r/20241008021822.2617339-14-liyihang9@huawei.com


Reviewed-by: default avatarXingui Yang <yangxingui@huawei.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarSlim6882 <yangjunshuo@huawei.com>
parent 125512de
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -4878,6 +4878,19 @@ static void debugfs_bist_init_v3_hw(struct hisi_hba *hisi_hba)
	hisi_hba->debugfs_bist_linkrate = SAS_LINK_RATE_1_5_GBPS;
}

static int debugfs_dump_index_v3_hw_show(struct seq_file *s, void *p)
{
	int *debugfs_dump_index = s->private;

	if (*debugfs_dump_index > 0)
		seq_printf(s, "%d\n", *debugfs_dump_index - 1);
	else
		seq_puts(s, "dump not triggered\n");

	return 0;
}
DEFINE_SHOW_ATTRIBUTE(debugfs_dump_index_v3_hw);

static void debugfs_dump_init_v3_hw(struct hisi_hba *hisi_hba)
{
	int i;
@@ -4885,6 +4898,10 @@ static void debugfs_dump_init_v3_hw(struct hisi_hba *hisi_hba)
	hisi_hba->debugfs_dump_dentry =
			debugfs_create_dir("dump", hisi_hba->debugfs_dir);

	debugfs_create_file("latest_dump", 0400, hisi_hba->debugfs_dump_dentry,
			    &hisi_hba->debugfs_dump_index,
			    &debugfs_dump_index_v3_hw_fops);

	for (i = 0; i < hisi_sas_debugfs_dump_count; i++)
		debugfs_create_files_v3_hw(hisi_hba, i);
}