From nobody Tue Nov 03 04:33:52 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 4jJbLS5MjGz6xsRm for ; Tue, 03 Nov 2026 04:33:52 +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 4jJbLS2Pc0z4fvG for ; Tue, 03 Nov 2026 04:33:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793680432; 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=GbJwut5HZKr8rRFc0J2XtRTlTRH4u971ucOfTJh9L2Y=; b=qQ+CLff02gP8lb1Jc8e0nbo7yLRvULLdf2K6cxDWuzxhTmsfsLCzacb4WwzYin75K2VMJZ LA3jV500+WEfPVrW/z6wuY5vgC80/UJhhjj5IbtWrKeugLMal50d+gi0S1bzHUgOWUch4E 1w1mdCH0BMN6QDj57P8FiIJ7C1JITZ03WMV/uxTokfF9P0gQlxwZ6RG/IP2NqkAHyAbrL8 oNspyHrn2B+37JtkKgAER2fLuMotbR40s44brNjI+T3H6qmL6E4Imr0PsY2dfVSLEppvXH N38okPJgJvLVijWHX37YHzNaUSd49zEkiToPYK3A4o7gNmF8PR+bibaOEDpWdw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793680432; b=xB7S2olBRfD86JhAIVC911zLOmVCtmhHBmOYYFH/WKfrpqMEB/+2DvBMxR8SZOjmgtZ5P2 hMUEYg3Bbn4ayZTC22x9Pp3QRM4ZWbt4C8VQ810IQTIyddV8eUkqRn0CFNPb5BukBWSYTr lKrjfuxrUiZj4oj/ZeNOPwf26NSZ6pXsOmRPHVY8E6Q9LZ8j+expvmIddWOp3+iDgJO/ds 6Q8j5a+J0tVd7KJpu7kObFTGJFvlaba+83bopM7C679g3Q+J/xNU014am/AyVvPfZ34UTi 7odEJ90XVaCod08seU700pE7pMOX/dYSRIlTyJ4eY+NE/cm45vC/C1pKrQUqfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793680432; 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=GbJwut5HZKr8rRFc0J2XtRTlTRH4u971ucOfTJh9L2Y=; b=Za7+8uTG7i8vlmTC+bXI5rdYDEiGCLZhHOkf7s7Oy1eLdlbveqoTTq7b9tq1Dk+kFvt3JV modB3hcRFEDgfBqWCT5pxG4PSE3z4smkTx0st47EkptIHook096v50pNaKin+6uH2DYkcT ilkQW1ptRnUcRv0p/FqIcFO5ihguYnITFfw4lt7KheEmqvYMW/2b9jlvXJhmObjQCos05t PxZegZG6TYJiQ5eOJwzpsr+By1NFlv0YRsLPGXBdYmaNRmCRA8AA1V8VTvOUe2NrhPJokg qmzRoWr//OjQiv/JvxcF0ohqfdDzNN7qzKTIthlPeZ2v/a0RNt4VAYJGCT+7JA== 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 4jJbLS1Xsfz1GW3 for ; Tue, 03 Nov 2026 04:33:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1f22a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 03 Nov 2026 04:33:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jaeyoon Choi Subject: git: 4861ef4e8245 - main - ufshci: try the link startup more than once 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: 4861ef4e82451bfb1e5fd58d02a38f6baf20eb24 Auto-Submitted: auto-generated Date: Tue, 03 Nov 2026 04:33:52 +0000 Message-Id: <6ae96430.1f22a.78540354@gitrepo.freebsd.org> The branch main has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=4861ef4e82451bfb1e5fd58d02a38f6baf20eb24 commit 4861ef4e82451bfb1e5fd58d02a38f6baf20eb24 Author: Jaeyoon Choi AuthorDate: 2026-11-03 04:26:00 +0000 Commit: Jaeyoon Choi CommitDate: 2026-11-03 04:29:46 +0000 ufshci: try the link startup more than once A device that is still powering on may not answer the first DME_LINKSTARTUP, and the driver gave up after one try. Try up to three times. Both attach and reset use this path. Reviewed by: imp Sponsored by: Samsung Electronics Differential Revision: https://reviews.freebsd.org/D61121 --- sys/dev/ufshci/ufshci_ctrlr.c | 33 +++++++++++++++++++++------------ sys/dev/ufshci/ufshci_private.h | 3 +++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c index e37764f874b9..32c85f87ffcc 100644 --- a/sys/dev/ufshci/ufshci_ctrlr.c +++ b/sys/dev/ufshci/ufshci_ctrlr.c @@ -287,7 +287,7 @@ ufshci_ctrlr_disable(struct ufshci_controller *ctrlr) int ufshci_ctrlr_enable(struct ufshci_controller *ctrlr) { - uint32_t ie, hcs; + uint32_t ie, hcs, attempt; int error; error = ufshci_ctrlr_enable_host_ctrlr(ctrlr); @@ -295,18 +295,27 @@ ufshci_ctrlr_enable(struct ufshci_controller *ctrlr) return (error); /* Send DME_LINKSTARTUP command to start the link startup procedure */ - error = ufshci_uic_send_dme_link_startup(ctrlr); - if (error) - return (error); + for (attempt = 0; attempt < UFSHCI_MAX_LINK_STARTUP_ATTEMPTS; + attempt++) { + error = ufshci_uic_send_dme_link_startup(ctrlr); + if (error) { + ufshci_printf(ctrlr, + "DME_LINKSTARTUP attempt %u failed: %d\n", + attempt + 1, error); + continue; + } - /* - * The device_present(UFSHCI_HCS_REG_DP) bit becomes true if the host - * controller has successfully received a Link Startup UIC command - * response and the UFS device has found a physical link to the - * controller. - */ - hcs = ufshci_mmio_read_4(ctrlr, hcs); - if (!UFSHCIV(UFSHCI_HCS_REG_DP, hcs)) { + /* + * The device_present(UFSHCI_HCS_REG_DP) bit becomes true if + * the host controller has successfully received a Link + * Startup UIC command response and the UFS device has found + * a physical link to the controller. + */ + hcs = ufshci_mmio_read_4(ctrlr, hcs); + if (UFSHCIV(UFSHCI_HCS_REG_DP, hcs)) + break; + } + if (attempt == UFSHCI_MAX_LINK_STARTUP_ATTEMPTS) { ufshci_printf(ctrlr, "UFS device not found\n"); return (ENXIO); } diff --git a/sys/dev/ufshci/ufshci_private.h b/sys/dev/ufshci/ufshci_private.h index 69ff9c7f8f51..c75044f39d7f 100644 --- a/sys/dev/ufshci/ufshci_private.h +++ b/sys/dev/ufshci/ufshci_private.h @@ -47,6 +47,9 @@ MALLOC_DECLARE(M_UFSHCI); #define UFSHCI_DEFAULT_RETRY_COUNT (4) +/* A device that is still powering on does not answer the first one. */ +#define UFSHCI_MAX_LINK_STARTUP_ATTEMPTS (3) + #define UFSHCI_UTR_ENTRIES (32) #define UFSHCI_UTRM_ENTRIES (8)