From nobody Tue Oct 06 07:50:54 2026 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 4hzT2l2KbBz6cW1w for ; Tue, 06 Oct 2026 07:50:55 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hzT2k5YZfz4G4r for ; Tue, 06 Oct 2026 07:50:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273054; 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=cLexe1UsXRWK8cHU/44gq7ZToNmvRHU4GJ07AptYk8s=; b=BtSEE2gs+ebPcBzLdcDCdsFlbqFsQq9rhfYw76GsIXwUOGUqmwE6kZJb1HzF/O7MLFfot1 Uee7+ewpci3FmdaXGhCZnGlmLqduUFGpp24cPS9vTbvAVafXql1PyMysJHuyiKMUSm8omw JxdHFuR03Uhs7K9Fw5wOPK6rI+OAtUA467PfssarbRp2/3jCMauKjr8vvjZjw00GH3RCAC 78LgyaSfRboUfyzDkj6vN8c9+SffxEGzB0hyuebhGWH7BxNCbL/88hNw77wTnlAi0lSJ4s Oqt3mC/VPQDJpcVrAL4lnkPU7V31+zBDcs0PegNUItKwfr1pdWfRi+uj/4Ov5Q== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791273054; b=Fgp27AJCXC1y45mhFoI31ASiOX/XatLGCt3OMno1xGRZnn7ng0rKDW7JnBiRB1cAnuQYrP XWK+5aoTT5mizZMG19EiYnOpOxWlfzXFc7b/WkRBZfiAKE8RGyQy6QT+NWbC8i58w8YYOu 53dEnj8sww4YJOhTS8pz++nO6aV7gkPvE9WQyzcpo19jFixqbWEjh9jETuFrrBZkeFckA8 CraSJbxXB7xqG4FSWMTQgj82Cc8BPFf1n813loKxq0AJtH5sLR36b8R5qyp3S8jEppcJm7 HnPnEcZxMqnbKH7P7rgIhvIP1Z1nTDgF2NBsSVRCPzqqSs3FsuKtFVgCi4mHPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791273054; 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=cLexe1UsXRWK8cHU/44gq7ZToNmvRHU4GJ07AptYk8s=; b=Jg4LtLnp1xGcoIkYe9vfCm57SWo51QrM2ZHQtNKSqBjugP6mB14QlSQsVbydu2BFS31lin yCDqUYscjlciLzeAFXQTsCwNhWPbtbU+gJ3bUc4opw9WqdUvgkcnXGwa1dfazmNQ/kIJ9a /CTrcb/delHFzl1+JTAAv56WsFkdlUl/X6ub4mgd5kFe704M5fo49UzO3Ezji/jlVIzFaC SONz5uNBbRZ4268zMhb5sQEjW7WQSRp6vNFkANo7GOxwOpkc9BOF/KCMmOBqYyn2utLZAZ YPBC0GYuXPVSaUjnONlkWkXHO8uBQW6TRrwwlv1gc/C4xUKrLRhlQeDvzHYRLQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hzT2k4Yv8zxnx for ; Tue, 06 Oct 2026 07:50:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 45579 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 06 Oct 2026 07:50:54 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Jaeyoon Choi Subject: git: 5e2782d26567 - stable/15 - cam/scsi: Restore scsi_start_stop() and add scsi_start_stop_pc() 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jaeyoon X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 5e2782d26567a4d8d558ca05800855c7fc217e35 Auto-Submitted: auto-generated Date: Tue, 06 Oct 2026 07:50:54 +0000 Message-Id: <6ac4a85e.45579.7f86d894@gitrepo.freebsd.org> The branch stable/15 has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=5e2782d26567a4d8d558ca05800855c7fc217e35 commit 5e2782d26567a4d8d558ca05800855c7fc217e35 Author: Jaeyoon Choi AuthorDate: 2026-01-26 06:29:28 +0000 Commit: Jaeyoon Choi CommitDate: 2026-10-06 06:27:51 +0000 cam/scsi: Restore scsi_start_stop() and add scsi_start_stop_pc() Revert the argument change that broke libcam in 8c35de49 and move power_condition support to scsi_start_stop_pc(). Reported by: imp Reviewed By: #cam, imp (mentor) Sponsored by: Samsung Electronics Differential Revision: https://reviews.freebsd.org/D54822 (cherry picked from commit 8ef8c6abfadfc9eb0465ce57c6b09ca310415bdd) --- sbin/camcontrol/camcontrol.c | 1 - sys/cam/cam_periph.c | 1 - sys/cam/scsi/scsi_all.c | 34 ++++++++++++++++++++++++++++++++++ sys/cam/scsi/scsi_all.h | 4 ++++ sys/cam/scsi/scsi_cd.c | 2 -- sys/dev/mpr/mpr_sas_lsi.c | 1 - sys/dev/mps/mps_sas_lsi.c | 1 - sys/dev/ufshci/ufshci_sim.c | 2 +- 8 files changed, 39 insertions(+), 7 deletions(-) diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c index 73e5a523bd47..7ad177c3e4b6 100644 --- a/sbin/camcontrol/camcontrol.c +++ b/sbin/camcontrol/camcontrol.c @@ -1026,7 +1026,6 @@ scsistart(struct cam_device *device, int startstop, int loadeject, /* start/stop */ startstop, /* load_eject */ loadeject, /* immediate */ 0, - /* power_condition */ SSS_PC_START_VALID, /* sense_len */ SSD_FULL_SIZE, /* timeout */ timeout ? timeout : 120000); diff --git a/sys/cam/cam_periph.c b/sys/cam/cam_periph.c index e485ecff8736..730656684e2a 100644 --- a/sys/cam/cam_periph.c +++ b/sys/cam/cam_periph.c @@ -1791,7 +1791,6 @@ camperiphscsisenseerror(union ccb *ccb, union ccb **orig, /*start*/TRUE, /*load/eject*/le, /*immediate*/FALSE, - /*power_condition*/SSS_PC_START_VALID, SSD_FULL_SIZE, /*timeout*/50000); break; diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c index 3b991fc248de..2acf091270a6 100644 --- a/sys/cam/scsi/scsi_all.c +++ b/sys/cam/scsi/scsi_all.c @@ -8982,6 +8982,40 @@ scsi_write_buffer(struct ccb_scsiio *csio, uint32_t retries, void scsi_start_stop(struct ccb_scsiio *csio, uint32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb *), + uint8_t tag_action, int start, int load_eject, + int immediate, uint8_t sense_len, uint32_t timeout) +{ + struct scsi_start_stop_unit *scsi_cmd; + int extra_flags = 0; + + scsi_cmd = (struct scsi_start_stop_unit *)&csio->cdb_io.cdb_bytes; + bzero(scsi_cmd, sizeof(*scsi_cmd)); + scsi_cmd->opcode = START_STOP_UNIT; + if (start != 0) { + scsi_cmd->how |= SSS_START; + /* it takes a lot of power to start a drive */ + extra_flags |= CAM_HIGH_POWER; + } + if (load_eject != 0) + scsi_cmd->how |= SSS_LOEJ; + if (immediate != 0) + scsi_cmd->byte2 |= SSS_IMMED; + + cam_fill_csio(csio, + retries, + cbfcnp, + /*flags*/CAM_DIR_NONE | extra_flags, + tag_action, + /*data_ptr*/NULL, + /*dxfer_len*/0, + sense_len, + sizeof(*scsi_cmd), + timeout); +} + +void +scsi_start_stop_pc(struct ccb_scsiio *csio, uint32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, int start, int load_eject, int immediate, uint8_t power_condition, uint8_t sense_len, diff --git a/sys/cam/scsi/scsi_all.h b/sys/cam/scsi/scsi_all.h index fb3ed8ee4458..0d4354538c2c 100644 --- a/sys/cam/scsi/scsi_all.h +++ b/sys/cam/scsi/scsi_all.h @@ -4324,6 +4324,10 @@ void scsi_unmap(struct ccb_scsiio *csio, uint32_t retries, uint8_t sense_len, uint32_t timeout); void scsi_start_stop(struct ccb_scsiio *csio, uint32_t retries, + void (*cbfcnp)(struct cam_periph *, union ccb *), + uint8_t tag_action, int start, int load_eject, + int immediate, uint8_t sense_len, uint32_t timeout); +void scsi_start_stop_pc(struct ccb_scsiio *csio, uint32_t retries, void (*cbfcnp)(struct cam_periph *, union ccb *), uint8_t tag_action, int start, int load_eject, int immediate, uint8_t power_condition, uint8_t sense_len, diff --git a/sys/cam/scsi/scsi_cd.c b/sys/cam/scsi/scsi_cd.c index be6f1c47512a..1e8dc98d53f4 100644 --- a/sys/cam/scsi/scsi_cd.c +++ b/sys/cam/scsi/scsi_cd.c @@ -3416,7 +3416,6 @@ cdstartunit(struct cam_periph *periph, int load) /* start */ TRUE, /* load_eject */ load, /* immediate */ FALSE, - /* power_condition */ SSS_PC_START_VALID, /* sense_len */ SSD_FULL_SIZE, /* timeout */ 50000); @@ -3445,7 +3444,6 @@ cdstopunit(struct cam_periph *periph, uint32_t eject) /* start */ FALSE, /* load_eject */ eject, /* immediate */ FALSE, - /* power_condition */ SSS_PC_START_VALID, /* sense_len */ SSD_FULL_SIZE, /* timeout */ 50000); diff --git a/sys/dev/mpr/mpr_sas_lsi.c b/sys/dev/mpr/mpr_sas_lsi.c index 9ba776e49e7a..d9744b1054c2 100644 --- a/sys/dev/mpr/mpr_sas_lsi.c +++ b/sys/dev/mpr/mpr_sas_lsi.c @@ -1517,7 +1517,6 @@ mprsas_SSU_to_SATA_devices(struct mpr_softc *sc, int howto) /*start*/FALSE, /*load/eject*/0, /*immediate*/FALSE, - /*power_condition*/SSS_PC_START_VALID, MPR_SENSE_LEN, /*timeout*/10000); xpt_action(ccb); diff --git a/sys/dev/mps/mps_sas_lsi.c b/sys/dev/mps/mps_sas_lsi.c index 42119b5c0a43..e2d1ef2b013a 100644 --- a/sys/dev/mps/mps_sas_lsi.c +++ b/sys/dev/mps/mps_sas_lsi.c @@ -1153,7 +1153,6 @@ mpssas_SSU_to_SATA_devices(struct mps_softc *sc, int howto) /*start*/FALSE, /*load/eject*/0, /*immediate*/FALSE, - /*power_condition*/SSS_PC_START_VALID, MPS_SENSE_LEN, /*timeout*/10000); xpt_action(ccb); diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c index bee1fff858ff..404f3e99d1e2 100644 --- a/sys/dev/ufshci/ufshci_sim.c +++ b/sys/dev/ufshci/ufshci_sim.c @@ -494,7 +494,7 @@ ufshci_sim_send_ssu(struct ufshci_controller *ctrlr, bool start, return ENOMEM; } - scsi_start_stop(&ccb->csio, + scsi_start_stop_pc(&ccb->csio, /*retries*/ 4, /*cbfcnp*/ NULL, /*tag_action*/ MSG_SIMPLE_Q_TAG,