From nobody Wed Apr 17 03:33:44 2024 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 4VK62J3yGVz5HjR9; Wed, 17 Apr 2024 03:33: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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4VK62J2Ptkz4Qjq; Wed, 17 Apr 2024 03:33:44 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1713324824; 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=KDGRUuDVoMEfw4D5GvusSV3AccVVCC/pk2GMgW25D2c=; b=cw94RSUMUYzmKGJCSWJVUICBaBSyXsBKTzpLz/SBmprxlGTM++qYtkgQd0nRV1t1i/c6MU pYOMS/9yrgXIn7mv8C4Jjb6SmFz+14Daa0nkc2cqyBMF14gO0VcyVXu3IXeJzu2wC+mmF9 T3Quj8Fx+fLF/U40BfPEOvXJcZ61OHCa/x6O2TFhUgs4G9sdPvO0G5KtKlDKehHx77uEEd ShBuxjbzRMmVgWxu2pxuhq+BGz9juqwUXgbiIli0yJ4J7WwwYX7JqX1k1IKLajnhCzcXff EBOrIU23nLainepez/kjGZNipzFX4yQ3vgntiO/T7lHMvTxfEftbiB8XqiJtCg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1713324824; a=rsa-sha256; cv=none; b=O3ZlnBoT6/e+WqQTwZFy0ap42f5eBrVhD2gCd+VMr13DPcX3vGx0FP2aK15kKhucPbhyP5 OG1mAPR7erBna5IqdrFY8wgSUpP90rm2GOomJvWi2hNAnOZYOPddXSFAn0KPPSMFlpX6Yg pXnojYQpYx7ty8dOmhWClkfZyglsp70b2VXuFu1dtFXRrRKouTqayEu5G4pMMtSb3SnT5Q onazvZ1n5KkIV7ZmKA/diKoVuLR28epb9c4GPeVcyDX2udIt12ajxlYLRcsdctbQmq8+P+ mzIOSTZYUJwN+EENe9cZJ7Igv/z9LWpz9IGvZYDIFFDkQF5ESMSforP7+Voi0Q== 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=1713324824; 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=KDGRUuDVoMEfw4D5GvusSV3AccVVCC/pk2GMgW25D2c=; b=qUikLBbkk9ylIuhfGHFIwV7Lh4NMtOb3xz/BjpnejxZFqHsRiOTGGhffqiHW9MaIV6JJHn gZpZ61IPABU5NsgLGNG4ZeTWYM3kBVYNY2UrQtuVlSSxj24KDZKuGyoBTdAO8NqX0Z4nVo EW3WLVhLyPExU0wduFD9gnPXoNm8MC58FlzEXS1ehQp33kMNtlFEV7UjiyHSw7uYf68PL5 E/o+57oswS/wr2s+CnPg4kak4mHYhZpmDH1SN+g5wlK6TpS5HNbCqqcw5+zTUGgv6IHFj0 Jx4RBbPnvP4mQ1+avvQ5stIThZaiPPrWozQRoMD8zsbbP1SdDrevLFWaqPwGYw== 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 4VK62J211cz19Sp; Wed, 17 Apr 2024 03:33:44 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 43H3XiD5086765; Wed, 17 Apr 2024 03:33:44 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 43H3XiCH086762; Wed, 17 Apr 2024 03:33:44 GMT (envelope-from git) Date: Wed, 17 Apr 2024 03:33:44 GMT Message-Id: <202404170333.43H3XiCH086762@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: 1c4b7effa7f9 - main - nvmecontrol: Fix to128 for big endian targets 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: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1c4b7effa7f9df64bf72c6291b4719cffb2ffe22 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=1c4b7effa7f9df64bf72c6291b4719cffb2ffe22 commit 1c4b7effa7f9df64bf72c6291b4719cffb2ffe22 Author: Warner Losh AuthorDate: 2024-04-16 22:35:59 +0000 Commit: Warner Losh CommitDate: 2024-04-17 03:30:18 +0000 nvmecontrol: Fix to128 for big endian targets The source is always 128-bits in little endian format. For big endian hosts, we have to convert, or we print bogus numbers. Sponsored by: Netflix Reviewed by: chuck Differential Revision: https://reviews.freebsd.org/D44651 --- sbin/nvmecontrol/Makefile | 1 - sbin/nvmecontrol/nvmecontrol.h | 27 +++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/sbin/nvmecontrol/Makefile b/sbin/nvmecontrol/Makefile index facb5f09835d..e3d363b123ed 100644 --- a/sbin/nvmecontrol/Makefile +++ b/sbin/nvmecontrol/Makefile @@ -1,4 +1,3 @@ - .include PACKAGE=nvme-tools diff --git a/sbin/nvmecontrol/nvmecontrol.h b/sbin/nvmecontrol/nvmecontrol.h index ed331327ae9e..4187c9bee432 100644 --- a/sbin/nvmecontrol/nvmecontrol.h +++ b/sbin/nvmecontrol/nvmecontrol.h @@ -91,22 +91,33 @@ void print_intel_add_smart(const struct nvme_controller_data *cdata __unused, vo /* Utility Routines */ /* - * 128-bit integer augments to standard values. On i386 this - * doesn't exist, so we use 64-bit values. So, on 32-bit systems, - * you'll get truncated values until someone implement 128bit - * ints in software. + * C23 supports 128-bit integers via _BitInt(128). clang 16 and gcc 13 support + * this. Older compilers will support 128-bit ints on 64-bit + * platforms. Otherwise we truncate this to 64-bit on 32-bit systems with older + * compilers. We also check for > C18 instead of >= C23 because clang 17 was + * released before the the __STDC_VERSION__ was defined. */ #define UINT128_DIG 39 -#ifdef __ILP32__ -typedef uint64_t uint128_t; -#else +#if __STDC_VERSION__ >= 202311L +typedef unsigned _BitInt(128) uint128_t; +#elif defined(__SIZEOF_INT128__) typedef __uint128_t uint128_t; +#else +typedef uint64_t uint128_t; #endif static __inline uint128_t to128(void *p) { - return *(uint128_t *)p; +#if __STDC_VERSION__ >= 202311L || defined(__SIZEOF_INT128__) + uint64_t lo, hi; + + lo = le64dec(p); + hi = le64dec((const char *)p + 8); + return ((uint128_t)hi << 64 | lo); +#else + return (le64dec(p)); +#endif } uint64_t le48dec(const void *pp);