From nobody Tue Apr 7 14:39:34 2026 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 80A8634B68C for ; Fri, 13 Mar 2026 06:49:51 +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=1773384592; cv=none; b=IQaDvIsCDX/kJq+WFjzZHyIq1cUlNkmvatZNZ+FHCBytKZiSWR0dcgyDDoZ+/wDjbNXVgByWfj3U7oOxwLEQlzWKybOnLxB1EqbcAU6ICYggQF9sB2PXytbY3BRhfjtzw7Et7nlAftzglgU3PbEbCjb3W2ViHuaFA6Ws8cZQwE4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773384592; c=relaxed/simple; bh=1MnAcOLx4PCMb5gcpoEh/1Z1hW023S7M6GRMHHtlKLA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NbEh7jk1X6wNDuj/uN6da3fCAwjxb43ELBN8PQE4U480t//5HXG+myLlxlR4dokREf23wFCRvbAnj+u3LjoNxLXjCALuNGFHUHSAWgSOObjIqrElC+8shRn6RU8lcQS5vxIiU3pyHi49UQBKTCItu3Tjo71+3n4b8bHdorskWHY= 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=B/60IyaF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CG3Tz/jK; 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="B/60IyaF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CG3Tz/jK" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62D5tc0K1176371 for ; Fri, 13 Mar 2026 06:49:51 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= RxmfRvfiRh5EUIJOf3+nb5lHp4eC5Rxoat19w1qMQgw=; b=B/60IyaFTEQblyBL IWqXfMOW93sgSJnlSuyg8UJQUHGrkISHXzwsiqxVLeyqfowDemIZguR6K5OCUk06 yAcyBmXo9jnhy6rifmSpzLnd1SMw8PB5IzUndIT6BblqZ8QgcjD9D60qrp33TD9r F0bFhL19SmdQOHHywN19FycNWVG2oQWFuM75HfuYT2t9mr4LZp/m1uYM1jfRQ06j Tu0BmG3PElLOiz3D9jLQyd6Kqp+cQdSlIQTngs2GUGHda0/38Y/6y1+Sym+v1R+S ascgmSwQKDaJjKegdOYATATjrVyO/p97n4Ed+IBcOfQNmbXw+z+X3aAkfZ3m+1o9 LOrTYA== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cumvqc973-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 13 Mar 2026 06:49:50 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2aec784479cso64370375ad.3 for ; Thu, 12 Mar 2026 23:49:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773384590; x=1773989390; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=RxmfRvfiRh5EUIJOf3+nb5lHp4eC5Rxoat19w1qMQgw=; b=CG3Tz/jKMdelq4t5HeO5dTpyzC74l01FlHPuxFSdmgTkuvdjjSuXcMVaWdVxNkB+Y4 atlfzItjzTMiATWke27yFoS7C1a587UiiA3N51xyYGUhhLN79qpPw1b9C2C/s/uOynu9 8gwFw4ct4H+gbJDZeKS7AWAycCzKPsSpE5m1RFAsVjtPtQHOwqL+IwAWpk4GkkzLOc9P iW9NxMpUjQOrqA6I4KBRksNERvAW5YtpOpBUIZpbfCPxAeyecaMId77GlyvObuS2BMAh jytnN8T7mPVHTh2cutf63a6k9LoJTWO9TEobhQR+GTApWh7VAXRGYjycX/ejqqMeayVM XbNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773384590; x=1773989390; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RxmfRvfiRh5EUIJOf3+nb5lHp4eC5Rxoat19w1qMQgw=; b=j4LpaH28+8JuQR+whHYTr6Vs+Cj89jSd1b35HbXAWLXygufW3lDNPU42rRaohGvh3M EGSSJv31Xv9EEv+sgPe8Bjm4NDo16rq3YaEZOTfAdhFUUSk2fbEU7SlB5mvNYqUQiaQ6 aCVdxwM2iYiAx7aqmEv5yNZyINtf2stlF1zZCbOZMpMqzbTUWTK24n4yUuaPKjFhMkAk Bct+AZiBxa1YXstb/sSl5WA3bQLArUDufqOSWvnpAm7/BKnNuy+13lkNITjdJK1PvYKb Xi5q2vgXxU4vMC7HWElAbUbl6ZkfEYabnbJ274AM+b98RMT6BLCe0f3oG0knpyZO53sg xtcg== X-Forwarded-Encrypted: i=1; AJvYcCUURpAWVAtJpQq3aHBuYeyCeH7LRn/5+zIs+ziKxMYxzp1KT9tJb7Y6x1p3c8zWgdvEZFVnUQ2qGFEe+gM=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4OFIPlYE3hw4tt9g/LBM473NUstmQMkwNq4B6OJ48mn14a7Nd JGwmHzzvsQHh8jgXLdBOG44f1p+7CpufKOGiiEXWKjvpoUE4jk+pKmMQZwSAhQFIsHKjqWgIryh XFoE92rcHBepFnOj/otPbjwVxKeLlEpzwhRZcV9fRXWgIAcBbx5PuvtdOR/pzgdL96Wk= X-Gm-Gg: ATEYQzyL15tAH3Mg3rDSLg3DolfjSS4Cj+2ZVmzl7OYcShnbSCaicg9PgYMQb0GI/cZ PaGWGYpcCbZZy4bJhBsSGIEM4AcDfToMZL/NH1cl3BVP0w5qrOtYO/T5xuFQDH4loZpgS6Arxx+ Fi6ZI72BJzoI20YpyAZB4qAuuJa5aaUBx5RD/SxGRyXyELCtZpqit4Et2hhxBWoHbzZOXnBIp5W V26pfxpfIspVLcOfy57oYNYOgyd07Y57cBZColG1J4Lt02MX0T+RdrKueN3IHOSjf6PkjvAHFF8 C2m0XS958A/2Oy2JS7EOlIiM4nN8W5Hh0KuGoKD8a5htjDEMv0T58OQhQ2aJNrcSG7OE4H9vKYQ vJc+NwNkNiWJs5MynpJEeVwTFbtBjJoSJui2RYoPFo7lIreo= X-Received: by 2002:a05:6a21:7704:b0:398:c0ba:9cef with SMTP id adf61e73a8af0-398ec9bb845mr1879521637.4.1773384590120; Thu, 12 Mar 2026 23:49:50 -0700 (PDT) X-Received: by 2002:a05:6a21:7704:b0:398:c0ba:9cef with SMTP id adf61e73a8af0-398ec9bb845mr1879489637.4.1773384589622; Thu, 12 Mar 2026 23:49:49 -0700 (PDT) Received: from hu-sumk-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c73eb97b41dsm936160a12.5.2026.03.12.23.49.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2026 23:49:49 -0700 (PDT) From: Sumit Kumar Date: Fri, 13 Mar 2026 12:19:27 +0530 Subject: [PATCH 3/3] 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: quoted-printable Message-Id: <20260313-dma_multi_sg-v1-3-8fabb0d1a759@oss.qualcomm.com> References: <20260313-dma_multi_sg-v1-0-8fabb0d1a759@oss.qualcomm.com> In-Reply-To: <20260313-dma_multi_sg-v1-0-8fabb0d1a759@oss.qualcomm.com> To: Krishna Chaitanya Chundru , Veerabhadrarao Badiganti , Subramanian Ananthanarayanan , Akhil Vinod , Manivannan Sadhasivam , Vinod Koul , Marek Szyprowski , Robin Murphy , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Kishon Vijay Abraham I , Bjorn Helgaas Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, iommu@lists.linux.dev, linux-pci@vger.kernel.org, mhi@lists.linux.dev, linux-arm-msm@vger.kernel.org, Sumit Kumar X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773384567; l=3155; i=sumit.kumar@oss.qualcomm.com; s=20250409; h=from:subject:message-id; bh=1MnAcOLx4PCMb5gcpoEh/1Z1hW023S7M6GRMHHtlKLA=; b=NG0SR4yVM0HV9OxMyQEnpKZl7hPzWEPlYMzQKUu/FDNzjAOqk6TmOE7GksQxJPF6zYeVbDVTJ 96I85imVw15Ar0TX2v3sEbYcdkfX+Awb8CRi+kd2+Xn4L5c6xARalAW X-Developer-Key: i=sumit.kumar@oss.qualcomm.com; a=ed25519; pk=3cys6srXqLACgA68n7n7KjDeM9JiMK1w6VxzMxr0dnM= X-Proofpoint-ORIG-GUID: JUn6Jj030chHG588P3ZbiNbKMHM02iGl X-Proofpoint-GUID: JUn6Jj030chHG588P3ZbiNbKMHM02iGl X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzEzMDA1MyBTYWx0ZWRfX1fS3hAuXetPA 2OutncHnNQ8K18YY1fVPt/np3mR4zuK+Ol2PlXMj86QopCBkJSZXkkBp89O7CAWInyJi+VQ2dOd Cj2P1ffZ/V95z/EYQEeshqlNo2ONy4K96mYKsV3gInXQ+eqDBnU7oUQ/AYAiAMIVjLzvhTh6rJm mXYSH+KLQdvEdU4SToXo6rnx3WbvccSEMMVrArAHk6QtRCG8ejR2AAmNQVDi/QKo0XRkEzMHj0M z1bWVp4lTz7C/qV/NZXzhyLrV5627wwKohuZ9elKbRqv3sgyceshXvmFlIBF+016mN6Lo70SKWt BF2lq8wcazojn2iqzGBvcLl8I8Oa+ACeXgvLQD3se3eFUKLoGlHX7KxfVJ1oAbiPSR0jUY4InB3 GZtFiYuHKG4jCwO/clO7ftDZmQ5pPtZWnXhpvFm2kD5rrMAazTjI2q2gZhNWXue8tO0Qhg+bak8 VuGDiTjiK2umUhpNsAg== X-Authority-Analysis: v=2.4 cv=ccHfb3DM c=1 sm=1 tr=0 ts=69b3b38e cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=gm0tR4x7yrig-FKTUfQA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-13_01,2026-03-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 malwarescore=0 suspectscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 spamscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603130053 Simplify ring caching logic by using the new read_batch() callback for all ring read operations, replacing the previous approach that used separate read_sync() calls. Signed-off-by: Sumit Kumar --- drivers/bus/mhi/ep/ring.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/drivers/bus/mhi/ep/ring.c b/drivers/bus/mhi/ep/ring.c index 26357ee68dee984d70ae5bf39f8f09f2cbcafe30..03c60c579e12c3bad100c7e1b6a= 75ae0e5646281 100644 --- a/drivers/bus/mhi/ep/ring.c +++ b/drivers/bus/mhi/ep/ring.c @@ -30,7 +30,7 @@ static int __mhi_ep_cache_ring(struct mhi_ep_ring *ring, = size_t end) { struct mhi_ep_cntrl *mhi_cntrl =3D ring->mhi_cntrl; struct device *dev =3D &mhi_cntrl->mhi_dev->dev; - struct mhi_ep_buf_info buf_info =3D {}; + struct mhi_ep_buf_info buf_info[2] =3D {}; size_t start; int ret; =20 @@ -44,35 +44,38 @@ static int __mhi_ep_cache_ring(struct mhi_ep_ring *ring= , size_t end) =20 start =3D ring->wr_offset; if (start < end) { - buf_info.size =3D (end - start) * sizeof(struct mhi_ring_element); - buf_info.host_addr =3D ring->rbase + (start * sizeof(struct mhi_ring_ele= ment)); - buf_info.dev_addr =3D &ring->ring_cache[start]; + /* No wraparound */ + buf_info[0].size =3D (end - start) * sizeof(struct mhi_ring_element); + buf_info[0].host_addr =3D ring->rbase + (start * sizeof(struct mhi_ring_= element)); + buf_info[0].dev_addr =3D &ring->ring_cache[start]; =20 - ret =3D mhi_cntrl->read_sync(mhi_cntrl, &buf_info); + ret =3D mhi_cntrl->read_batch(mhi_cntrl, buf_info, 1); if (ret < 0) return ret; + + dev_dbg(dev, "Cached ring: start %zu end %zu size %zu\n", start, end, + buf_info[0].size); } else { - buf_info.size =3D (ring->ring_size - start) * sizeof(struct mhi_ring_ele= ment); - buf_info.host_addr =3D ring->rbase + (start * sizeof(struct mhi_ring_ele= ment)); - buf_info.dev_addr =3D &ring->ring_cache[start]; + /* Wraparound */ + + /* Buffer 0: Tail portion (start =E2=86=92 ring_size) */ + buf_info[0].size =3D (ring->ring_size - start) * sizeof(struct mhi_ring_= element); + buf_info[0].host_addr =3D ring->rbase + (start * sizeof(struct mhi_ring_= element)); + buf_info[0].dev_addr =3D &ring->ring_cache[start]; =20 - ret =3D mhi_cntrl->read_sync(mhi_cntrl, &buf_info); + /* Buffer 1: Head portion (0 =E2=86=92 end) */ + buf_info[1].size =3D end * sizeof(struct mhi_ring_element); + buf_info[1].host_addr =3D ring->rbase; + buf_info[1].dev_addr =3D &ring->ring_cache[0]; + + ret =3D mhi_cntrl->read_batch(mhi_cntrl, buf_info, 2); if (ret < 0) return ret; =20 - if (end) { - buf_info.host_addr =3D ring->rbase; - buf_info.dev_addr =3D &ring->ring_cache[0]; - buf_info.size =3D end * sizeof(struct mhi_ring_element); - - ret =3D mhi_cntrl->read_sync(mhi_cntrl, &buf_info); - if (ret < 0) - return ret; - } + dev_dbg(dev, "Cached ring (batched): start %zu end %zu tail_size %zu hea= d_size %zu\n", + start, end, buf_info[0].size, buf_info[1].size); } =20 - dev_dbg(dev, "Cached ring: start %zu end %zu size %zu\n", start, end, buf= _info.size); - return 0; } =20 --=20 2.34.1