From nobody Sun Aug 31 18:40:51 2025 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 4cFLRl2p6Qz66M6D; Sun, 31 Aug 2025 18:40: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 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cFLRl1rTJz3Wy4; Sun, 31 Aug 2025 18:40:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756665651; 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=xuHH6PPfIE9vI1rLN9OSYmvrxK7Yqs7gfyJxdh5/mM8=; b=xVOAF43znj7fpaCd1z3Hi/PGp44zOPHR+IbDBFA3e4B9aoJDTVXu7Ur5a1X+IMxN0rtMjr R0x+rvaZcfKreD5YXJkAok7vAapSl5unqelKYOTtnF5qec1jenxI+IE0g6v+iFjncoeWjq 7WxEnFkeyocXY3QCjvpmz2kxqXPBVoPBFtU1rX48ZIcjLIwlJ1yC/lIna70E5ZiqlSDcir jQ+6wh4j4y6Zd6mvTUZJ4DdbK0jYZhD786SE9f3yO7rtbUEU+YSgZKIqQORgNyczV/EmUT uq//e1tWxqsn98eY19RhiyIFyxCwPqSKGEoxKI2w6g6VsV/mTZOWO6TqwF3fKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756665651; 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=xuHH6PPfIE9vI1rLN9OSYmvrxK7Yqs7gfyJxdh5/mM8=; b=sVBlhuLbCAq2t5l7SqUOXnaOZ9MashbKze3nc1D5PjqyyJcGAXt0koCE7NoXotjg1IidYj SDRkdDudaHAvEjg0dT/BAtr9sR/QEeY7mYwX9FK6A8d0TUDxM00MZz1Pdu9c9uPyOdo2jl SXC0j7nS24SIPtEb7rI98lVD+2rh9LLK+JXRdumqL3rvr+Wju84EqdTdQEKeuKznba/Tc/ 0BkdGd2jUX5KMugsv6R5e4w9Zu3MdXSHuYqTEvqGiAhWB6YbH9PxUidYZFIDswjDvYq4ja YvTHRcqfdjhYJE+PkitQ3W+WfPAsLHO64I4oG/MDP3oE/dVaoK4KFolid5dTgA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1756665651; a=rsa-sha256; cv=none; b=Z9GmT9JBYWPJs70sHywOFQHkcc6okQYRv+hlqGPc9zKbuXvtcNUJl9FsW087aO4XbvDGNt g7GnzPAoyoC1Uiz6z7E89CKG6gXKh1sjsffEPuXSXrj3qsSDDXp37qGdFjihc6z1IhcxK/ SAlK/2nq3XwpLzXRpwEIa2Fwm5ITxasKD+qmIorEgsqop1u26zV5jCJZHUblIPmrkuP3Dz YgvaDqGa6mSYCJEwlYBBS9yDxQkoMOY/fggYOgf/vaNuPjnZ3j7cUX80W4kUkwkrLtyzd1 zGDaXkY5VwNZHtArJr4DKBkPiCTNuxKemzr0r8fYaeCW+F6gUcDE9RipnsfnVQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4cFLRl1B4Fz8kc; Sun, 31 Aug 2025 18:40:51 +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 57VIep23017325; Sun, 31 Aug 2025 18:40:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57VIepDw017322; Sun, 31 Aug 2025 18:40:51 GMT (envelope-from git) Date: Sun, 31 Aug 2025 18:40:51 GMT Message-Id: <202508311840.57VIepDw017322@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: 58ce49d185c3 - main - ufshci: reserve one queue entry for an admin request 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 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: 58ce49d185c3ee96c0d6c7c9381c5b6fed51523e Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=58ce49d185c3ee96c0d6c7c9381c5b6fed51523e commit 58ce49d185c3ee96c0d6c7c9381c5b6fed51523e Author: Jaeyoon Choi AuthorDate: 2025-08-31 18:36:36 +0000 Commit: Warner Losh CommitDate: 2025-08-31 18:36:36 +0000 ufshci: reserve one queue entry for an admin request This patch reduces num_entries by 1 to reserve a admin slot. It resolves the issue where admin requests cannot be executed during QD32 because all queue entries are used. It also resolve the issue of accessing the queue before it is created by moving the queue construct point to before interrupt enable. Sponsored by: Samsung Electronic Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D51894 --- sys/dev/ufshci/ufshci_ctrlr.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/sys/dev/ufshci/ufshci_ctrlr.c b/sys/dev/ufshci/ufshci_ctrlr.c index 7bebfd2b0f9c..36be94b8b8b7 100644 --- a/sys/dev/ufshci/ufshci_ctrlr.c +++ b/sys/dev/ufshci/ufshci_ctrlr.c @@ -146,6 +146,16 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev) return (ENXIO); } + /* Allocate and initialize UTP Task Management Request List. */ + error = ufshci_utmr_req_queue_construct(ctrlr); + if (error) + return (error); + + /* Allocate and initialize UTP Transfer Request List or SQ/CQ. */ + error = ufshci_utr_req_queue_construct(ctrlr); + if (error) + return (error); + /* Enable additional interrupts by programming the IE register. */ ie = ufshci_mmio_read_4(ctrlr, ie); ie |= UFSHCIM(UFSHCI_IE_REG_UTRCE); /* UTR Completion */ @@ -160,19 +170,12 @@ ufshci_ctrlr_construct(struct ufshci_controller *ctrlr, device_t dev) /* TODO: Initialize interrupt Aggregation Control Register (UTRIACR) */ - /* Allocate and initialize UTP Task Management Request List. */ - error = ufshci_utmr_req_queue_construct(ctrlr); - if (error) - return (error); - - /* Allocate and initialize UTP Transfer Request List or SQ/CQ. */ - error = ufshci_utr_req_queue_construct(ctrlr); - if (error) - return (error); - /* TODO: Separate IO and Admin slot */ - /* max_hw_pend_io is the number of slots in the transfer_req_queue */ - ctrlr->max_hw_pend_io = ctrlr->transfer_req_queue.num_entries; + /* + * max_hw_pend_io is the number of slots in the transfer_req_queue. + * Reduce num_entries by one to reserve an admin slot. + */ + ctrlr->max_hw_pend_io = ctrlr->transfer_req_queue.num_entries - 1; return (0); }