From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 B7E4138DC4F for ; Mon, 3 Aug 2026 10:32:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753142; cv=none; b=DHS9hOQFTzh0a/+kLwFBrA6/RMZSaXnCNanSE+YwpNMPzAVyScyjVor/rzXyhJyy6q2fmMtRO71FSYU/+RCUwZ9eQXKJeuvU52UqURTXZXOZRZ3giLVXKtYUlnFtcYantfnDPkvBHtatYSzwxR5RU+aYs395xBw/8aVVCdT/tbE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753142; c=relaxed/simple; bh=kXJQnle2iy213AQWQj46cMV6D4x1j/TtR9P5Qzd56rA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oUiF0sTQlu1u34UuglrQq+NjrzYCWIOvprcEZsm7pAVGrZUS4O3TiXsKhcpeW+t5XMr0OOR7YLqqKAzs9MAqxd4yMOK4Ml0OIiztdSCJwRTyjvegENPF6zWhRScKGX01iz+ANuSxvSK5NkLxkSTc6Pt2NRbgGxgqjetl/VMf2ew= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=TiU7BJpN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=b1kuUadB; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="TiU7BJpN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="b1kuUadB" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6736sYQS3790798 for ; Mon, 3 Aug 2026 10:32:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= SsOg8BzHaZPjVzLWezCKuNFn2YJ6/+JPUNTdZcJCf2U=; b=TiU7BJpNpXEsU/y2 mhQjK4BU5En47PTImCEEAkJNY22Im2WfBGZQX8fxXy60Ey+O/ZD1BpvzsVcvRrG4 hCfA2aGDHQ11mL4FdQ3PXjLLka7SpyRcFoz1c6bcgKkvqGC0AplSCkIaajpvnAXk 6XIVevQZHrXA9y0NNqaBO3OYcC3MkleBsH9grp/jKVbpHuyd1St5mQ4CDJi8fZpy UdrpOccwOt+cQ6UVcH7ngtf7ldpNOzcfLDNUnnOnt3oCFyxJGXQcLXByDxSTsMgN 9pPRSm5YE3IBIw+Hgwitij1zsFEMaSnusV4rIjCE+K13nv6viAIX+d3d0uJyRwnM 1q5jDQ== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ftp4r0ycd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 03 Aug 2026 10:32:19 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-38e475f83a2so5423760a91.1 for ; Mon, 03 Aug 2026 03:32:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785753138; x=1786357938; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=SsOg8BzHaZPjVzLWezCKuNFn2YJ6/+JPUNTdZcJCf2U=; b=b1kuUadBN3He0pAkStNvDTt5dvOPCxDKWPIL7QkWFQGNGHR+RBWGmkwwypI2+XuLEL L7g4apLsAWKJl31Sva64Cq8zCHUkA/Wwn5Y6nckeLYB0+MdpQ8dt7sNbwQxhpG9fHx1c DsqQH9Z0yGvkLexyDngSrxmsfArnVv75uqsoiiFKva4D+TKUs1f+3NitzD81lUmmuVfs NvLF/4a/v17de5LiRln0wnj1hUVFsNretVACYwCmqnBJBKFIOhMzyebgYGIrxKRlael6 g7BhEgptI3m4h1UFgVj4dakCOe+5VteNRrKqUQsmf0yDaj2+OshLoBK0jdzckN5/LMaW ZyVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785753138; x=1786357938; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=SsOg8BzHaZPjVzLWezCKuNFn2YJ6/+JPUNTdZcJCf2U=; b=dvUq88U32yg289syv3c0gQbkt/Vop2s+I/mg5DL5qbOGrY+2Qf3CAmF1rFBO+TmeBq LvzhthVM1Fg8gPQ7aIl9tHjxzKHT+CTpf5bJbT/96szrn7eTgZ/W5szNgCtHotm1IT8/ TRaBjR/UtA2Uesg4MrbiDe3ZIGjL1FdzxNrZNS/Xw1vclBo15rPapl4pz3GjQUJgEchq 2tRlh56ng1V/f/BJADVLOC4ZJ/tKUqkW9pW/seBQYJcMhMM0g+A1dg6BILEEZB5r51AS LZ6kpdnmhw5ZN8y7LQpIKQihqekPJXNk9oPz+sQV5mSMLSnfvRHQJKx6jmuFxt3jcZmE 0C7A== X-Forwarded-Encrypted: i=1; AHgh+RpjdnaXBQeegKL1SfBgRjh2NluzVP7fF+FK0Op0ctVfQhdgjmKXTrHD1QpRBf/keAjk6WxkKYfbo8k6ydQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzlFh2PO4VcZsN0kOSJuVdXAxGHHQG+O9Z5ECQOm1AetAwphw57 5ipAL97T+c6CZ9wIZD3JJpXGDGB9zNeLCnCAEpwB4X/tc1XfGcHyVW3krE1CfIFTclZNCTfpNFk BRR1pYQFh1wKzbWpQWKn3m/Q09x1lMUJvnUoOFC8tS30GqkBYyzeRiQpL4JYN3G8Q91Q= X-Gm-Gg: AR+sD105D7NlobHSde0vV9sJNFknqWKnmPudEMPY+Io2A0s6wQQEd2DVKOXj+KJ+rI7 mHrYVTM89qx1GjCquC6z2q53ZWTh1mZ5ocy6BZPq/ZMQuzcQp4M0TiPnGYayIKhsb3cgx4qEpEN 7S9o3vNQNycbRBFRD96VnFmoTN1sL8y8QQ1jAZoS9M9hN5l799B3GdqZF3N/4dUCq2YwXgpiXam q/8RgD52ljY9e1WtcRZE2jX8+i7mMpklaPGhI59+FOdQ0OF6g0yFxvp+onaVEVVhoFI86KjRr/5 UiHIXqxjaZisBd/at83p6oNYRq6DhWPxGo0uYYHnwa374maY8dQjiwQ3h4QE3HSbqpW78Al5gnG dPdg0+UtkrXN10nvZ952pFKboOA== X-Received: by 2002:a17:90b:2588:b0:38e:712a:bb38 with SMTP id 98e67ed59e1d1-38fbc530fe4mr8942872a91.24.1785753138515; Mon, 03 Aug 2026 03:32:18 -0700 (PDT) X-Received: by 2002:a17:90b:2588:b0:38e:712a:bb38 with SMTP id 98e67ed59e1d1-38fbc530fe4mr8942831a91.24.1785753138002; Mon, 03 Aug 2026 03:32:18 -0700 (PDT) Received: from hu-sumk-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38fb2b1244bsm3693427a91.0.2026.08.03.03.32.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Aug 2026 03:32:17 -0700 (PDT) From: Sumit Kumar Date: Mon, 03 Aug 2026 16:01:47 +0530 Subject: [PATCH v2 5/5] bus: mhi: ep: Use batched read for ring caching Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260803-dma_multi_sg-v2-5-c12bb05e42d6@oss.qualcomm.com> References: <20260803-dma_multi_sg-v2-0-c12bb05e42d6@oss.qualcomm.com> In-Reply-To: <20260803-dma_multi_sg-v2-0-c12bb05e42d6@oss.qualcomm.com> To: Vinod Koul , Frank Li , Jonathan Corbet , Shuah Khan , Manivannan Sadhasivam , Jeff Hugo , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas Cc: dmaengine@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, mhi@lists.linux.dev, linux-arm-msm@vger.kernel.org, linux-pci@vger.kernel.org, Sumit Kumar X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785753106; l=3180; i=sumit.kumar@oss.qualcomm.com; s=20250409; h=from:subject:message-id; bh=kXJQnle2iy213AQWQj46cMV6D4x1j/TtR9P5Qzd56rA=; b=+8Fy0NjdzuFsiqbwvScTz4Xn76n/ysFSpxfGLANQlTO8kqhW/k29GAcN9IKv825+jmOn97fT4 OmfYqMfaJTzBIo5STgSVXs09zHTAA7nUzj1rknHfloExXKfrqI72JgI X-Developer-Key: i=sumit.kumar@oss.qualcomm.com; a=ed25519; pk=3cys6srXqLACgA68n7n7KjDeM9JiMK1w6VxzMxr0dnM= X-Authority-Analysis: v=2.4 cv=X9Ri7mTe c=1 sm=1 tr=0 ts=6a706e33 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=O-L2LWsoD7DDJCLd4zEA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: p3AZI7MReFe0GN2ZnSyVBoFFo9tyL8GE X-Proofpoint-GUID: p3AZI7MReFe0GN2ZnSyVBoFFo9tyL8GE X-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDA5NCBTYWx0ZWRfX7vMnpDOlrqw3 dX5yMZ2+ycU/qMCwSREy3NrDPykxhw35f+2UkCiOsLm8lZZYjiHd2eU5xDFHQYtalZ2uVxGNTxa DclLqLOYkbYCIhmiB7eDR6wZUSIwecc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDA5NCBTYWx0ZWRfX1fcQ5IfF0L15 0SUY8gT3eyq8CRnIbsl76KhS9STJyaVwFyF8Wf+0p73aBBxK17M+PTKl2Yl6Sxdbm/LNFlzkCmw P8gO8FEKEorISAvDt9e2CBp+imaSe96WWAEexfXxO7DPRWwmR5YJH1lbmYV6J78XBxSs/Et6KHT 3IGI1eQgmey1j8xox7mfZl56fr+6OZPv7MiKVKDmGecmoj4Kk/mBRsjkrZf4xeSz3HqO2VHHiKN St1NYhCWfvwCXMIko/g3PcDpjfGSg31yeTZBhT12mc8+nQKnuRW0XU2w+F7LtOMM98FuVGjL8SK 2wYPryWbCy0nEYd3jAxMSsIibY9nx+HOLzwj2+tJCX4oKi5f8KpLChZoBB9zmpsCMl8pIdtH/2V pXUW9DRe1mI96b4txfjM/vP5XNxTvY/MOFzKMTF1FDBKSXLytR0IVP3V7fR7WFwjrfqf/A2b7Rq eFAzJNAtqe+kc93CXTA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-02_06,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 impostorscore=0 bulkscore=0 malwarescore=0 priorityscore=1501 phishscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608030094 Optimise ring caching in __mhi_ep_cache_ring(). For the non-wraparound case, use read_sync(); for the wraparound case where ring data spans two non-contiguous host memory regions, both the tail portion (start -> ring_size) and head portion (0 -> end) are submitted using the new read_batch() API in a single operation. On DMA-capable platforms this transfers both segments in one DMA transaction. Signed-off-by: Sumit Kumar --- drivers/bus/mhi/ep/ring.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/drivers/bus/mhi/ep/ring.c b/drivers/bus/mhi/ep/ring.c index 405ce16c02a89ea2268ea1033ff5c1c26b1c81bd..a369c1eb0c0b849d7ced01b99898ca461cf680b9 100644 --- a/drivers/bus/mhi/ep/ring.c +++ b/drivers/bus/mhi/ep/ring.c @@ -30,7 +30,6 @@ static int __mhi_ep_cache_ring(struct mhi_ep_ring *ring, size_t end) { struct mhi_ep_cntrl *mhi_cntrl = ring->mhi_cntrl; struct device *dev = &mhi_cntrl->mhi_dev->dev; - struct mhi_ep_buf_info buf_info = {}; size_t start; int ret; @@ -44,6 +43,8 @@ static int __mhi_ep_cache_ring(struct mhi_ep_ring *ring, size_t end) start = ring->wr_offset; if (start < end) { + struct mhi_ep_buf_info buf_info = {}; + buf_info.size = (end - start) * sizeof(struct mhi_ring_element); buf_info.host_addr = ring->rbase + (start * sizeof(struct mhi_ring_element)); buf_info.dev_addr = &ring->ring_cache[start]; @@ -51,27 +52,30 @@ static int __mhi_ep_cache_ring(struct mhi_ep_ring *ring, size_t end) ret = mhi_cntrl->read_sync(mhi_cntrl, &buf_info); if (ret) return ret; + + dev_dbg(dev, "Cached ring: start %zu end %zu size %zu\n", start, end, + buf_info.size); } else { - buf_info.size = (ring->ring_size - start) * sizeof(struct mhi_ring_element); - buf_info.host_addr = ring->rbase + (start * sizeof(struct mhi_ring_element)); - buf_info.dev_addr = &ring->ring_cache[start]; + struct mhi_ep_buf_info buf_info[2] = {}; + u32 count = 1; - ret = mhi_cntrl->read_sync(mhi_cntrl, &buf_info); - if (ret) - return ret; + buf_info[0].size = (ring->ring_size - start) * sizeof(struct mhi_ring_element); + buf_info[0].host_addr = ring->rbase + (start * sizeof(struct mhi_ring_element)); + buf_info[0].dev_addr = &ring->ring_cache[start]; if (end) { - buf_info.host_addr = ring->rbase; - buf_info.dev_addr = &ring->ring_cache[0]; - buf_info.size = end * sizeof(struct mhi_ring_element); - - ret = mhi_cntrl->read_sync(mhi_cntrl, &buf_info); - if (ret) - return ret; + buf_info[1].size = end * sizeof(struct mhi_ring_element); + buf_info[1].host_addr = ring->rbase; + buf_info[1].dev_addr = &ring->ring_cache[0]; + count = 2; } - } + ret = mhi_cntrl->read_batch(mhi_cntrl, buf_info, count); + if (ret) + return ret; - dev_dbg(dev, "Cached ring: start %zu end %zu size %zu\n", start, end, buf_info.size); + dev_dbg(dev, "Cached ring (batched): start %zu end %zu tail_size %zu head_size %zu count %u\n", + start, end, buf_info[0].size, end ? buf_info[1].size : 0, count); + } return 0; } -- 2.34.1