Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 3 Sep 2025 15:55:38 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: e26521574ecc - main - nvme: Always print the opcode hex and sct/sc hex values
Message-ID:  <202509031555.583Ftcpm058274@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=e26521574eccf1ca4b97d6b7614ea50888434354

commit e26521574eccf1ca4b97d6b7614ea50888434354
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2025-09-03 15:54:49 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2025-09-03 15:55:24 +0000

    nvme: Always print the opcode hex and sct/sc hex values
    
    While we can lookup the opcode and know exactly what we meant, sharing
    error messages with vendors can lead to some ambiguity. Go ahead and
    include the hex values for the error messages to aid in debugging.
    
    Sponsored by:           Netflix
    Reviewed by:            chuck
    Differential Revision:  https://reviews.freebsd.org/D52353
---
 sys/dev/nvme/nvme_util.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/sys/dev/nvme/nvme_util.c b/sys/dev/nvme/nvme_util.c
index 0a07653a7378..cb0ba729ac96 100644
--- a/sys/dev/nvme/nvme_util.c
+++ b/sys/dev/nvme/nvme_util.c
@@ -208,31 +208,33 @@ nvme_opcode_sbuf(bool admin, uint8_t opc, struct sbuf *sb)
 	if (s == NULL)
 		sbuf_printf(sb, "%s (%02x)", type, opc);
 	else
-		sbuf_printf(sb, "%s", s);
+		sbuf_printf(sb, "%s (%02x)", s, opc);
 }
 
 void
 nvme_sc_sbuf(const struct nvme_completion *cpl, struct sbuf *sb)
 {
 	const char *s, *type;
-	uint16_t status;
+	uint16_t status, sc, sct;
 
 	status = le16toh(cpl->status);
-	switch (NVME_STATUS_GET_SCT(status)) {
+	sc = NVME_STATUS_GET_SC(status);
+	sct = NVME_STATUS_GET_SCT(status);
+	switch (sct) {
 	case NVME_SCT_GENERIC:
-		s = generic_status[NVME_STATUS_GET_SC(status)];
+		s = generic_status[sc];
 		type = "GENERIC";
 		break;
 	case NVME_SCT_COMMAND_SPECIFIC:
-		s = command_specific_status[NVME_STATUS_GET_SC(status)];
+		s = command_specific_status[sc];
 		type = "COMMAND SPECIFIC";
 		break;
 	case NVME_SCT_MEDIA_ERROR:
-		s = media_error_status[NVME_STATUS_GET_SC(status)];
+		s = media_error_status[sc];
 		type = "MEDIA ERROR";
 		break;
 	case NVME_SCT_PATH_RELATED:
-		s = path_related_status[NVME_STATUS_GET_SC(status)];
+		s = path_related_status[sc];
 		type = "PATH RELATED";
 		break;
 	case NVME_SCT_VENDOR_SPECIFIC:
@@ -246,12 +248,11 @@ nvme_sc_sbuf(const struct nvme_completion *cpl, struct sbuf *sb)
 	}
 
 	if (type == NULL)
-		sbuf_printf(sb, "RESERVED (%02x/%02x)",
-		    NVME_STATUS_GET_SCT(status), NVME_STATUS_GET_SC(status));
+		sbuf_printf(sb, "RESERVED (%02x/%02x)", sct, sc);
 	else if (s == NULL)
-		sbuf_printf(sb, "%s (%02x)", type, NVME_STATUS_GET_SC(status));
+		sbuf_printf(sb, "%s (%02x/%02x)", type, sct, sc);
 	else
-		sbuf_printf(sb, "%s", s);
+		sbuf_printf(sb, "%s (%02x/%02x)", s, sct, sc);
 }
 
 void



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202509031555.583Ftcpm058274>