From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C20D3AF665; Sat, 17 Oct 2026 16:49:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792255745; cv=none; b=fXEJZWpdQ0ELOh1q/aBu/UXGEodfTrs+HTB8JmVqMS3TM5yvfZmbFJwSTSs3dNUk7wI+4zMxgejX8uvQ1CY5DeVA3ifSdG+87XPlNEOn2JZ4IKg0C7r5tFZDKcPISYXKpepQCkToKPD2/oQ6kO/UUqdticI7TvH86jidjFiQpCo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792255745; c=relaxed/simple; bh=VDXjAN3D4YznT4wQ+oXJQVHSBa/YmWW3WMKZnXuspew=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WR7aQyn5YoEWmlBVaJaWCswv1z4mborgTF3S44/4DpKNHm6WcO4jIJu7inij5iuC/hziNMKE6uas64mpU0A1xRHkT18AgaOHz7EN1F3U5OcKM7r66BNaAPxeXiwD0jZdHszwdju8XGndTOui/iNBN8trf6XnBJzb0ZKM2WrtSeY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=dLZb5mXB; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="dLZb5mXB" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 153B51F000C4; Sat, 17 Oct 2026 16:49:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1792255743; bh=xQ+eMihBLcjQtngbSACMKVpteBsJDsVAXcFvYk8ocDY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=dLZb5mXBV9HMZPE5sz6SQ7U4P0Sl9mDkq3ebXfVq6giLjG8+5i2iCmF1qBkvm1nnt nG3DFQ06r0ej9jIk+GubEiEDqrHdCQx2AQh8LL3rFicd5IOo/vmxVacFXA55Jm2Ysa Bc/ygEvztrgiDtFg7NQZxGymguesxmDVGSl5VRoo= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Adrian Hunter , Frank Li , Alexandre Belloni , Sasha Levin Subject: [PATCH 6.12 837/869] i3c: mipi-i3c-hci: Preserve RUN bit when aborting DMA ring Date: Sat, 17 Oct 2026 18:01:18 +0200 Message-ID: <20261017160058.333150250@linuxfoundation.org> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261017160036.979869304@linuxfoundation.org> References: <20261017160036.979869304@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Adrian Hunter [ Upstream commit 093eb8e73c90aa0c8cfb0421aa85bd70c23488be ] The MIPI I3C HCI specification does not require the DMA ring RUN bit (RUN_STOP) to be cleared when issuing an ABORT. That allows the DMA ring to continue to receive IBIs, although an IBI is anyway not lost because it can be received once the ring restarts if the I3C device has not given up. Note, currently ABORT is only used on a timeout error path so the change has very little effect in practice. In the more common case of a transfer error, the ring (bundle) operation is halted by the controller anyway. Adjust the RING_CONTROL handling to set ABORT without clearing RUN_STOP, bringing the driver into alignment with the specification. Fixes: b795e68bf3073 ("i3c: mipi-i3c-hci: Correct RING_CTRL_ABORT handling in DMA dequeue") Signed-off-by: Adrian Hunter Reviewed-by: Frank Li Link: https://patch.msgid.link/20260603090754.16252-3-adrian.hunter@intel.com Signed-off-by: Alexandre Belloni Signed-off-by: Sasha Levin --- drivers/i3c/master/mipi-i3c-hci/dma.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/i3c/master/mipi-i3c-hci/dma.c b/drivers/i3c/master/mipi-i3c-hci/dma.c index 845feecc0211f..d61d88b3a47a6 100644 --- a/drivers/i3c/master/mipi-i3c-hci/dma.c +++ b/drivers/i3c/master/mipi-i3c-hci/dma.c @@ -465,7 +465,7 @@ static bool hci_dma_dequeue_xfer(struct i3c_hci *hci, if (ring_status & RING_STATUS_RUNNING) { /* stop the ring */ reinit_completion(&rh->op_done); - rh_reg_write(RING_CONTROL, RING_CTRL_ENABLE | RING_CTRL_ABORT); + rh_reg_write(RING_CONTROL, rh_reg_read(RING_CONTROL) | RING_CTRL_ABORT); wait_for_completion_timeout(&rh->op_done, HZ); ring_status = rh_reg_read(RING_STATUS); if (ring_status & RING_STATUS_RUNNING) { -- 2.53.0