From nobody Thu Aug 27 05:12:47 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 4hVqQm5qkjz6qRv6 for ; Thu, 27 Aug 2026 05:12:48 +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 4hVqQm2BTDz3h6k for ; Thu, 27 Aug 2026 05:12:48 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787807568; 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=dOwA1KYdn62Jt+vR8K9p60UJvJnxsxtf9wl8vXCSAnk=; b=s/MQou/9SaTmGzD0a7c6fZn6bOQBr0LLwBxJYtLuLkJ+Q3hH94Ns68W+oFgfQA0oWn8UV3 QllNmcEycbuALz84uPBeHkMNj5nAc/MXxLXA3Z6njCniEpWYZRpK3Usdq1hnW/WnQlyfBx LHLzIP1+ChT4+jTE1yEC6CpgIXe46CRwLufXDrrgf/MbizpkvLcq7/3HK650jVWtE4j16F zMyReiAfm1ScmbSOLEP7L25OI2YT+tT7cRG2Gn5JBvhGUsZdiJrg1FTO/7+PjTqLZUr0Bo KMHx3JOrRzQo5bqikkKgx8J1QF6RbHH6zSzqO27jrtQHXSVtAo35hVJ4Qk7cew== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1787807568; a=rsa-sha256; cv=none; b=YauM5MgVyMpdkwMaaT2RUm0BhRyYNAQgXNt/GqIBl/OFb/PJnmzycP5Gw4lokoLgTbnr75 +MyaOwce0ubYKq9WRPMogriLVcO9n0betXa6Q87bG2AJ4RUu3X/0xjqVm3Y91YZXj0NcSv HsDuEW+1V/9dwqRQfoEpAnLvoxPdGUKrSxXkK8WlBFZTnwdz2aheGYbW32NOO6DRM0h9lB KEk4bul+JIOoVMrVXmA4DwySyZpD/l2RG0oNS0KFObnSoiBNSrAbfxxvclQRgUo5EbVome 5fE8W/ZxkiePn2wBAXYZ/gY+7zlehBeHLEzw/Nr93X1tuq92I+7/i0InpxDzdA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1787807568; 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=dOwA1KYdn62Jt+vR8K9p60UJvJnxsxtf9wl8vXCSAnk=; b=BLilqCyomSIBpOTmkx1v3ad/5opO0uuekaZcHQWGC0XHcPyyzVtwfIBASyyvTKqxmtffyF K7kvrJe8/k448r2o2nJaARDIlDOPkeR4ZxWCUmjDXAHZT5ZN4AWnNKpAaYPqpxsr14gsf+ CUhzL0jgyHTfm5EJH0ZXiuoh0NZsuB1uiJAwyofx3t4SK4MaUc3FdETTrd1iQ19K7fEi63 4Cv7yC/we7FRvAGWBOEmqKnN+Tky7A310QGCWrv5NIwoqWayYc43gkwvnf8WFBAN1jurUY 2BJGYGZ1sr3REV2yaS3kYMHtBNmbkYkjT3vYn5hp/D++/+l9X2jtTegy3359yw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hVqQl716Bz18XV for ; Thu, 27 Aug 2026 05:12:47 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 42be1 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 27 Aug 2026 05:12:47 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jaeyoon Choi Subject: git: 746278a6ddc8 - main - ufshci: build valid fake responses for manual completion 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/main X-Git-Reftype: branch X-Git-Commit: 746278a6ddc80a98001f875cd975283d7c99b960 Auto-Submitted: auto-generated Date: Thu, 27 Aug 2026 05:12:47 +0000 Message-Id: <6a8fc74f.42be1.5d4c6bb@gitrepo.freebsd.org> The branch main has been updated by jaeyoon: URL: https://cgit.FreeBSD.org/src/commit/?id=746278a6ddc80a98001f875cd975283d7c99b960 commit 746278a6ddc80a98001f875cd975283d7c99b960 Author: Jaeyoon Choi AuthorDate: 2026-08-27 05:02:10 +0000 Commit: Jaeyoon Choi CommitDate: 2026-08-27 05:08:38 +0000 ufshci: build valid fake responses for manual completion The manual completion wrote the fake response to the wrong descriptor for task management slots. It also left the task tag at zero, which tripped the task tag check under INVARIANTS. Write the fake response where the completion path reads it. Copy the task tag from the request. Reviewed by: imp (mentor) Sponsored by: Samsung Electronics Differential Revision: https://reviews.freebsd.org/D58946 --- sys/dev/ufshci/ufshci_req_queue.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/sys/dev/ufshci/ufshci_req_queue.c b/sys/dev/ufshci/ufshci_req_queue.c index 97eccd082176..2e13d244daef 100644 --- a/sys/dev/ufshci/ufshci_req_queue.c +++ b/sys/dev/ufshci/ufshci_req_queue.c @@ -168,16 +168,30 @@ static void ufshci_req_queue_manual_complete_tracker(struct ufshci_tracker *tr, uint8_t ocs, uint8_t rc) { - struct ufshci_utp_xfer_req_desc *desc; + struct ufshci_req_queue *req_queue = tr->req_queue; + struct ufshci_hw_queue *hwq = tr->hwq; struct ufshci_upiu_header *resp_header; - mtx_assert(&tr->hwq->qlock, MA_NOTOWNED); + mtx_assert(&hwq->qlock, MA_NOTOWNED); - resp_header = (struct ufshci_upiu_header *)tr->ucd->response_upiu; + /* + * Write the fake response where the completion path reads it. + */ + if (req_queue->is_task_mgmt) { + resp_header = (struct ufshci_upiu_header *) + hwq->utmrd[tr->slot_num].response_upiu; + hwq->utmrd[tr->slot_num].overall_command_status = ocs; + } else { + resp_header = (struct ufshci_upiu_header *) + tr->ucd->response_upiu; + hwq->utrd[tr->slot_num].overall_command_status = ocs; + } resp_header->response = rc; - - desc = &tr->hwq->utrd[tr->slot_num]; - desc->overall_command_status = ocs; + /* + * The hardware never wrote a response. Copy the task tag from + * the request so the completion checks pass. + */ + resp_header->task_tag = tr->req->request_upiu.header.task_tag; ufshci_req_queue_complete_tracker(tr); }