From nobody Mon Jun 2 15:13:20 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4b9y5r5c3pz5wx7s; Mon, 02 Jun 2025 15:13:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4b9y5r2Wb1z40sD; Mon, 02 Jun 2025 15:13:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748877200; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QhCZ5Mq2WvelkDkvqqBZ5PeuYXuTBUTsmG7K71vFkDs=; b=waluwrvHzA/WRS9tXE4v0qIi5tnDIztz0HyHNLiatTMjRbh0EfFfNFzjMwWEftera5NT6P ePITZyzt3xIqFCBSG/zEdIP04VRRyAnAjpVZR6q0xsYvfd7lm09a7KM4biTVVv1BkavpcC cAgtOT/hOqcrI/eDKB/JqfnkhCc386QWkvTr+uzafNwMX8gBP401mJl8xngNB3AGOu/bRN zfn2a6zBVr/JzC7SvLNdzxfGjpB6YIv8cQ3ISfiKH4tp8SwErA6VS47OcfFU6Vg0Dtpx6d xEf5TfVLR0HfwEa+MXWHpVgs0pqONDkKRCXf43E6SF30zh+Kt4MEIBlznwx7BA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748877200; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=QhCZ5Mq2WvelkDkvqqBZ5PeuYXuTBUTsmG7K71vFkDs=; b=cOqdc5vTWOoK/GFS2KLIX6AzxldOntvdZbsnOb3tvE+DwicudA8jFjYQ47EKFG1LMHRWUg 50/qiI46KZOD/NepqE60EoMYaWgWaTJGvMVTrH+jx/7eMLY9w8ee8qF5nQq2au4sLHSNBO bvUtTIpSEkyR1GGHzF/DgZXUSV5k7frgwNCKuoUE4KMOnVBl4Canzw7iTh0LbmR616d0uf Qy4kVZDqZaCJEn/wyq5EXeNH73HrgNXFtLKH4xZB8+6F4loTmwtoq77YMpYAIndJljV1sx Lrnnb8lGc6im1YS26kiHtEXcHKeZTMsndTZg26wrrujbp3ToGfAhDrY29f2Yfw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1748877200; a=rsa-sha256; cv=none; b=SGpf99hatr8YrTnJf9Z0vRAirg7rbdAIYLCxcT9A1u2/5u/KJgV5ADH33K4HZUNm0ld+qq /2RW9Zw25lDb+QSDPi/4i5yeMJ+jIC96BlJoyCo2dolzabCf9p7xXoWd8n0I0rLoHUVUAd 2ERrWaqhJNZxVOSraSkvD56KRB5u7eLsIFgsaSH4JE2AUx0zEB8V2H74fYre1SvPhVW7DF VadBJnt/HttD4eNunFXN2akw7XTmCGu1l4T+tG4llkF6AFLZqMBigwf4z4w349lP1eIJYC CRVPQ6UTAcNmNJzWXrNHrKP9eA74E2pGwGpdyf+aIbg9BK/WtL15cnQZ/Wy7ZA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4b9y5r1nq5z1CpD; Mon, 02 Jun 2025 15:13:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 552FDK4e019660; Mon, 2 Jun 2025 15:13:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 552FDK8p019657; Mon, 2 Jun 2025 15:13:20 GMT (envelope-from git) Date: Mon, 2 Jun 2025 15:13:20 GMT Message-Id: <202506021513.552FDK8p019657@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 353cfc483dd2 - main - cam nvme: Decode NVMe status for NVMe command failures List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 353cfc483dd246091c92b22f214fd16eb5de4e3b Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=353cfc483dd246091c92b22f214fd16eb5de4e3b commit 353cfc483dd246091c92b22f214fd16eb5de4e3b Author: John Baldwin AuthorDate: 2025-06-02 15:05:43 +0000 Commit: John Baldwin CommitDate: 2025-06-02 15:05:43 +0000 cam nvme: Decode NVMe status for NVMe command failures Similar to ATA and SCSI, log the command status (in this case the status code from the CQE) on the console for failed NVMe commands. Reviewed by: imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D50632 --- sys/cam/cam.c | 28 ++++++++++++++++++++++++++++ sys/cam/cam.h | 5 +++++ 2 files changed, 33 insertions(+) diff --git a/sys/cam/cam.c b/sys/cam/cam.c index d9cff3468da0..917197542edc 100644 --- a/sys/cam/cam.c +++ b/sys/cam/cam.c @@ -380,6 +380,20 @@ cam_error_string(struct cam_device *device, union ccb *ccb, char *str, break; } break; + case XPT_NVME_IO: + case XPT_NVME_ADMIN: + switch (proto_flags & CAM_EPF_LEVEL_MASK) { + case CAM_EPF_NONE: + break; + case CAM_EPF_ALL: + case CAM_EPF_NORMAL: + case CAM_EPF_MINIMAL: + proto_flags |= CAM_ENF_PRINT_STATUS; + /* FALLTHROUGH */ + default: + break; + } + break; default: break; } @@ -494,6 +508,20 @@ cam_error_string(struct cam_device *device, union ccb *ccb, char *str, ccb->smpio.smp_response[2]); } /* There is no SMP equivalent to SCSI sense. */ + break; + case XPT_NVME_IO: + case XPT_NVME_ADMIN: + if ((ccb->ccb_h.status & CAM_STATUS_MASK) != + CAM_NVME_STATUS_ERROR) + break; + + if (proto_flags & CAM_ESF_PRINT_STATUS) { + sbuf_cat(&sb, path_str); + sbuf_cat(&sb, "NVMe status: "); + nvme_status_sbuf(&ccb->nvmeio, &sb); + sbuf_putc(&sb, '\n'); + } + break; default: break; diff --git a/sys/cam/cam.h b/sys/cam/cam.h index 963c9798ddbc..83c1fc7b35ca 100644 --- a/sys/cam/cam.h +++ b/sys/cam/cam.h @@ -350,6 +350,11 @@ typedef enum { CAM_EAF_PRINT_RESULT = 0x20 } cam_error_ata_flags; +typedef enum { + CAM_ENF_PRINT_NONE = 0x00, + CAM_ENF_PRINT_STATUS = 0x10, +} cam_error_nvme_flags; + typedef enum { CAM_STRVIS_FLAG_NONE = 0x00, CAM_STRVIS_FLAG_NONASCII_MASK = 0x03,