From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 18F1C38D3F2 for ; Mon, 3 Aug 2026 10:32:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753141; cv=none; b=mwjeGd7FQVsoNqYdF2gXAu0oCCd1zh/kKHxPeJkabDpvfkHeBnnJvu0EzQreJMTrD+RUj/sR48mldCB8C/uLjsrLtYgw0UiJrscaUbUOdUfau2tWyVxIBSnR/NRXmas/Hc2+SsFW049sypdLn635Jckk3aHMpB45mEvXYdsYdPE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753141; c=relaxed/simple; bh=kXJQnle2iy213AQWQj46cMV6D4x1j/TtR9P5Qzd56rA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KdW3dF+lmlPerXumZ90zVzSh1MjWrbj4aP+snur2RvOp2wGeRB6VNh5gYY55K2t56iug8Wat+0pvMyMdTT1R4ueDCWD8GN5NN7dVZdjmrIigQh8h3gFowgsY1vNUEXgKpohzVY7XIvVTXrh09CFT/EIUcjOYqX/X8WB2mI1Z5C4= 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.168.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 (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6736T0GJ3759355 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-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ftnrns1nv-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-f70.google.com with SMTP id 98e67ed59e1d1-38e475f83a2so5423753a91.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=TC7EeATz+wtpYV+yTdoL/kY3OVwOS61WKWSU8kXyUpR7CYT4p4vfVdx/z81gifDuVQ LMRQfaXCoBXrtwpq+zqZB8NOVsotewEqpqSe3d2xxkgOaLW5zlmEuXEFTxiPev/C+2yt snQsKapqxRC919BF0oYb9EKWofLODR38FCotYZ0vOHlBp6/ttAZKFtnpWk7jliL6JgJg ERzOPgnAbZcj2fv9EPn8RboircskDTUMhc6ftyBBqZoEwCTdz7bSNdx33EHMbzyzJseY 95NwOGbTSuuNOleIvSC+vsHsNjahotCbCD52f0kgVhq4vABMh4CBf0b1OYKbZPSUA9Q6 Ht/g== X-Forwarded-Encrypted: i=1; AHgh+RrOJ7Nxyz6sy6vuSQ8/E9tWLTXhCd3T6V36AhhVjv2ZkheX3Eph0nP7GM1IudEg6aYn1Xqu5cYWFdI=@vger.kernel.org X-Gm-Message-State: AOJu0YyvWtUOBgykUhPpeqQKt2mEhaQpY+NMDlBHr5PQq4aiF5oSM9dc mvA20Mf5aKP+qOaTxJuL6VQpuG09fguFpbQhke8Pzb0i2TLowWivKYD7cNFhdO4Qj30qwL5vvvl COUnh/xba8zrgjVNFeV935J8TFpVtmzWuLoyoLQFEMJZMgQaOyxdmwixZ/8E8uBM= X-Gm-Gg: AR+sD113lEADs1W0scxHmMmhreF2MbdXeHlV5HzFtBZMoP+flZ0ygsEeWw+4ZCsJM/Y jMTc5fcHiu9jSEsOrJMCufFI0kkFhyVvcS2y43ejkO2aNp5AXvhOG/QlrkVomcKjRtmydfEVOFr xwJWELdeGsfkByOxF5ECYoKVKRXicXEcc2bwD0wItodYvIzznsufhD1p5U3YLfSJzr1insnyX0C 9TJwMaLT7jh8hUcGG6Wt0BlLjg9CdsBa3TE9Emx5P9QcD9QPPSqs4SWSZIDmFcmLb8D+LfhR/fr 5PjoONFG8WK7VrliLNIVtDJ+rTPpWzw8UjqaBAc76N1gqRDv1Xw6aXIsAfUaAe0bM7HkiYDTVz8 Ip6j4/EAT2sPjhlKOkEl1Yc65XQ== X-Received: by 2002:a17:90b:2588:b0:38e:712a:bb38 with SMTP id 98e67ed59e1d1-38fbc530fe4mr8942859a91.24.1785753138496; 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-doc@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-Proofpoint-Spam-Info: AW1haW4tMjYwODAzMDA5NCBTYWx0ZWRfX+Uy285e95SSj Uf/sE+SJbW5D+C/LQauuSzSAeHnEexQnpZq8fGe1CXs+IVNzQJ+dWFm1bObIdmBPqQbLNA6FdGY Y6dOY2fKq+yRFaeicq+kG96ciNQt6nU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODAzMDA5NCBTYWx0ZWRfX1xEhcrei03DI 0MjQCT6uyGJyeQ7ptKbCx/onEpMwOmZHXN+WH4Ua1N/2L8nHiLs/TFFMefig5mcynvdv2nQfPKn GaQ2rs5kQKWQfcs35L4w9mBN+HX2u20wTxYG7uaZx+vzcRLWGC0k261PxR8aI0jkRDlo/ME7P0c V5aaIhh6xwoVjAEsnmVXtgzSJ5ZYn0TUEdBRGpfqem5n9doic4ccXI3I7FkWFNVAYnxFebyLKcE HCk7Yrht7HTaR6dTaW5vxOF8N5UPKDk0pzOewbtOWf38ZV8OKL75zYc7M35MFYl1njFw/veOnAq h01j7gzLNDmIK/0O7EzChWBxJKnRN74AYg4533VZ1DcVfmk5I3neJc3mNePcX/q40+M+2WrhPEq o3yozjz4aEV498cxcB7CivqTXprL64wYpziA+YaE34wDXeV2qUuy5ZvcsglsnObT4up9QwXW6Lb yPafxkv6jpO+F18OKKw== X-Authority-Analysis: v=2.4 cv=Zest8MVA c=1 sm=1 tr=0 ts=6a706e33 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=O-L2LWsoD7DDJCLd4zEA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-GUID: uCT5YkHMz9sUSGDGVfftS0sC6boiFWe4 X-Proofpoint-ORIG-GUID: uCT5YkHMz9sUSGDGVfftS0sC6boiFWe4 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 spamscore=0 phishscore=0 clxscore=1011 adultscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 malwarescore=0 impostorscore=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