From nobody Mon May 25 23:44:52 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 27AE635B657 for ; Fri, 24 Apr 2026 09:59:16 +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=1777024757; cv=none; b=kBKFuW+A5kdqnHQexfDZBY/E2zB77APbNyECGOq5//ezmkUlhdsFYa2mPjpOPO7mhEzaMscna7vEqwf54uJ+ZsNh1esc8zgW3phnTbfnUW8uEmsiReqjZny9ZGF6vqfNKVfhUK3FiqytbO/ELzX51lCP2S6oBlW5VuqlWcXWIY0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777024757; c=relaxed/simple; bh=piLYdD9sfLzUWIAhuoTrNVSPwdPYc9JpO7ZO/zYiMIk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TROxD+wE/NRUQsXVCW36UzdWPfUbg/HO/qMbz1/AygxeOY+ldd/jNTudO6guwJn2AGa2rIDHShwqwYCGKgwBoni4pI0x42tm9Tou8K2FORQ0dMGXcK0PyWB56gG1ldWLpDUv6JMPYeXHFHHWP1zlG79gIbq0KaPH9so+9mRctiw= 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=bkquX0it; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BcOgoNAJ; 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="bkquX0it"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BcOgoNAJ" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63O9N9Xw518493 for ; Fri, 24 Apr 2026 09:59:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=hmDUYWP981+ QEsAdC4yYWGwxCIUyaTrbIpAPDTEiCGc=; b=bkquX0itnfTorykxkEFzaP8qlV0 VmknViDWfTgl5HqdL7Dsu2TDilmNVzG/B9G1nAXf9WCsuxbPcP9shAa5cvTsD+MZ YhjyymbK5HTT6QEZwBagJ1kM2G5HS6Ky/qqY8ZfUrBLqyV5f1qGP4uWwKkv74F42 x5TPciz/8sqXXIYZK32wiyX3aaYn70000Zxv2qL3T/QITRS+IMsgbnfli6OApPWx r1lTmG8UbNWu6dRxTnoOhrdcqRydnx4WIwhxv533cBNYGDCVNeFvMVbC1fEEr7Jl xFT+HbcJFUmmfc9wmAfdabPeYiruq1q3AsO6uYebOW3qcEsmKi4BKQNk4RQ== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dr0fnhfpx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Apr 2026 09:59:15 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-82f9f49e4beso3985495b3a.0 for ; Fri, 24 Apr 2026 02:59:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777024755; x=1777629555; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hmDUYWP981+QEsAdC4yYWGwxCIUyaTrbIpAPDTEiCGc=; b=BcOgoNAJo7hlI2EfZf5D5Xp6cvgqYvFpisRtkct6bQNj8Rc8m4YGxLZBeG9wNh8Lp6 EJzQVnqyKEzxEDvgoXt/jLiI4PlubBDw3OR6X5PrI2cLraOf3ZrLGjiBejqwVRmwGjr2 Jr+gjsoBqbI/uP9QjXsCj11r/RLjVv9I3ol2sJFTKjgjyM9rQUTS0XjV8/YVdpKxycqE gqrlZs0Slam/iHdHfTDsRJuIvyyPg7zP9pzELgGTt6e8zeSLxntEKvotputUv5ycKbZi GlWuXRcMBsp6D3JZmytkKWNL0rKj7LN4V+gL0NNsTDhMIbBHxOVPgBb+IJudtPxb6ttJ z8pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777024755; x=1777629555; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hmDUYWP981+QEsAdC4yYWGwxCIUyaTrbIpAPDTEiCGc=; b=FT84dgucGVD2duqcHMnxWXDK3uR2g86YUQpk3wMfzEUlBT1FYbPsmYZg0DuhW4WJIi jt56jBVZgzUuEOZZMjwKXbzEgpppQ93AFbHWOYHe4NqMYixCrCiSuY/vWyK2swDAsHWA cabel/vbhRllHVlrjEZ3CaPElDwuNlnEpKXMlY+kX8Wh/QyWECvCUP+ZbfxgRhSi5dKj Xf3zohsRktSLhpPsHK3UpqLq+E+4ZoDnheaUVYxhyqQ3GJbtSwmDsLVvHVhapBHZit8z wvg51GpvG2anUTbHB7Tb4g/gqueBKUw6aKZhTlqupligX8Wq07YfSbVbRxkcprJ9msli MMvQ== X-Forwarded-Encrypted: i=1; AFNElJ/yPg/BzO8OFIYXsj2YKuGLgs/s7y7oUkcbKABt6+QkaL/EVXndXhN4bXa2eywygRtEJICNHXfSOI0ZrAQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzqAK6A7O0nlHGqKSKsoGuVMvBF7VXjqmkRjlvKHj5VhDtEeVPG AUMSqk2M+67iHrVnKgU2JBL35o60i7guhLmquxxdJk73OyXRnsQZNmq97L/HPniSY/b2Ji0gRU2 15TNM4osnBjva4KA+VkQFfjXz2BUs+WiayFYpot2wBOqadc7oDVOQb5WXz5aNk+vv3Qw= X-Gm-Gg: AeBDiesFOWBPzkJIU3/IdElx0E+IWU97u0ePOCBU/lPBlCDWNykRnGut2i9J0RU1lQx s/OkbG0Q77b2WsYF167OmZiydHEJo7ClfZM56ecGtskyU3E5gINNUCa8tT6HrS4n7iJ5YY8w4MF 0JedrwEPfSmwtLs88iuvGpSYIvYYaLYxU7+NmbZjkYYLq+TlgPIa9Aj4fkDwmTZR4lQWSkXdpSq VKBB6p/HpeLAhsnMTqj2q7/7mhwe+OWdcVPdGHbr4lI5oN85JaW1bEdcwjopWcSla34Bm80YTOq Vj+klCXmznMnUvSaG/+S2Su5OmlqxzicFBa6ME2yS3kQqYkXTWRdW2yqpBb0JbPqjPCXFontEaL xSy1dBGDQ9shLMBK7x5YGKeDU6d7ax3rWglOkqZ03POhA1lK0+0sBINW+6RPaIYiY X-Received: by 2002:a05:6a00:2ea5:b0:82f:1973:4b96 with SMTP id d2e1a72fcca58-82f8c91bc71mr36146460b3a.26.1777024754902; Fri, 24 Apr 2026 02:59:14 -0700 (PDT) X-Received: by 2002:a05:6a00:2ea5:b0:82f:1973:4b96 with SMTP id d2e1a72fcca58-82f8c91bc71mr36146432b3a.26.1777024754364; Fri, 24 Apr 2026 02:59:14 -0700 (PDT) Received: from hu-ekangupt-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9d35acsm23679702b3a.15.2026.04.24.02.59.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 02:59:13 -0700 (PDT) From: Ekansh Gupta To: srini@kernel.org, linux-arm-msm@vger.kernel.org Cc: gregkh@linuxfoundation.org, quic_bkumar@quicinc.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, arnd@arndb.de, dmitry.baryshkov@oss.qualcomm.com, ltuikov89@gmail.com, konrad.dybcio@oss.qualcomm.com, andersson@kernel.org Subject: [PATCH v10 1/4] misc: fastrpc: Move fdlist to invoke context structure Date: Fri, 24 Apr 2026 15:29:00 +0530 Message-Id: <20260424095903.1622565-2-ekansh.gupta@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> References: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=LfYMLDfi c=1 sm=1 tr=0 ts=69eb3ef3 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=HL6mAI18knL3XnPGOeUA:9 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA5MyBTYWx0ZWRfX9p9zbPYAD1Tc t9KoaqHTQ22HmxFKNetdazDrskU7L/twW4n7wqGO5ZZw/FcxXa3+2JBuaO5Oo5fY1mNJvpaFSeF OKQnVauxFD59JUBRGf4PMuG5BYGJsPmTdprN4itHRQ2onZTjhtHgs7xu0smBabtq1WPJ9V06UAB WPQjGtJepQj/2CQUUT0ZsJyIqNTwUSQ/udwD96rG0+9MwLUdNVobjlGL6euSYyN70pLYqjdU3nx 4mJTuwBng1dt5g8fpno/Do9NMMIIFBEd1ijnBXUCbFYU6dZm/+HMa0PIFFt80rI60GWpQSP6lkC tDwtn89oOboOSVyYDDco7ROsuz/S38nwnJDrBjmm6+GVEWhuF3ui0TQVi3bnMirl7w/KQ4mQC3V Cx5YAw8C3EOFKhUpOTTap6345uM1fSZvBYo5P8jE0as+N3GIdDhAT6kFaSKpzoAimKmgeI+JXBV 1sZv9uCWNAM2JX63nng== X-Proofpoint-ORIG-GUID: uwh3t2J69O5HgK2_gaboFrFaZOPgBloM X-Proofpoint-GUID: uwh3t2J69O5HgK2_gaboFrFaZOPgBloM 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-04-23_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 adultscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 spamscore=0 impostorscore=0 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240093 Content-Type: text/plain; charset="utf-8" The fdlist is currently part of the meta buffer which is set during fastrpc_get_args(), this fdlist is getting recalculated during fastrpc_put_args(). Move fdlist to the invoke context structure to improve maintainability and reduce redundancy. This centralizes its handling and simplifies meta buffer preparation and reading logic. Reviewed-by: Dmitry Baryshkov Signed-off-by: Ekansh Gupta --- drivers/misc/fastrpc.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 1080f9acf70a..a9f507a88c67 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -233,6 +233,7 @@ struct fastrpc_invoke_ctx { int pid; int client_id; u32 sc; + u64 *fdlist; u32 *crc; u64 ctxid; u64 msg_sz; @@ -1016,6 +1017,7 @@ static int fastrpc_get_args(u32 kernel, struct fastrp= c_invoke_ctx *ctx) rpra =3D ctx->buf->virt; list =3D fastrpc_invoke_buf_start(rpra, ctx->nscalars); pages =3D fastrpc_phy_page_start(list, ctx->nscalars); + ctx->fdlist =3D (u64 *)(pages + ctx->nscalars); args =3D (uintptr_t)ctx->buf->virt + metalen; rlen =3D pkt_size - metalen; ctx->rpra =3D rpra; @@ -1118,18 +1120,11 @@ static int fastrpc_put_args(struct fastrpc_invoke_c= tx *ctx, union fastrpc_remote_arg *rpra =3D ctx->rpra; struct fastrpc_user *fl =3D ctx->fl; struct fastrpc_map *mmap =3D NULL; - struct fastrpc_invoke_buf *list; - struct fastrpc_phy_page *pages; - u64 *fdlist; - int i, inbufs, outbufs, handles; + u64 *fdlist =3D ctx->fdlist; + int i, inbufs; int ret =3D 0; =20 inbufs =3D REMOTE_SCALARS_INBUFS(ctx->sc); - outbufs =3D REMOTE_SCALARS_OUTBUFS(ctx->sc); - handles =3D REMOTE_SCALARS_INHANDLES(ctx->sc) + REMOTE_SCALARS_OUTHANDLES= (ctx->sc); - list =3D fastrpc_invoke_buf_start(rpra, ctx->nscalars); - pages =3D fastrpc_phy_page_start(list, ctx->nscalars); - fdlist =3D (uint64_t *)(pages + inbufs + outbufs + handles); =20 for (i =3D inbufs; i < ctx->nbufs; ++i) { if (!ctx->maps[i]) { --=20 2.34.1 From nobody Mon May 25 23:44:52 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 01D9B35A95A for ; Fri, 24 Apr 2026 09:59: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=1777024762; cv=none; b=DWlVqlEAtuh/HY1icUOyc+3e5ZbmJzX1KDBZ2ElAaQm9bI7r55PFjGZNFCDHiqn21plT+kDdyX/mJNsygatJ1YmZqLQbWisRN8MQS0MmhkZ3pp0jvcW5h3Qt2i7sJPssymSPOejhCPjASsXFwi/UVRf8SNfGgIOejyufhVEkn6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777024762; c=relaxed/simple; bh=1ddE0U7h9weXbIaT7HOzewRICM+9yO0cSWfl91aUt5Y=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TgyISb1SGv/aro/9SfbSj6Q/1UYUN15wdXymCfjAxtwYHnqrVNibuU5HcXU34ED61M8kV4fw/XWIFF8rD9rx6fSvOKWjNyoau4XVW7B91OTjG0eJsYV2U2iu5OWcs3XatMI0J9CYW8/L/8zL7NBvOW6t0TelXQMU8XpdG44kOBs= 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=FQ2e6FWR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CjKWTe4t; 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="FQ2e6FWR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CjKWTe4t" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63O8H7lq2291550 for ; Fri, 24 Apr 2026 09:59:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=JIaEBu2fXti OblnnO/rwwIoef8J83XO0Fyvu0X3nK9Q=; b=FQ2e6FWRljlMUNbVPh4e9UcRVw2 nb+bAB7ZnDazynDz1UA9VQLn4jewRB2iDOyqxkpIyJu/k8WKKn36Wtr/VdL1GV/+ ZItwReRkaBA83DiIRFM1SZzHX6lBiL8qV+gNyqxHtfh8IwrXPSDAaKEN4hSlGq8t dzxl2fD4dRli9oTon7uHxVkwHPgWzbgQaS+k1GuQBxUv8vqSmdL74Qup7H3YO6RB npw+A2j9najKyOX6jSjPfwnm110QYUm7MY4p8MJwtR1Mp6s1d8+3Pk36+dmGZDwp mMElfAtvCagGnPmoWw+5BiEESyCg6kyVC1c8NEgNSpZDWTg73jxsdd+tdcg== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqxbp9veb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Apr 2026 09:59:20 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-82fa366fb79so7143631b3a.2 for ; Fri, 24 Apr 2026 02:59:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777024759; x=1777629559; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JIaEBu2fXtiOblnnO/rwwIoef8J83XO0Fyvu0X3nK9Q=; b=CjKWTe4tLg+IGCIEI5oScVx16KoU/LejP18Zya4vTvIDL0Q0SrCfLtvcyhhKRNbSCv W3tf7k6oeQYhBHlqKGY+gCxwqxeBqM3nkwEePPTFQnxIt48PtAnW3WbE/QH/bHLlwVH6 MCV4yfnLbBp/BC2sc4iJ+X8z8IySk7l050IDB1yLi44AFyUvmvLpcTq16Rbdb3B5EpMC Ed/1Wb6dBGb+c76iaVYr5p2YtGI7qqEqduxJdb9Q0H0tz6iJyV4C4DQ2a1twRpHZ8wXs IeAig7o6INL0ZK70qeCwl/u+1Z9s4qAnbsxrkcUQ4zDB4BtAvQjySh9aOL9Qlzht2AUG LXkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777024759; x=1777629559; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JIaEBu2fXtiOblnnO/rwwIoef8J83XO0Fyvu0X3nK9Q=; b=C05U0mo++/vs2FuQUEUOfxeNL0f3DDGbptyQvDjceXpTd19aku5BLFEhLcGp8xOUm0 VGdoklUB/fWh067Ic5kJB5bSRNN6TGS3ZDWB3enbeF22m4Rt+BYZawmYy5PP111B5hfg OGOy1IzLCxc1AmuEWQQA56A7bNffGDsuKIzL0OvMucb1Ly21ZtqSp9yMsUbLqbgjg0xM KYX0KnEMOVcizV7+GsH+Jee4AzLkGekRHMaSJLNbIjxt1/SjylnXnq+YMaWv8kKnx4+h Try0pRUtksFujdxjbJCRspXLeccPFD+/ectvn1xvdI8fy4Jqp0iJe6gcrVPR7SEsEir4 2ApQ== X-Forwarded-Encrypted: i=1; AFNElJ9dN9sV8Gc2gIPsI1cacRTjSTt+NEuXqEKGOfR1BWuTctjtN8MRm9EPSMoW/jDEh/l5KiwXiAu0IEwWJ+s=@vger.kernel.org X-Gm-Message-State: AOJu0YzZyTcJeh08TohnG+cMptDpy9KuV7lixN1hyOSdQSUiHF6cZHBf B2Rirb8esUa2BgEGOXfuaVAC1TS21HOGCgxWdkMamXjeQkedjgRjZ6ZQgdLVud9f39xu/CbMreS YpgLqr3ENEBd789/LmSt9voR2yGbq5oq3mDRSKQEgRlrT/cKNeKizSzkidXb0CWHE/fQ= X-Gm-Gg: AeBDieu/GvW6IVAjA9v9JzCg9SePOUwMk4BSZvUTcfqWmdWkWi9LcRdNSwlzhmM2+ad 2ErAShaONXJtXxy6HczsPO2gx+sanAYZIWkldXa/DWD04mRAVOE/+QEant1G6JwO8W1l8Gr5Iuh EoJsLU86omH4u2eEoVjc10kzBPOuNMnm0bqoMsJq+YwOX00f9TjF0OOFaibMxolYylzZFyq+p+5 QZCpxjD5jcqHnqq2xqThgdy8koUymVkPq4SgghfMISzRRQK+lV80U9+cOoOM0QQcAVJoGGTgsbq mJBnNhG13M8ZUxKcAYcHay3jEtNlcOFCXsAz1CKJtZMojUfb2wyr15maPnzkBku9CUo4OARyY8S HiObEB5RG8buSOTafNf/8dqxAO1LB29gxmoXDopNdTO43mBoqJHvzwM09bbCRG5tg X-Received: by 2002:a05:6a00:3498:b0:82f:4566:bbdf with SMTP id d2e1a72fcca58-82f8c862662mr32861544b3a.14.1777024759376; Fri, 24 Apr 2026 02:59:19 -0700 (PDT) X-Received: by 2002:a05:6a00:3498:b0:82f:4566:bbdf with SMTP id d2e1a72fcca58-82f8c862662mr32861517b3a.14.1777024758896; Fri, 24 Apr 2026 02:59:18 -0700 (PDT) Received: from hu-ekangupt-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9d35acsm23679702b3a.15.2026.04.24.02.59.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 02:59:18 -0700 (PDT) From: Ekansh Gupta To: srini@kernel.org, linux-arm-msm@vger.kernel.org Cc: gregkh@linuxfoundation.org, quic_bkumar@quicinc.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, arnd@arndb.de, dmitry.baryshkov@oss.qualcomm.com, ltuikov89@gmail.com, konrad.dybcio@oss.qualcomm.com, andersson@kernel.org Subject: [PATCH v10 2/4] misc: fastrpc: Replace hardcoded ctxid mask with GENMASK Date: Fri, 24 Apr 2026 15:29:01 +0530 Message-Id: <20260424095903.1622565-3-ekansh.gupta@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> References: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: f4zuD8od4hetaG_83dRB0BRekHCR4s1- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA5MyBTYWx0ZWRfXy4aHrWs34BgI UXZdls5M5PtSYQ/Au64wnVllhVxruFGoDWo5jpe5bpLK74nANBSMoEd9ik0B+ThGHhxq8+mxpMJ AS1ZS11hNi8AjJotgxLXYuWasHiYbKosNQD/zhUkio1NJbm1KOq4vefebevudaAW9Kh/Vpap4PJ QwVV3EIlTSm0lIF6LZoZUbWohbP7sXoIUc6UBnbpzCkjbGXPRrGRYADPTNLn4kcBO8WuEyhYjz1 VYT/VTULCwzTJVez3f5O/THSMtGz7FtOnE7lIFWNWIe5aK0dv2HY3cQVU1UDGLKPqNjBsc0Umix 9zgTE8Q2/Tskenl9LHAGSK7iAR+BAoRQWKnAwjbny7/fKKF8MzbD6XmUbOJ2cuSpHROfbECr3Ad j6drQO5H9c3HV4meC8UC68q2+rppbKmuLaixiOd9bY40/aDHjpZjgfBk0h0KqS0Kf4KMOzR3KH1 lB2lL883fUdgpToZdVw== X-Proofpoint-ORIG-GUID: f4zuD8od4hetaG_83dRB0BRekHCR4s1- X-Authority-Analysis: v=2.4 cv=X+li7mTe c=1 sm=1 tr=0 ts=69eb3ef8 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=HL6mAI18knL3XnPGOeUA:9 a=IoOABgeZipijB_acs4fv: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-04-23_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240093 Content-Type: text/plain; charset="utf-8" Replace the hardcoded context ID mask (0xFF0) with GENMASK(11, 4) to improve readability and follow kernel bitfield conventions. Use FIELD_PREP and FIELD_GET instead of manual shifts for setting and extracting ctxid values. Reviewed-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov Signed-off-by: Ekansh Gupta --- drivers/misc/fastrpc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index a9f507a88c67..3f5d5d73be5a 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -23,6 +23,7 @@ #include #include #include +#include =20 #define ADSP_DOMAIN_ID (0) #define MDSP_DOMAIN_ID (1) @@ -37,7 +38,7 @@ #define FASTRPC_CTX_MAX (256) #define FASTRPC_INIT_HANDLE 1 #define FASTRPC_DSP_UTILITIES_HANDLE 2 -#define FASTRPC_CTXID_MASK (0xFF0) +#define FASTRPC_CTXID_MASK GENMASK(11, 4) #define INIT_FILELEN_MAX (2 * 1024 * 1024) #define INIT_FILE_NAMELEN_MAX (128) #define FASTRPC_DEVICE_NAME "fastrpc" @@ -515,7 +516,7 @@ static void fastrpc_context_free(struct kref *ref) fastrpc_buf_free(ctx->buf); =20 spin_lock_irqsave(&cctx->lock, flags); - idr_remove(&cctx->ctx_idr, ctx->ctxid >> 4); + idr_remove(&cctx->ctx_idr, FIELD_GET(FASTRPC_CTXID_MASK, ctx->ctxid)); spin_unlock_irqrestore(&cctx->lock, flags); =20 kfree(ctx->maps); @@ -649,7 +650,7 @@ static struct fastrpc_invoke_ctx *fastrpc_context_alloc( spin_unlock_irqrestore(&cctx->lock, flags); goto err_idr; } - ctx->ctxid =3D ret << 4; + ctx->ctxid =3D FIELD_PREP(FASTRPC_CTXID_MASK, ret); spin_unlock_irqrestore(&cctx->lock, flags); =20 kref_init(&ctx->refcount); @@ -2508,7 +2509,7 @@ static int fastrpc_rpmsg_callback(struct rpmsg_device= *rpdev, void *data, if (len < sizeof(*rsp)) return -EINVAL; =20 - ctxid =3D ((rsp->ctx & FASTRPC_CTXID_MASK) >> 4); + ctxid =3D FIELD_GET(FASTRPC_CTXID_MASK, rsp->ctx); =20 spin_lock_irqsave(&cctx->lock, flags); ctx =3D idr_find(&cctx->ctx_idr, ctxid); --=20 2.34.1 From nobody Mon May 25 23:44:52 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 5838235B653 for ; Fri, 24 Apr 2026 09:59:25 +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=1777024766; cv=none; b=Ro7jcsfCNV1yvv+PIVOPjIA9P3ZYuFrILF9/XUvdGt2d/b05K6KhX7GeDJ0b3m2EFToimKQgnA5GEyqLCEn3ZS4Wj9C6XnZ/hLrduYIoZFjBfjCjYg7iKqNkdkTs+39lY3Jlpur56hdfVFNI7kc7drNdIGJ3AiKGOW0VwX01/2I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777024766; c=relaxed/simple; bh=wLHY1YKwTOtJ5TMOu7Sc4w4rQ5+KEfPEjuD58JrY/gw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MEn/SNrx8JuFcZCQET3gEHxNIIUkcZjetH6qo8RsM2xmxfOgwCoBk3jw/BoFwJBS+kTKRx87hwpIrPZ65F9p93GOSOb5F75hD5aUIt5j9l1G7so5jgIq4un7zmExB+NLX+rMJo4frz78ngoqqUD+QlPQ+ekTTxsUvjICpR9+3Jc= 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=O+Mx6JYq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Eeq0OKdG; 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="O+Mx6JYq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Eeq0OKdG" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63O8H7lr2291550 for ; Fri, 24 Apr 2026 09:59:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=tFUu7w/Mdhl BRhU4Ur6TRUhTba4EbTByy053HqbjsgU=; b=O+Mx6JYq7lRFZnEvnCHom8+ViqT vUb/8nKJbqqYoLFxCdnrkK8qkmQraq9eE/UikMhzqK4la3A2hLQbgfUv5nzXr2vM xcVYWE1e4ttib7gQ3oBPEtQytC862/CO3HyokD2leb2Tnlcbj1bnhe8UZqrD6w3S pLeOiuoMKdVVvDPtwuO2CjwUzMOfF5twIUdWyMQXf8PSwO2wGrrWi3u38x4Go7Es v2fcyINrSoIJ77DNWoVBdivKa4rpuhEcf+gEPdS2ZYJnFeD0+KDBLqehq+NjYIys Tjmzv8rU/FvHx70clezLYFEVcXrj7+XuZVItDK9QGbjAxl+JNT5S8Hml1UA== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqxbp9vf0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Apr 2026 09:59:24 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-82f6610a6c8so4047419b3a.2 for ; Fri, 24 Apr 2026 02:59:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777024764; x=1777629564; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tFUu7w/MdhlBRhU4Ur6TRUhTba4EbTByy053HqbjsgU=; b=Eeq0OKdGyP+xY6JPCrE//PNS6hxlwhgl72RdCYkSs7zQ7QZF9PLqTvVGcQxJCA2aoV y8PF0LR7pzGvn+yRrYUCorh/zgWvyXViyJc83UvoqjfD2V2lLhiWYe5yLcixY7eqX55G Qt6nJISi9ih+SMacIZRVfFAua9NmAmBFMofb9azOy9OQxnps8pyCmxyhF6xOPGIwfK/D UQNqoawzelBpZELOOq7r7M1sfBvGl8/O2WNReu+l9y/+9V58odhAfBBiXz3rQ1DTqCEA dQ9F1vwAqtn7mnVtz4VPAk40qYtj90DrGc/aXBYxNXTr0B2dp9XgAJEhjvR5s6JX1Bzc uHww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777024764; x=1777629564; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tFUu7w/MdhlBRhU4Ur6TRUhTba4EbTByy053HqbjsgU=; b=K6qRxck6AVjpSLFA9juzd1MHsq+WAkJ3UoviB+MaKC9IjhCH1Up06yFPQL0IX0qAJr M4pAj+Tv3IGkZvYoIVJe+YP2daBVn2F28fULuzvjQlzLFd1TaU5ayLC6paN/c4ckO9Yy XLdMAq8wZsv8/FYGjHVIUqjIYJzFVymET5k21jPNlXfyZNGg+U1/5EtV7sgQo8OJKbQd 0KaNT66MnuCme6Rag9XaFmOsPHwB8kiR+wvm6CZXt2+96XUMeHuFrtTi1rzsLuqETXY/ pzdnYyVQbWVREtne5DpHVCVolZQhLxuoYVcWwXb79XM2bk+mph2d3noW2g4MQpb1Ca6e s96A== X-Forwarded-Encrypted: i=1; AFNElJ9f6WQ9Lcu3FPS2VOPi1T01szQDE602vqzigVs21SgJrPlk+9xCZohKhqwUCLErFppj6yyYAr1ZZSqLV/4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+4QPWoYIA4mpBPrs3+SJN+XtYxCugJ7CCJqKfMiG7X30c4JE1 hySrgAdBLrt/5N2yk9hKCssknxLq1jmdHD+TIDmychWiIyx4PrjqSHEM2RQsVpJZ7lwURMGXR1m 41TFuo/KOfoyvLpeihEnxS9m5l20aqbbTucwIJfwEeFEBXnm9HxEchaou9DFeT16V5zo= X-Gm-Gg: AeBDievy0pBxH05YPXKf7m9HoNtKj7M3wItU/vXppMXtYna1EyU+8yAgDXz0fLQ9bIm TMG8pLhy+GBjrGPeat4ogixLP1S6Pe4/ypNj7S/IGDsP1vKFqdbYFW8j+snBvgdJG/mstNMBjNq ezcYntT1NbcVtAd7fXvu4jwG+8xKJgpVhpeyYUajC84dDWASZVaeDP/OIEbx5IPDBTZEnNKPZrg 07d+pPfoNxnCLxc8rvxC1b0IyDnghDKY8lDSBTHPVAwll6PUU2NsdLKAZ2gORuJ6VNBOjJXXNJc epgw9voNgDYgUZYEJ+VIB5xQY2sIZRcnI6ALVOOjPriyS2BB2E9pSz3nV17IJzj9mswR1TyZkQ4 z0ANBM5/J/zmN+Z44PMlBSe5Yo7PfwRGgRO0yd1UcIqxSoQRJeogyUAhqtbFtuBIo X-Received: by 2002:a05:6a00:ba02:b0:82f:4cc9:1854 with SMTP id d2e1a72fcca58-82f8c93cffamr33456237b3a.49.1777024763937; Fri, 24 Apr 2026 02:59:23 -0700 (PDT) X-Received: by 2002:a05:6a00:ba02:b0:82f:4cc9:1854 with SMTP id d2e1a72fcca58-82f8c93cffamr33456210b3a.49.1777024763420; Fri, 24 Apr 2026 02:59:23 -0700 (PDT) Received: from hu-ekangupt-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9d35acsm23679702b3a.15.2026.04.24.02.59.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 02:59:22 -0700 (PDT) From: Ekansh Gupta To: srini@kernel.org, linux-arm-msm@vger.kernel.org Cc: gregkh@linuxfoundation.org, quic_bkumar@quicinc.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, arnd@arndb.de, dmitry.baryshkov@oss.qualcomm.com, ltuikov89@gmail.com, konrad.dybcio@oss.qualcomm.com, andersson@kernel.org Subject: [PATCH v10 3/4] misc: fastrpc: Expand context ID mask for DSP polling mode support Date: Fri, 24 Apr 2026 15:29:02 +0530 Message-Id: <20260424095903.1622565-4-ekansh.gupta@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> References: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: EIHGYbQYIQ03uWY2vh1lVcOA074IkW-N X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA5MyBTYWx0ZWRfX1lCWVkJvhzR/ Ek1Af0ec424tO8C9eby+k+r6VTsFdvj+rf2aj8YAqRY2TBecVe7tXrprNHVnPrYbZh1gkpPkbEu 75TKcux5uh7WS1ClbFGwVJFeURR8/OkP4yn3Q8pIYjpypFcG96hS/ifTal9wd+ApWyKRWubiFkf sEMM9fIN7D8mc2YRzQw/2w2LkLiMz/wK5ad1b1RHTPkYjFQySf03qkDTwYWiBSfRwm2KJ710SEU l6DpP62F+dnW+7Kedcx648ZioZfHOkCal/RvrhIHa53BKOxHC9sgrCP5UA8WO5i4FZ4vcCf8Hg9 zflqTeOyZF40SNFErfvCNep4QR8rxA5ndPUo1XaH12wzXzOcmw/aGOCFncPQViHcnOT7sKJj3mX Yp01FSiF0pQx1y/ujkws+ShN6R63VGdahlDDCd8gMJM54ya550m+WvQgyuOEC+hFdKhN1le9Lm1 IUUkyZU8vUEUhUGge/A== X-Proofpoint-ORIG-GUID: EIHGYbQYIQ03uWY2vh1lVcOA074IkW-N X-Authority-Analysis: v=2.4 cv=X+li7mTe c=1 sm=1 tr=0 ts=69eb3efc cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=JTa3dIKMUYn8LlmgGFYA:9 a=zc0IvFSfCIW2DFIPzwfm: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-04-23_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240093 Content-Type: text/plain; charset="utf-8" Current FastRPC context uses a 12-bit mask: [ID(8 bits)][PD type(4 bits)] =3D GENMASK(11, 4) This works for normal calls but fails for DSP polling mode. Polling mode expects a 16-bit layout: [15:8] =3D context ID (8 bits) [7:5] =3D reserved [4] =3D async mode bit [3:0] =3D PD type (4 bits) If async bit (bit 4) is set, DSP disables polling. With current mask, odd IDs can set this bit, causing DSP to skip poll updates. Update FASTRPC_CTXID_MASK to GENMASK(15, 8) so IDs occupy upper byte and lower byte is left for DSP flags and PD type. Reserved bits remain unused. This change is compatible with polling mode and does not break non-polling behavior. Bit layout: [15:8] =3D CCCCCCCC (context ID) [7:5] =3D xxx (reserved) [4] =3D A (async mode) [3:0] =3D PPPP (PD type) Reviewed-by: Dmitry Baryshkov Signed-off-by: Ekansh Gupta --- drivers/misc/fastrpc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index 3f5d5d73be5a..c4a3547a5c7f 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -38,7 +38,7 @@ #define FASTRPC_CTX_MAX (256) #define FASTRPC_INIT_HANDLE 1 #define FASTRPC_DSP_UTILITIES_HANDLE 2 -#define FASTRPC_CTXID_MASK GENMASK(11, 4) +#define FASTRPC_CTXID_MASK GENMASK(15, 8) #define INIT_FILELEN_MAX (2 * 1024 * 1024) #define INIT_FILE_NAMELEN_MAX (128) #define FASTRPC_DEVICE_NAME "fastrpc" --=20 2.34.1 From nobody Mon May 25 23:44:52 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 4D7F535A95A for ; Fri, 24 Apr 2026 09:59:30 +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=1777024772; cv=none; b=HoOwdTA+Y8LU/H8jhNYQe9toVKrySY+5LkDTBn3+oSCjUxAj59717sZ+IkDWUaAzkyE5Y7gC7HwOy06/N5KSWUVXeZSFAlYseiNYH6QHAOqK4qdACIvc1tIP/S6qwEo63yOZQTFLrTwex433uK7O9+ZXsubHzT8pu0iDNZi+Zww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777024772; c=relaxed/simple; bh=cyW0ydZI/AE9ZetLV0OXd3bSN+8fX9V+lplZBiIG2IU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Pjd5xJ19Il3AEknhNZh1wDVaf3bH0IFTNhVwF2Sh/Is4w8HjpxL9EviRR6cSdbUCQ6fTNb4Y2Okh1AN4HMnpFpF1K3+hCg/GGasSHDlmdMO18W4WTngVzx8fWrSpihv4N+kAidR6niffdGar5aco9AhJLMJaEwEHASRs3oCYYnE= 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=TyD7cifT; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DFIkzme/; 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="TyD7cifT"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DFIkzme/" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63O8H7lu2291550 for ; Fri, 24 Apr 2026 09:59:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=Dom1w/DSflQ pAf7/O+Im0ldhjxWikSCb1TdCzn53krs=; b=TyD7cifThF7iz77k293OG/BEXwW LTjOvQ1MZoA/Pc7QgeY0Z6/QF+6YjTS141wU84G6G4dEoPuia3ImgXsctpbXfGOP 6UHeUKJdR/zakpOSodIGIwZfqNhiiJul4R6LRmyA2CTX5bdCgaEQlkBmtm2QW5cy JfhZN+1Wseo+Sw+gb51F2oJd2QYkWFOMBQwWGot3kHjHEip1j3WIBsL/9gy4TLU2 QS1YPaPvlFI1zeCJcv1PIJpC2bHYyU4n6slojhVYj2EuzIIVMBKumuPeaV4+ipWL yYADXlSF9ynFSUSdjUAH6bGkSs4U0RW5MO8HgYisS22sXj4t7mxZAyAilOg== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqxbp9vfb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Apr 2026 09:59:29 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c795fa31e18so3935464a12.2 for ; Fri, 24 Apr 2026 02:59:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777024769; x=1777629569; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Dom1w/DSflQpAf7/O+Im0ldhjxWikSCb1TdCzn53krs=; b=DFIkzme/hydmop6Tn87OcX3t7Zl7/sL+q/NSs8JrSV+DrZlWEX1NHEWuU22ZH4UV1W qa9QXD8dw4VRoiOxIb4DSYIsq2+fl1nDFF8GPz+/bVexYJpUMetNlWrUdi+O9paKgD+u Uq8qt8txn/o1qTMWjgHanijoqmedIMUUBBS+msIsYXQXeB/WoisJpLiJSh22ahK/Pf59 qk6MReEqgsFFibIwUqmm8IZqZNiMlguYcCcZ9hKwruNmPGA6B+ERN03O4gbUOuJp+4sr BLI/rfzmUAjUS5ugM8z9VEwVmwJZYXDpU7esSCUJYZ5I7K2GCwKLbscXavnFgg0f1la5 cwnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777024769; x=1777629569; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Dom1w/DSflQpAf7/O+Im0ldhjxWikSCb1TdCzn53krs=; b=EC8ADh8mjCjMQqCbQr9FKDOcblIjy75OJ2u8PqfR7bCnySIlpoL2uzL0/KSH340yB0 DwFZUytD6ksX4p2453fVGExVksy/1pfxaKOC8wxHeYU0bN26/QGJQPN9W5Xq9mNCmeJj yPtBXVaUkTjH/n13oth7lAnCi+xBi2shBtFUa9M3U9ERU7ubeAPdWLmIakxF+US/zGPj kHtAIxOrTY0Kx5+CJ6QV1sCP+di4a3J6dVNLnTbqBcbtCMnyz02lvSHDRWy1fnpjdKpb CwpqKj6k35DGynboQBciqOx1riv4LyRdnZ0cOTQee4zIPYc43oj+j1tceLIrFcGXQGLx bJkw== X-Forwarded-Encrypted: i=1; AFNElJ9cS+aBCM0PNN6KapwVf7kHQI0q9eszujXtl4o1vN3C/vSdMQwDa8zBiI1wJxyiQLhIOs8xQHiYc0gYEwI=@vger.kernel.org X-Gm-Message-State: AOJu0YxBSxf8O5IEg/ZoynLLhHON43qf3UZHbW96fbUA9obHuOUOM6ov A+KZQRC1Vfki2+4x/jvyrhFWpaQcPqN39S0UwrB6rJ04zuFyThuJgwei3WmSNmkEje9V0uI1TgY XOolz/T0u8khRkxvQW41wC2Ertx5bBDfQtz8VRo/HqH8UC9jzCXz+RbYHtgwi3xs5D9k= X-Gm-Gg: AeBDieuIOAwDNmLC43OcQOnBbBApA2/5/IJnwZurohodvbLkHXSuG5m/A1wCpNqEEh7 Y9RxI1qJczP6uvrRxS0bt6Cia54TziIx8sDmpNS4YPkKz2WY8nTeDfX8Egy4UmoJQ49FKnzc/Po B2fSTvYG1GbieFbH3ok18IKJdCZK3KtJ9vqp9vbkpmKSqNRUU4cAYl+LNLnE9I3LHZKqPBKzL0P xJIcKi6yEOyhzseTrivS4U8LH5jJbVaC75wNfbz9M2l6hKXwcHhIGFKkI8J28wc4AQIJbHnLq8N 2z778NHNendjHjZ6zN89StlQXB9v95W3TbJa30CjvYUBy+Oe1KLkMs8SxyKVOVpTAeJJCAAT30B 5MBM1affgmDrTHXZ7SWoG9nboWu7dHTsmvAWrhikTqLB+d8BZjUN0N9Fa4aw/yRW1 X-Received: by 2002:a05:6a21:6d85:b0:3a1:5cce:ca8f with SMTP id adf61e73a8af0-3a15ccecdadmr25884329637.42.1777024768766; Fri, 24 Apr 2026 02:59:28 -0700 (PDT) X-Received: by 2002:a05:6a21:6d85:b0:3a1:5cce:ca8f with SMTP id adf61e73a8af0-3a15ccecdadmr25884303637.42.1777024768218; Fri, 24 Apr 2026 02:59:28 -0700 (PDT) Received: from hu-ekangupt-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9d35acsm23679702b3a.15.2026.04.24.02.59.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 02:59:27 -0700 (PDT) From: Ekansh Gupta To: srini@kernel.org, linux-arm-msm@vger.kernel.org Cc: gregkh@linuxfoundation.org, quic_bkumar@quicinc.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, arnd@arndb.de, dmitry.baryshkov@oss.qualcomm.com, ltuikov89@gmail.com, konrad.dybcio@oss.qualcomm.com, andersson@kernel.org Subject: [PATCH v10 4/4] misc: fastrpc: Add polling mode support for fastRPC driver Date: Fri, 24 Apr 2026 15:29:03 +0530 Message-Id: <20260424095903.1622565-5-ekansh.gupta@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> References: <20260424095903.1622565-1-ekansh.gupta@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: DXYHGmEZd8ToXPh_r7ZmgMUK9GRN-yvS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDA5MyBTYWx0ZWRfX+msTemxfcqMy VWvx9DJLvdKI5kynlwZjpY7LxsKQfuuwCdTdTppS0WcmHpu9EpowGKnUfdyidUuIqbbLHDW3aDZ OdX6FkFA6IU/aOCWC4IlxuwKK2IhHntg8f1S9ZAIUSGrFXtu9/5NLSJC4kKk4RE8VPrPz2bfHnk U6MKZ+zgVBDEHLXrjo5tRKaQLf0GqY/VcK1THl6LlX5QwLSQ/g6htjgoX9Xa6SrtRFjEwGukvDQ MxPb9wMPv0dYOgCS8TnVtQSm6ZD2AuPw0+yPwJ6V5iFLLGVvwJtSnuGqhNvqXfsI/r3sEDULNO/ Z2JHYwHV5AwFKgetHGuKg+mo+1rKUfuFXVJ2NEnipOXVZiDTFldb+Vx3ML7uFa/nPku/DLiDbOF whhNVcKcytEAvG7ThH6yb0wNSdvUyqsiPY0nZNku7yUXuAtM3g0+n6C4tP2t/IbcNG7y1N08rDu TLA6hwLA4bF4mlfmrgA== X-Proofpoint-ORIG-GUID: DXYHGmEZd8ToXPh_r7ZmgMUK9GRN-yvS X-Authority-Analysis: v=2.4 cv=X+li7mTe c=1 sm=1 tr=0 ts=69eb3f01 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=wn3mZlvuqqDVgct7km0A:9 a=bFCP_H2QrGi7Okbo017w: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-04-23_03,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 impostorscore=0 spamscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240093 Content-Type: text/plain; charset="utf-8" For any remote call to DSP, after sending an invocation message, fastRPC driver waits for glink response and during this time the CPU can go into low power modes. This adds latency to overall fastrpc call as CPU wakeup and scheduling latencies are included. Add polling mode support with which fastRPC driver will poll continuously on a memory after sending a message to remote subsystem which will eliminate CPU wakeup and scheduling latencies and reduce fastRPC overhead. In case poll timeout happens, the call will fallback to normal RPC mode. Poll mode can be enabled by user by using FASTRPC_IOCTL_SET_OPTION ioctl request with FASTRPC_POLL_MODE request id. Signed-off-by: Ekansh Gupta --- drivers/misc/fastrpc.c | 155 ++++++++++++++++++++++++++++++++++-- include/uapi/misc/fastrpc.h | 25 ++++++ 2 files changed, 173 insertions(+), 7 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index c4a3547a5c7f..b24845c7f016 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -24,6 +24,8 @@ #include #include #include +#include +#include =20 #define ADSP_DOMAIN_ID (0) #define MDSP_DOMAIN_ID (1) @@ -38,6 +40,12 @@ #define FASTRPC_CTX_MAX (256) #define FASTRPC_INIT_HANDLE 1 #define FASTRPC_DSP_UTILITIES_HANDLE 2 +/* + * Maximum handle value for static handles. + * Static handles are pre-defined, fixed numeric values statically assigned + * in the IDL file or FastRPC framework. + */ +#define FASTRPC_MAX_STATIC_HANDLE (20) #define FASTRPC_CTXID_MASK GENMASK(15, 8) #define INIT_FILELEN_MAX (2 * 1024 * 1024) #define INIT_FILE_NAMELEN_MAX (128) @@ -106,6 +114,12 @@ =20 #define miscdev_to_fdevice(d) container_of(d, struct fastrpc_device, miscd= ev) =20 +/* Poll response number from remote processor for call completion */ +#define FASTRPC_POLL_RESPONSE (0xdecaf) + +/* Polling mode timeout limit */ +#define FASTRPC_POLL_MAX_TIMEOUT_US (10000) + struct fastrpc_phy_page { dma_addr_t addr; /* dma address */ u64 size; /* size of contiguous region */ @@ -236,8 +250,14 @@ struct fastrpc_invoke_ctx { u32 sc; u64 *fdlist; u32 *crc; + /* Poll memory that DSP updates */ + u32 *poll_addr; u64 ctxid; u64 msg_sz; + /* work done status flag */ + bool is_work_done; + /* process updates poll memory instead of glink response */ + bool is_polled; struct kref refcount; struct list_head node; /* list of ctxs */ struct completion work; @@ -263,6 +283,7 @@ struct fastrpc_soc_data { u32 sid_pos; u32 dma_addr_bits_cdsp; u32 dma_addr_bits_default; + bool poll_mode_supported; }; =20 struct fastrpc_channel_ctx { @@ -285,6 +306,7 @@ struct fastrpc_channel_ctx { struct list_head invoke_interrupted_mmaps; bool secure; bool unsigned_support; + bool poll_mode_supported; u64 dma_mask; const struct fastrpc_soc_data *soc_data; }; @@ -308,6 +330,8 @@ struct fastrpc_user { int client_id; int pd; bool is_secure_dev; + /* Flags poll mode state */ + bool poll_mode; /* Lock for lists */ spinlock_t lock; /* lock for allocations */ @@ -923,7 +947,8 @@ static int fastrpc_get_meta_size(struct fastrpc_invoke_= ctx *ctx) sizeof(struct fastrpc_invoke_buf) + sizeof(struct fastrpc_phy_page)) * ctx->nscalars + sizeof(u64) * FASTRPC_MAX_FDLIST + - sizeof(u32) * FASTRPC_MAX_CRCLIST; + sizeof(u32) * FASTRPC_MAX_CRCLIST + + sizeof(u32); =20 return size; } @@ -1019,6 +1044,9 @@ static int fastrpc_get_args(u32 kernel, struct fastrp= c_invoke_ctx *ctx) list =3D fastrpc_invoke_buf_start(rpra, ctx->nscalars); pages =3D fastrpc_phy_page_start(list, ctx->nscalars); ctx->fdlist =3D (u64 *)(pages + ctx->nscalars); + ctx->poll_addr =3D (u32 *)((uintptr_t)ctx->fdlist + sizeof(u64) * FASTRPC= _MAX_FDLIST + + sizeof(u32) * FASTRPC_MAX_CRCLIST); + args =3D (uintptr_t)ctx->buf->virt + metalen; rlen =3D pkt_size - metalen; ctx->rpra =3D rpra; @@ -1188,6 +1216,61 @@ static int fastrpc_invoke_send(struct fastrpc_sessio= n_ctx *sctx, =20 } =20 +static int poll_for_remote_response(struct fastrpc_invoke_ctx *ctx) +{ + u32 val; + int ret; + + /* + * Poll until DSP writes FASTRPC_POLL_RESPONSE into *ctx->poll_addr + * or until another path marks the work done. + */ + ret =3D readl_poll_timeout_atomic(ctx->poll_addr, val, + (val =3D=3D FASTRPC_POLL_RESPONSE) || ctx->is_work_done, 1, + FASTRPC_POLL_MAX_TIMEOUT_US); + + if (!ret && val =3D=3D FASTRPC_POLL_RESPONSE) { + ctx->is_work_done =3D true; + ctx->retval =3D 0; + } + + if (ret =3D=3D -ETIMEDOUT) + ret =3D -EIO; + + return ret; +} + +static inline int fastrpc_wait_for_response(struct fastrpc_invoke_ctx *ctx, + u32 kernel) +{ + int err =3D 0; + + if (kernel) { + if (!wait_for_completion_timeout(&ctx->work, 10 * HZ)) + err =3D -ETIMEDOUT; + } else { + err =3D wait_for_completion_interruptible(&ctx->work); + } + + return err; +} + +static int fastrpc_wait_for_completion(struct fastrpc_invoke_ctx *ctx, + u32 kernel) +{ + int err; + + if (ctx->is_polled) { + err =3D poll_for_remote_response(ctx); + if (!err) + return 0; + /* If polling timed out or failed, move to normal response mode */ + ctx->is_polled =3D false; + } + + return fastrpc_wait_for_response(ctx, kernel); +} + static int fastrpc_internal_invoke(struct fastrpc_user *fl, u32 kernel, u32 handle, u32 sc, struct fastrpc_invoke_args *args) @@ -1223,13 +1306,14 @@ static int fastrpc_internal_invoke(struct fastrpc_u= ser *fl, u32 kernel, if (err) goto bail; =20 - if (kernel) { - if (!wait_for_completion_timeout(&ctx->work, 10 * HZ)) - err =3D -ETIMEDOUT; - } else { - err =3D wait_for_completion_interruptible(&ctx->work); - } + /* + * Set message context as polled if the call is for a user PD + * dynamic module and user has enabled poll mode. + */ + if (handle > FASTRPC_MAX_STATIC_HANDLE && fl->pd =3D=3D USER_PD && fl->po= ll_mode) + ctx->is_polled =3D true; =20 + err =3D fastrpc_wait_for_completion(ctx, kernel); if (err) goto bail; =20 @@ -1813,6 +1897,33 @@ static int fastrpc_get_info_from_kernel(struct fastr= pc_ioctl_capability *cap, return 0; } =20 +static int fastrpc_set_option(struct fastrpc_user *fl, char __user *argp) +{ + struct fastrpc_ioctl_set_option opt =3D {0}; + int i; + + if (copy_from_user(&opt, argp, sizeof(opt))) + return -EFAULT; + + for (i =3D 0; i < ARRAY_SIZE(opt.reserved); i++) { + if (opt.reserved[i] !=3D 0) + return -EINVAL; + } + + if (opt.request_id !=3D FASTRPC_POLL_MODE) + return -EINVAL; + + if (opt.value) { + if (!fl->cctx->poll_mode_supported) + return -EOPNOTSUPP; + fl->poll_mode =3D true; + } else { + fl->poll_mode =3D false; + } + + return 0; +} + static int fastrpc_get_dsp_info(struct fastrpc_user *fl, char __user *argp) { struct fastrpc_ioctl_capability cap =3D {0}; @@ -2168,6 +2279,9 @@ static long fastrpc_device_ioctl(struct file *file, u= nsigned int cmd, case FASTRPC_IOCTL_MEM_UNMAP: err =3D fastrpc_req_mem_unmap(fl, argp); break; + case FASTRPC_IOCTL_SET_OPTION: + err =3D fastrpc_set_option(fl, argp); + break; case FASTRPC_IOCTL_GET_DSP_INFO: err =3D fastrpc_get_dsp_info(fl, argp); break; @@ -2323,6 +2437,7 @@ static const struct fastrpc_soc_data kaanapali_soc_da= ta =3D { .sid_pos =3D 56, .dma_addr_bits_cdsp =3D 34, .dma_addr_bits_default =3D 32, + .poll_mode_supported =3D true, }; =20 static const struct fastrpc_soc_data default_soc_data =3D { @@ -2331,6 +2446,29 @@ static const struct fastrpc_soc_data default_soc_dat= a =3D { .dma_addr_bits_default =3D 32, }; =20 +/* + * Exception list for older platforms that use default_soc_data but whose + * DSP firmware supports FastRPC polling mode. + * + * NOTE: This list is intentionally closed. + * Do NOT add new platforms here. New SoCs must advertise polling mode + * support via their soc_data. + */ + +static const struct of_device_id fastrpc_poll_supported_machines[] __maybe= _unused =3D { + { .compatible =3D "qcom,milos" }, + { .compatible =3D "qcom,qcs8300" }, + { .compatible =3D "qcom,sa8775p" }, + { .compatible =3D "qcom,sar2130p" }, + { .compatible =3D "qcom,sm8450" }, + { .compatible =3D "qcom,sm8550" }, + { .compatible =3D "qcom,sm8650" }, + { .compatible =3D "qcom,sm8750" }, + { .compatible =3D "qcom,x1e80100" }, + { .compatible =3D "qcom,x1p42100" }, + {}, +}; + static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) { struct device *rdev =3D &rpdev->dev; @@ -2397,6 +2535,8 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *r= pdev) secure_dsp =3D !(of_property_read_bool(rdev->of_node, "qcom,non-secure-do= main")); data->secure =3D secure_dsp; data->soc_data =3D soc_data; + data->poll_mode_supported =3D soc_data->poll_mode_supported || + of_machine_get_match(fastrpc_poll_supported_machines); =20 switch (domain_id) { case ADSP_DOMAIN_ID: @@ -2521,6 +2661,7 @@ static int fastrpc_rpmsg_callback(struct rpmsg_device= *rpdev, void *data, } =20 ctx->retval =3D rsp->retval; + ctx->is_work_done =3D true; complete(&ctx->work); =20 /* diff --git a/include/uapi/misc/fastrpc.h b/include/uapi/misc/fastrpc.h index c6e2925f47e6..63346e27d5e9 100644 --- a/include/uapi/misc/fastrpc.h +++ b/include/uapi/misc/fastrpc.h @@ -16,6 +16,7 @@ #define FASTRPC_IOCTL_INIT_CREATE_STATIC _IOWR('R', 9, struct fastrpc_init= _create_static) #define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map) #define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap) +#define FASTRPC_IOCTL_SET_OPTION _IOWR('R', 12, struct fastrpc_ioctl_set_o= ption) #define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_cap= ability) =20 /** @@ -67,6 +68,24 @@ enum fastrpc_proc_attr { /* Fastrpc attribute for memory protection of buffers */ #define FASTRPC_ATTR_SECUREMAP (1) =20 +/** + * FASTRPC_POLL_MODE - Enable/disable poll mode for FastRPC invocations + * + * Poll mode is an optimization that allows the CPU to poll shared memory + * for completion instead of waiting for an interrupt-based response. + * This reduces latency for fast-completing operations. + * + * Restrictions: + * - Only supported for USER_PD (User Protection Domain) + * - Only applies to dynamic modules (handle > 20) + * - Static modules always use interrupt-based completion + * + * Values: + * - 0: Disable poll mode (use interrupt-based completion) + * - 1: Enable poll mode (poll shared memory for completion) + */ +#define FASTRPC_POLL_MODE (1) + struct fastrpc_invoke_args { __u64 ptr; __u64 length; @@ -133,6 +152,12 @@ struct fastrpc_mem_unmap { __s32 reserved[5]; }; =20 +struct fastrpc_ioctl_set_option { + __u32 request_id; /* Request type (e.g., FASTRPC_POLL_MODE) */ + __u32 value; /* Request-specific value */ + __s32 reserved[6]; +}; + struct fastrpc_ioctl_capability { __u32 unused; /* deprecated, ignored by the kernel */ __u32 attribute_id; --=20 2.34.1