Daniel Wagner 264716
From: James Smart <jsmart2021@gmail.com>
Daniel Wagner 264716
Date: Fri, 3 Dec 2021 16:26:43 -0800
Daniel Wagner 264716
Subject: scsi: lpfc: Add additional debugfs support for CMF
Daniel Wagner 264716
Patch-mainline: Queued in subsystem maintainer repository
Daniel Wagner 264716
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git
Daniel Wagner 264716
Git-commit: 6014a2468f0e49194f612b1f09f99eacee0a409a
Daniel Wagner 264716
References: bsc1192145
Daniel Wagner 264716
Daniel Wagner 264716
Dump raw CMF parameter information in debugfs cgn_buffer.
Daniel Wagner 264716
Daniel Wagner 264716
Link: https://lore.kernel.org/r/20211204002644.116455-9-jsmart2021@gmail.com
Daniel Wagner 264716
Co-developed-by: Justin Tee <justin.tee@broadcom.com>
Daniel Wagner 264716
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Daniel Wagner 264716
Signed-off-by: James Smart <jsmart2021@gmail.com>
Daniel Wagner 264716
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Daniel Wagner 264716
Acked-by: Daniel Wagner <dwagner@suse.de>
Daniel Wagner 264716
---
Daniel Wagner 264716
 drivers/scsi/lpfc/lpfc_debugfs.c |   13 ++++++++++++-
Daniel Wagner 264716
 1 file changed, 12 insertions(+), 1 deletion(-)
Daniel Wagner 264716
Daniel Wagner 264716
--- a/drivers/scsi/lpfc/lpfc_debugfs.c
Daniel Wagner 264716
+++ b/drivers/scsi/lpfc/lpfc_debugfs.c
Daniel Wagner 264716
@@ -5491,7 +5491,7 @@ lpfc_cgn_buffer_read(struct file *file,
Daniel Wagner 264716
 		if (len > (LPFC_CGN_BUF_SIZE - LPFC_DEBUG_OUT_LINE_SZ)) {
Daniel Wagner 264716
 			len += scnprintf(buffer + len, LPFC_CGN_BUF_SIZE - len,
Daniel Wagner 264716
 					 "Truncated . . .\n");
Daniel Wagner 264716
-			break;
Daniel Wagner 264716
+			goto out;
Daniel Wagner 264716
 		}
Daniel Wagner 264716
 		len += scnprintf(buffer + len, LPFC_CGN_BUF_SIZE - len,
Daniel Wagner 264716
 				 "%03x: %08x %08x %08x %08x "
Daniel Wagner 264716
@@ -5502,6 +5502,17 @@ lpfc_cgn_buffer_read(struct file *file,
Daniel Wagner 264716
 		cnt += 32;
Daniel Wagner 264716
 		ptr += 8;
Daniel Wagner 264716
 	}
Daniel Wagner 264716
+	if (len > (LPFC_CGN_BUF_SIZE - LPFC_DEBUG_OUT_LINE_SZ)) {
Daniel Wagner 264716
+		len += scnprintf(buffer + len, LPFC_CGN_BUF_SIZE - len,
Daniel Wagner 264716
+				 "Truncated . . .\n");
Daniel Wagner 264716
+		goto out;
Daniel Wagner 264716
+	}
Daniel Wagner 264716
+	len += scnprintf(buffer + len, LPFC_CGN_BUF_SIZE - len,
Daniel Wagner 264716
+			 "Parameter Data\n");
Daniel Wagner 264716
+	ptr = (uint32_t *)&phba->cgn_p;
Daniel Wagner 264716
+	len += scnprintf(buffer + len, LPFC_CGN_BUF_SIZE - len,
Daniel Wagner 264716
+			 "%08x %08x %08x %08x\n",
Daniel Wagner 264716
+			 *ptr, *(ptr + 1), *(ptr + 2), *(ptr + 3));
Daniel Wagner 264716
 out:
Daniel Wagner 264716
 	return simple_read_from_buffer(buf, nbytes, ppos, buffer, len);
Daniel Wagner 264716
 }