From nobody Fri Jun 6 01:32:36 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 4bD3j14FHjz5xDFL; Fri, 06 Jun 2025 01:32:37 +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 4bD3j11H4Yz4215; Fri, 06 Jun 2025 01:32:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749173557; 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=9LRpqPh7aMWYgD4x+DAkjHmEMP1Mz+g+HcAFZMwSikc=; b=ogg9HJi8BcnoKYM0SolqdOZcj0ad57mb3LIpA6il8wREtw26jdoYLd6yJdSsJEm4k1KvtL p3fjpu3IpCA3GgVdNdFJ+MmappSbxjTu9Qnvrex70hHMxOX+DD1sM66uTODzaiOR5FVp+8 TclgUo5MdyWibdQu3a75R6EAM79S4ogycK24od0fS7rMPP3VZhHq5Wy0R0oqjTh8S5d3wC id/ISMXe5rj6x0j2cAgdYiPQb9SCUYDm22tYmDdhy0KZo5Mqk8f9wM4xnWd7TJfDHjltSF SHYUvPhf+3Vx3I1lGcVVaAjhrSg0siPYsqkdUzuWlyZxgjldHy6q/Gq0A7glIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749173557; 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=9LRpqPh7aMWYgD4x+DAkjHmEMP1Mz+g+HcAFZMwSikc=; b=Zit/wWkpe00H+4WAp6FfAjHoXPcVde4vheWUKqqEt34U5h+Fehb6jVhOTJbH98obuDi31e EQ870Z0WS34eiUVu1IuljZINZ2PoVaEmka9p7fO5R5DubtMQ/iw+YpfsfvDFpPg/9H4eWX w2NdoDMQY2vYb6p8v21phIdTxLdkS2zhWsuq7exJklQ2T1W4B6NE/jYc+TYSVSY/XeuZ2B 0mauqXjynEICMrcW4vQL5tIMVWwPgA9/3ljULUP895854gwkuIVok8Xp8nhINZcPMny1xP 950hU+tbl4QsH1XdFN0l1NXWM7HxoVCEU9UH5u/mbzlIAwVOz9xa+09GgZmVKg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1749173557; a=rsa-sha256; cv=none; b=JSceaz6z0I2Pu6OkTAoXRHVj5r8HZiV7zqed80wm5fMtIGL/g09GqI0cGruFFgvEdFNsCl YemsYu5Z0kiQ7dREqZxABSwoxRyaq1yYyyRcBz2xwe6bUndqCkWGGBFrQfdxNDmFQy9lNQ peZTjmEWmIOIP+eIsK7FB1lIqIsBgLHH+un0xFdAgA4GUJYDjy7b+e0rX8imq6AfzJ2DI4 6dWjpS47hqF05ZBdFG2F5vGwYwKtoiU05V8IjSWGGqPkGGSMOR2Mr9w9/Iggkw+7nr0uFl pqXrXv0QwS4v7rcfomcW8Kai9znufOlHqrurx3bXEkNoMgAVBtuHtioPtJKtdw== 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 4bD3j10T1tzZd9; Fri, 06 Jun 2025 01:32:37 +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 5561WawX094188; Fri, 6 Jun 2025 01:32:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5561Wakc094185; Fri, 6 Jun 2025 01:32:36 GMT (envelope-from git) Date: Fri, 6 Jun 2025 01:32:36 GMT Message-Id: <202506060132.5561Wakc094185@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: 7b3ee39e73af - main - libcam: Include nvme opcode and status code routines from nvme_util.c 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: 7b3ee39e73af36f49f471f7900baeb98ac3504d0 Auto-Submitted: auto-generated The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=7b3ee39e73af36f49f471f7900baeb98ac3504d0 commit 7b3ee39e73af36f49f471f7900baeb98ac3504d0 Author: John Baldwin AuthorDate: 2025-06-06 01:28:38 +0000 Commit: John Baldwin CommitDate: 2025-06-06 01:28:38 +0000 libcam: Include nvme opcode and status code routines from nvme_util.c libcam in userspace also includes nvme_all.c which now depends on nvme_util.c, so add nvme_util.c to libcam's sources. This requires exporting the opcode and status code routines in nvme_util.c to userspace as well as the kernel. In turn, this means nvmecontrol now depends on libsbuf (which is already present in /lib). Reported by: viswhin, Jenkins Fixes: 60159a98a837 ("nvme: Move opcode and status code tables from base CAM to nvme_util.c") Sponsored by: Chelsio Communications --- lib/libcam/Makefile | 5 +++-- sbin/nvmecontrol/Makefile | 2 +- sys/dev/nvme/nvme.h | 13 ++++++++----- sys/dev/nvme/nvme_util.c | 4 ---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/libcam/Makefile b/lib/libcam/Makefile index c2f7b75bc878..d4efbbdf4d9b 100644 --- a/lib/libcam/Makefile +++ b/lib/libcam/Makefile @@ -3,7 +3,7 @@ PACKAGE= runtime LIB= cam SHLIBDIR?= /lib SRCS= camlib.c scsi_cmdparse.c scsi_all.c scsi_da.c scsi_sa.c cam.c \ - ata_all.c nvme_all.c smp_all.c scsi_wrap.c + ata_all.c nvme_all.c nvme_util.c smp_all.c scsi_wrap.c INCS= camlib.h scsi_wrap.h LIBADD= sbuf @@ -39,7 +39,8 @@ MLINKS+= cam.3 cam_open_device.3 \ ${SRCTOP}/sys/cam/ata \ ${SRCTOP}/sys/cam/nvme \ ${SRCTOP}/sys/cam/mmc \ - ${SRCTOP}/sys/cam/scsi + ${SRCTOP}/sys/cam/scsi \ + ${SRCTOP}/sys/dev/nvme CFLAGS+= -I${.CURDIR} -I${SRCTOP}/sys diff --git a/sbin/nvmecontrol/Makefile b/sbin/nvmecontrol/Makefile index 2abcd72dedfa..cf9c23548e36 100644 --- a/sbin/nvmecontrol/Makefile +++ b/sbin/nvmecontrol/Makefile @@ -30,7 +30,7 @@ SRCS+= telemetry.c CFLAGS+= -I${SRCTOP}/lib/libnvmf MAN= nvmecontrol.8 LDFLAGS+= -rdynamic -LIBADD+= nvmf util +LIBADD+= nvmf sbuf util SUBDIR= modules HAS_TESTS= SUBDIR.${MK_TESTS}+= tests diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h index 87f1da4d281d..17c5cdb4db87 100644 --- a/sys/dev/nvme/nvme.h +++ b/sys/dev/nvme/nvme.h @@ -35,6 +35,11 @@ #include #include +#ifndef _KERNEL +#include +#endif + +struct sbuf; #define NVME_PASSTHROUGH_CMD _IOWR('n', 0, struct nvme_pt_command) #define NVME_RESET_CONTROLLER _IO('n', 1) @@ -1901,12 +1906,14 @@ struct nvme_hmb_desc { #define nvme_completion_is_error(cpl) \ (NVME_STATUS_GET_SC((cpl)->status) != 0 || NVME_STATUS_GET_SCT((cpl)->status) != 0) +void nvme_cpl_sbuf(const struct nvme_completion *cpl, struct sbuf *sbuf); +void nvme_opcode_sbuf(bool admin, uint8_t opc, struct sbuf *sb); +void nvme_sc_sbuf(const struct nvme_completion *cpl, struct sbuf *sbuf); void nvme_strvis(uint8_t *dst, const uint8_t *src, int dstlen, int srclen); #ifdef _KERNEL struct bio; -struct sbuf; struct thread; struct nvme_namespace; @@ -1927,10 +1934,6 @@ enum nvme_namespace_flags { NVME_NS_FLUSH_SUPPORTED = 0x2, }; -void nvme_cpl_sbuf(const struct nvme_completion *cpl, struct sbuf *sbuf); -void nvme_opcode_sbuf(bool admin, uint8_t opc, struct sbuf *sb); -void nvme_sc_sbuf(const struct nvme_completion *cpl, struct sbuf *sbuf); - int nvme_ctrlr_passthrough_cmd(struct nvme_controller *ctrlr, struct nvme_pt_command *pt, uint32_t nsid, int is_user_buffer, diff --git a/sys/dev/nvme/nvme_util.c b/sys/dev/nvme/nvme_util.c index 050dfcfbef79..0a07653a7378 100644 --- a/sys/dev/nvme/nvme_util.c +++ b/sys/dev/nvme/nvme_util.c @@ -30,12 +30,9 @@ */ #include -#ifdef _KERNEL #include -#endif #include -#ifdef _KERNEL #define OPC_ENTRY(x) [NVME_OPC_ ## x] = #x static const char *admin_opcode[256] = { @@ -269,7 +266,6 @@ nvme_cpl_sbuf(const struct nvme_completion *cpl, struct sbuf *sb) if (NVME_STATUS_GET_DNR(status) != 0) sbuf_printf(sb, " DNR"); } -#endif void nvme_strvis(uint8_t *dst, const uint8_t *src, int dstlen, int srclen)