From nobody Tue Nov 03 04:33:51 2026 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 4jJbLR3sZCz6xsRk for ; Tue, 03 Nov 2026 04:33:51 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jJbLR1FRWz4fby for ; Tue, 03 Nov 2026 04:33:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793680431; 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=/F+ThiTERWxvxEHZhZXxKLmhMwNNeWe1Mye4xPN6cwU=; b=Jy60XN8pD1tKZ4K+2jbp3TVBxrX+gMsDtwCUNNUPboWdqYW/Wd4IVCKMACl61j1cIgCV1J xMm1sSkNCdEiuEH6Q2tMplw0NCFjOaP5orlbxxtRDpacwZ/ZYQ7vg9ktlk6/1YIxzO3v3L 0tlQnib/RtdIiySUo7PBQDyiIy1pfq92jlN3FGYbrXx3x/155mbI4H38wxS/5l+lqUMeNv UhYFRufnJaOUJiEI+BykRAZGMXW4zdOclDJ+m5bs0+APLLJ9hBpFcZmhnX/Obq7Nqce4g8 EtM3hOqQO/dkojYo4hfkaRAMbkndTIIFcm5EClJ4k8ok/eoWSXiiHjctdiZm1Q== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793680431; b=GQ9s6ZXkoRS72dVPIDEInHvzPHsMdFIpyGeTMV9+oJPVvdiGRi3IhUBA9AatoXc8nJg4s/ 3c626tt403i31Gfmha231V9wHJWTc5+rV4uey0dzQDFFVxJo+gU4MzliFKKwiyqJQakJua xCBIi4X8VTyU3ttf9A+QFSePx6WLhQ7DtcnaN6dvpLRudcwJy1hjlzck1bvMfaER7xhIqw xPYdoAOGlXtrAs3RBhfF75eiSHtXeop93aJy/75HNLUR2gC4zBG5PPEUu0ZJrV7FHaOIw3 zRS+mdmqfdt4bqhDwew0x+n/1wGWcohlW+6098eLBL+n/M9WPIGuMtwFDT9hkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793680431; 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=/F+ThiTERWxvxEHZhZXxKLmhMwNNeWe1Mye4xPN6cwU=; b=x+00KiDiPMGOp0CM4m6h/9EI9IBzJP2vns9uvgXVIHFBVZy5TW121oelDqJkonGizRHMtt EwuUg5R47oqduGCOlzQhBHS4cHiaXPV9t6XlPNgzFxyM52IulDwrOS0Oydz+RHaQ9D2qEX xMcCd9oTm0eWCK2hEwEznXcGWEj15QpN6gCr6w2gGBow8GkUut+Rm2GgLljgYlPuZtuUrW KJurnInnN5sSFuiRvhnzzYgyavFX1Ah+48JcGm7dIEWNjAU+g6dtozW1PK8efDET3sU1Ak 1omTLflru4twmffemk2pATGZOwHx4/xF1jhx5GefjhYcBzcUkQto2fRzu+ULzA== 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 4jJbLR0stBz1GW2 for ; Tue, 03 Nov 2026 04:33:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f1d4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 03 Nov 2026 04:33:51 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jaeyoon Choi Subject: git: 1066d5e15f08 - main - ufshci: tell CAM when the controller is gone for good List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: Commit messages for the main branch of the src repository 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/main X-Git-Reftype: branch X-Git-Commit: 1066d5e15f086df9849bab7a95edb69fcbad3310 Auto-Submitted: auto-generated Date: Tue, 03 Nov 2026 04:33:51 +0000 Message-Id: <6ae9642f.1f1d4.9c3af0c@gitrepo.freebsd.org> The branch main has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=1066d5e15f086df9849bab7a95edb69fcbad3310 commit 1066d5e15f086df9849bab7a95edb69fcbad3310 Author: Jaeyoon Choi AuthorDate: 2026-11-03 04:25:06 +0000 Commit: Jaeyoon Choi CommitDate: 2026-11-03 04:29:45 +0000 ufshci: tell CAM when the controller is gone for good When the controller failed for good, CAM was not told, so its disks stayed and every command to them failed. Post AC_LOST_DEVICE from the failure path so CAM removes them. Reviewed by: imp Sponsored by: Samsung Electronics Differential Revision: https://reviews.freebsd.org/D61120 --- sys/dev/ufshci/ufshci_ctrlr.c | 2 ++ sys/dev/ufshci/ufshci_private.h | 1 + sys/dev/ufshci/ufshci_sim.c | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c index 0f44c6e04991..e37764f874b9 100644 --- a/sys/dev/ufshci/ufshci_ctrlr.c +++ b/sys/dev/ufshci/ufshci_ctrlr.c @@ -27,6 +27,8 @@ ufshci_ctrlr_fail(struct ufshci_controller *ctrlr) ufshci_req_queue_fail(ctrlr, &ctrlr->task_mgmt_req_queue); ufshci_req_queue_fail(ctrlr, &ctrlr->transfer_req_queue); + + ufshci_sim_controller_failed(ctrlr); } /* Some controllers require a reinit after switching to the max gear. */ diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h index 110d8a7757ca..69ff9c7f8f51 100644 --- a/sys/dev/ufshci/ufshci_private.h +++ b/sys/dev/ufshci/ufshci_private.h @@ -448,6 +448,7 @@ uint8_t ufshci_sim_translate_scsi_to_ufs_lun(lun_id_t scsi_lun); uint64_t ufshci_sim_translate_ufs_to_scsi_lun(uint8_t ufs_lun); int ufshci_sim_attach(struct ufshci_controller *ctrlr); void ufshci_sim_detach(struct ufshci_controller *ctrlr); +void ufshci_sim_controller_failed(struct ufshci_controller *ctrlr); void ufshci_sim_release_wlun_periph(struct ufshci_controller *ctrlr); struct cam_periph *ufshci_sim_find_periph(struct ufshci_controller *ctrlr, uint8_t wlun); diff --git a/sys/dev/ufshci/ufshci_sim.c b/sys/dev/ufshci/ufshci_sim.c index 848fa753428e..edbb4930cb78 100644 --- a/sys/dev/ufshci/ufshci_sim.c +++ b/sys/dev/ufshci/ufshci_sim.c @@ -423,6 +423,25 @@ ufshci_sim_release_wlun_periph(struct ufshci_controller *ctrlr) } } +void +ufshci_sim_controller_failed(struct ufshci_controller *ctrlr) +{ + /* Attach may fail before the path is set up. */ + if (ctrlr->ufshci_path == NULL) + return; + + /* + * Hand the loss to CAM. The event goes to every periph on the + * devices under the path, where cam_periph_async() invalidates + * each one, so da(4) detaches and the disk node goes away rather + * than pointing at a controller that answers nothing. The path + * stored at attach covers the whole bus, so one post reaches + * every logical unit. xpt_async clones the path, so the stored + * one survives the call. + */ + xpt_async(AC_LOST_DEVICE, ctrlr->ufshci_path, NULL); +} + void ufshci_sim_detach(struct ufshci_controller *ctrlr) {