From nobody Sat Feb 22 00:25:44 2025 X-Original-To: dev-commits-src-all@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 4Z077r3Cjyz5pdqs; Sat, 22 Feb 2025 00:25:44 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Z077r1chpz3Wjk; Sat, 22 Feb 2025 00:25:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1740183944; 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=RaiqwBlcdZn6mnHH/FYmUHGjpxgXeCQ69TRPwVEaj3Y=; b=QIl5jxmLErblEIBxb7TfpElUDfoY2AHIzFCJJY0wwm0LKGo7FaUPwLzV6HEixJqX6pu3pS bmaKWl6+gXWnG08kmYk0z5yIy5++RQ71GznwodRpaGKU0u07QuMYsCLiEVifFo8SeCd2UP Xmo/fPA4s7TRnNmR4NKQGAtP42mrdSkrBIXBr5j+b7A0ZV0oc70Hax4MUIeS9MnFSZwDw3 leWVYk8cHi3aWaG0I/tI0Hr2rP2syhFIJK4g+OmccRbPuaUMMVqsUdarNjPL9sNKg9HVb6 7lVazbDhNBW1rSz81GoRixCNV3F24qUKq/n03M+svmYSfrtkeVdykXvTTfhBkQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1740183944; a=rsa-sha256; cv=none; b=NXdSSqX+aUD0z98o0+k/VylYZEwdFNDP3v/0/dU1Ft872fbkSbU3RHL3VNJ2zv+gSCQiD/ RHbvCqpY+MxjuudS33+uMxmNGKz2M9tpMDSGeQ7SRLdiASGC0YTMLtMtuiec0HyWg6kUu4 dt6lWvnQv5QUrsbhcwcVu5pFztshv1qzlJgZejxxsLmw7LY/rfk6naf+9Wdvt6Wg7uyO2A TxL9Uasz05fopmviDSLoKViZ4WBxASFrYmv90+n0cs3WtmvW68Ri+ULQvz129F8wIAeKSi sng21b1jB4Jx7B/HlJSwcTwFTAHsIhVzXEcrRjlbDeEHGhmz3czBaIJ/MLqplQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1740183944; 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=RaiqwBlcdZn6mnHH/FYmUHGjpxgXeCQ69TRPwVEaj3Y=; b=BIlY+bz2H/ySPcAyTlDk/1V+2jdpVQbaz+bkHnKRTZD9fprp0of59zwLxUwswMT+cbYRZR gqEOHruxLDB5LLFJBh+CK4IGEYCQNAbVqb7+Tk76hUjwLmip5fZ8U0A0lFCNgOxqoq8/bD gVdviIpynJn07wbNlECBTjYpIJfmPSsnIUxuSzUPQRK7OuUkcLKD/pwVzMHAzFEHJBRzK1 n0qD5tyuXVUczXNpe7i6EDJVjSFhh4s9Q86TiLTbOOyuTn7zyWOX5Fk9SoWXn2oBzzyoy9 zUR2Co1DeQXr5pOqkyjjgAhSvLdNaVhXSgpP9M9m1pgVegWJ6GG30gGRRZ2JeQ== 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 4Z077r1Cr3zlhw; Sat, 22 Feb 2025 00:25:44 +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 51M0PinJ094924; Sat, 22 Feb 2025 00:25:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51M0PiR6094921; Sat, 22 Feb 2025 00:25:44 GMT (envelope-from git) Date: Sat, 22 Feb 2025 00:25:44 GMT Message-Id: <202502220025.51M0PiR6094921@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 2b1460110ec0 - main - nvmecontrol: Add more keys for CA page (Additional smart data) List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 2b1460110ec0e991a7783a05005b94273bb9233a Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=2b1460110ec0e991a7783a05005b94273bb9233a commit 2b1460110ec0e991a7783a05005b94273bb9233a Author: Warner Losh AuthorDate: 2025-02-22 00:20:42 +0000 Commit: Warner Losh CommitDate: 2025-02-22 00:23:44 +0000 nvmecontrol: Add more keys for CA page (Additional smart data) Micron and Samsung also use this standard, though Micron is known to use a few different keys. Add the ones that public information say are the same among those the drives that have them. There's others, but either they aren't publicly documented in datasheets or nvme-cli code, or they vary betwen models and our code needs a fair amount of rework needed. Also print hex value for unknown keys. This allows scripts to more easily pick bytes out for those keys who have values that are encoded by packing multiple values into the 48-bit field. Sponsored by: Netflix --- sbin/nvmecontrol/modules/intel/intel.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/sbin/nvmecontrol/modules/intel/intel.c b/sbin/nvmecontrol/modules/intel/intel.c index c94fdb356608..4229a48e4153 100644 --- a/sbin/nvmecontrol/modules/intel/intel.c +++ b/sbin/nvmecontrol/modules/intel/intel.c @@ -118,6 +118,8 @@ print_intel_write_lat_log(const struct nvme_controller_data *cdata __unused, voi /* * Table 19. 5.4 SMART Attributes. Others also implement this and some extra data not documented. + * Note: different models implement the same key values to mean different things. To fix that, + * we'd need to index this to a vendor/device values. */ void print_intel_add_smart(const struct nvme_controller_data *cdata __unused, void *buf, uint32_t size __unused) @@ -138,11 +140,15 @@ print_intel_add_smart(const struct nvme_controller_data *cdata __unused, void *b { 0xe2, "Timed: Media Wear" }, { 0xe3, "Timed: Host Read %" }, { 0xe4, "Timed: Elapsed Time" }, + { 0xe7, "Lifetime Temperature" }, + { 0xe8, "Power" }, { 0xea, "Thermal Throttle Status" }, { 0xf0, "Retry Buffer Overflows" }, { 0xf3, "PLL Lock Loss Count" }, { 0xf4, "NAND Bytes Written" }, { 0xf5, "Host Bytes Written" }, + { 0xf9, "NAND GiB Written" }, + { 0xfa, "NAND GiB Read" }, }; printf("Additional SMART Data Log\n"); @@ -170,11 +176,19 @@ print_intel_add_smart(const struct nvme_controller_data *cdata __unused, void *b case 0xe2: printf("%-32s: %3d %.3f%%\n", name, normalized, raw / 1024.0); break; + case 0xe7: + printf("%-32s: %3d %#jx max: %dK min: %dK cur: %dK\n", name, normalized, + (uintmax_t)raw, le16dec(walker+5), le16dec(walker+7), le16dec(walker+9)); + break; + case 0xe8: + printf("%-32s: %3d %#jx max: %dW min: %dW cur: %dW\n", name, normalized, + (uintmax_t)raw, le16dec(walker+5), le16dec(walker+7), le16dec(walker+9)); + break; case 0xea: printf("%-32s: %3d %d%% %d times\n", name, normalized, walker[5], le32dec(walker+6)); break; default: - printf("%-32s: %3d %ju\n", name, normalized, (uintmax_t)raw); + printf("%-32s: %3d %ju %#jx\n", name, normalized, (uintmax_t)raw, (uintmax_t)raw); break; } walker += 12; @@ -190,6 +204,6 @@ NVME_LOGPAGE(intel_rlat, NVME_LOGPAGE(intel_wlat, INTEL_LOG_WRITE_LAT_LOG, "intel", "Write Latencies", print_intel_write_lat_log, DEFAULT_SIZE); -NVME_LOGPAGE(intel_smart, +NVME_LOGPAGE(intel_smart, /* Note: Samsung and Micron also use this */ INTEL_LOG_ADD_SMART, "intel", "Extra Health/SMART Data", print_intel_add_smart, DEFAULT_SIZE);