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 75BEA3C0634 for ; Mon, 6 Jul 2026 06:16:36 +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=1783318597; cv=none; b=iHqEzi4dTrrXg8dmrYCFUU6r3WJNC82+CDGT5Lb8TnOOsJzBYS59Jq3jHJCHbrz3CPCkHLwFo8Hl6e1/FhGoYnjDR/t4yT6UTaBj/LtKvt5kRwhiZrhp7lnnYZWuBtbPEpN8LkJGxFGZJVayVl4RJQQixZj0Yg6w/PtbNQZebjE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783318597; c=relaxed/simple; bh=Jo5NDlCtpPLYNGZLIV0L08BEso1Q3QK9wgkgCiGKIPo=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=nDIpgNR37GTBgsDIjEc0Lhi9H8vFzXZe/rXJm3TH42SDbqkd5WCsR5dqHb6BlUhW+dkgMSIJxlqoNLBfaVOgh7v58ibNltKCK3Nzx36tuPalP+4nbqPJFbOfHBYuNi/T9BU1SBKW2/vxMLX6ZUu7GJvE+Mp/ltoNLVPX2n0CR1o= 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+6sPStd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ek9SsCks; 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+6sPStd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ek9SsCks" 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 666424RF3624983 for ; Mon, 6 Jul 2026 06:16:35 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= gUTk8sYwNkAHjVq2F4TJJ5lnD4yG1DgRrEDupwQVYKY=; b=b+6sPStde73fF+50 lwoolqxNaXGnX49NC6CkU4eyfl1Wp0O4lvYvxnXmWANPBY786/eCTGLVjQn4WIeP q1s53E2uLax/nbnUR6VeLviPkV8z03r3GSZBi48heGkvXqIzuvqGyfSD1yGOuIgp 8ABxe3RazbQa6Fk58fSVn0PBAKMgn+g3YGFnHIoYpC5fnM88fFGk5SdM+F38P3T1 OxmCUZFPA7A4DBr/aqwHs/qZyLK5HQRD7YcF3nX+Qs3uuI88qQex/I8I6vt51JaS 0ei4ZafsejzWCdhO/ngbQiTr5ebDuN0DQLY0zPN0VjzOkkhK0VCYDgbAJOo8vaKP McZfHw== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f6s4svrkd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 06 Jul 2026 06:16:35 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-37e24235ce1so3799508a91.0 for ; Sun, 05 Jul 2026 23:16:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783318595; x=1783923395; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=gUTk8sYwNkAHjVq2F4TJJ5lnD4yG1DgRrEDupwQVYKY=; b=Ek9SsCksuZPA7Ud8aaJixpObll/fwdki3uhNmE4IPLhsdtDeD+3YWj+H2q9JpNZYKY DRsKD0YpvaD9EZwKen/EMAGkL6PVg8fjeYb+iA3kPAGwpNL6zryb2nnzzsL3HoMC5HkX XYXiqQSyuSOWhtdYsmppymeeNsluGTR2sXmdstHEemEmNaRFom4F1AT1ayVc9vPf4dQp KlR22PJPGg6LU6GMD+P+Liv8qdNkAP+rsgyIjW3jy0WyvX15U+oPQ1wLRYY06XEdPXxJ jxPWhlsk0AlOyCssIpz/qImwLCMfR1K9GNVoMHDf2XKZPvyjlKJ1E417mG23qag6ZOuj d7vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783318595; x=1783923395; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=gUTk8sYwNkAHjVq2F4TJJ5lnD4yG1DgRrEDupwQVYKY=; b=N75TtGNR0ZS5BJwd4bwmyex7V8PRzTNN8GTSb4z5NiCfK9x2oAkZLGzUnRD8TyAYVN /9FH6MHzcL/zoF0Ueur+SKoMmNxDClhH7nEBnh83ZUvQNaznDuZBrK7unGWWW7vOUAVN PJVZJggY3kt554PoG/ijpbizp8vv3jzs4834Ux4uSZ2hUX9lC/Sk4h5j27pJBIzkIugG CIa4cBggaGMhVDcMPMuXhv1KeBW8qfbEd+qAj1ErLwvHvC1Dg5cWWHJ+PUIYn0s8ZSju tM1ulbu64UvTGkFo1FQHVksbx0csyyA6tqv2lZsNXWrDwwQMfe8sd1z2sWMZh1QATfG5 urMA== X-Forwarded-Encrypted: i=1; AHgh+RpFlc1cWiUmnH3WGMeUrlu4Y4i5XOlaN5lQXkukece9WFkvm8KMZ0kBtFumQ2MX26rejrkCHOL/fhu2hC4=@vger.kernel.org X-Gm-Message-State: AOJu0YzRKxHdzkUeVqagie/NtzNvw3XjYGTgjz20i2lYhfN5Tf2QREjN eT1vq2Dj0b1lOF3xcA33NN2GxX+kGg9A2kA2OGAwS6BmTR3dpHAtMitchwFtLW3cQTq0Ez97mr+ Jv7rdyFYC/skcZ13IFcj0lwVj9hKOeHL2anZTBJpXqbmjRFUpcxoh43IQjg0ZwJSndl8= X-Gm-Gg: AfdE7cnU3R6VAgbd2CR59cCpKMzIn/fvE0+xCmw6ch7UF/t2AMkIxazNxonNpc4x1XS NarRicVA1dIJErMUu4LBOzWgwhry/FpZ++sJ8eKfYSxwzGbyHdyLaToq7a5toYTpB9DNVR1yI1d 6JycFZt1uGwWMePtnXn3eDxTtX6A0lP7EFOaSnjIEaEA9PBc6qqX746jWfsC8inq6DvVmquAlqd 6lHfjIfSV855aP/qHdF1Wxa4bF489SfqfHIkFFh1hXETSfuzkaa/twz4qy99Gx3PbMgIi58nUXY fDpUKpSNH0zE+D0FFrVAPeknR5r2bN3qwzhdSx6gJvxnaYevnuY5twfAyLFB7dcL6uVgtrTuGR7 v1PGQNQetGAvDQPgwMs/pOYHRrA3xdtPiIrYVT/KV4Q== X-Received: by 2002:a17:90b:2682:b0:381:21ea:9147 with SMTP id 98e67ed59e1d1-38281184e03mr10572120a91.13.1783318594818; Sun, 05 Jul 2026 23:16:34 -0700 (PDT) X-Received: by 2002:a17:90b:2682:b0:381:21ea:9147 with SMTP id 98e67ed59e1d1-38281184e03mr10572092a91.13.1783318594328; Sun, 05 Jul 2026 23:16:34 -0700 (PDT) Received: from [10.204.78.23] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3812815d3e7sm4191321a91.14.2026.07.05.23.16.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 05 Jul 2026 23:16:33 -0700 (PDT) Message-ID: <82310a26-daca-40f8-8bb8-f3ec015f9f0b@oss.qualcomm.com> Date: Mon, 6 Jul 2026 11:46:29 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] misc: fastrpc: create duplicate sessions after all CB probing To: Ekansh Gupta , Srinivas Kandagatla , Amol Maheshwari , Arnd Bergmann , Greg Kroah-Hartman Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Bharath Kumar , Chenna Kesava Raju References: <20260609-dup-sessions-v1-1-26934abb9fa3@oss.qualcomm.com> <01d8d8cb-3de0-4267-9a73-c06287393483@oss.qualcomm.com> Content-Language: en-US From: Vinayak Katoch In-Reply-To: <01d8d8cb-3de0-4267-9a73-c06287393483@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA2MDA2MCBTYWx0ZWRfXzUScAon8skeo Jvuf9lgTNATcvGtyRkocONtCPhQ4CKs1IFs++MRFb12oRFWqMsvdfSvAl/NVhD7jwWnlUHkZrOl 0yOiG6QAiHYdBRRrGhdUIqNeBCVlEU0= X-Proofpoint-ORIG-GUID: XF2R-MO4lAzI3FleHGAi0444SNs0rl7w X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA2MDA2MCBTYWx0ZWRfX/lEhPSngEFCE o+TeVk4FveLqoTd7Um5sWez5RQowJ6zTaQDEEK9tpG1mZBnnfx/ByrLB+/HrbHmUi3RPSETdwSo eA/sFgyIJkyhTeNqG4BCJSjTVkqXrvjGYl164BTjMLYPEiMIo2zXGHhJ9OKjdKtzujzyKhdAin9 i0BU81B7gg3180hWAKUgmteeTUDmhE+Z+xYYpHTmKEmH/Tinhidy+eJqAPDf2CHAFBIKcz4f5Hn ElNhPgHCiP2SOLSZDrqHDNVO2miEvVV6Gs2VVXm+qckJEvGHkuMMST5I6MLuHwZyQX/T/chcElq 8MpIFrYH57SFpaZ4m/HnTSRBeWJdYNv1VimEihlgacPIVWX8AkFt+PwaMgRTUO5Jxd7wMfFSHJy tre/aaqo2RnsJMrXvs0MumL9hTq5bXnpRG38jTjp35w/7AhV5AVO4iXGWicY2QMiQA2BCyKUfkc HuUwFgyKvOJRqjrbs1w== X-Proofpoint-GUID: XF2R-MO4lAzI3FleHGAi0444SNs0rl7w X-Authority-Analysis: v=2.4 cv=ZfQt8MVA c=1 sm=1 tr=0 ts=6a4b4843 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=rCFuom7URbRVPiQ4E2kA:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-07-05_02,2026-07-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 phishscore=0 priorityscore=1501 clxscore=1015 suspectscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607060060 On 7/2/2026 11:05 AM, Ekansh Gupta wrote: > On 09-06-2026 16:03, Vinayak Katoch wrote: >> For ADSP, only a limited number of FastRPC context banks (CBs) are >> available. Each CB supports a single session, which means only a few >> processes can run on ADSP simultaneously. If all sessions are consumed >> by fastrpc daemons, no session remains available when a user application >> starts, causing the application to fail. >> >> To address this limitation, a Device Tree change was used till now: >> qcom,nsessions = <5>; >> >> However, feedback from the upstream community indicated that this change >> should not be made in the Device Tree. Instead, it was recommended to >> handle this as a driver-level change. >> >> Instead of duplicating sessions inline during fastrpc_cb_probe() using >> the qcom,nsessions DT property, defer duplication until after >> of_platform_populate() returns in fastrpc_rpmsg_probe(), at which point >> all compute-CB child nodes have been probed and the session array is >> fully populated. >> >> For the ADSP domain, append FASTRPC_DUP_SESSIONS (4) copies of the >> last probed session once of_platform_populate() succeeds. This keeps >> the per-CB probe path simple and ensures duplicates are always derived >> from a stable, fully-initialised session state. >> >> The qcom,nsessions DT property is no longer consumed by the driver; the >> binding and DT sources are left unchanged. >> >> Signed-off-by: Vinayak Katoch >> --- >> drivers/misc/fastrpc.c | 31 ++++++++++++++++++------------- >> 1 file changed, 18 insertions(+), 13 deletions(-) >> >> diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c >> index 1080f9acf70a..46afbae9c234 100644 >> --- a/drivers/misc/fastrpc.c >> +++ b/drivers/misc/fastrpc.c >> @@ -30,6 +30,7 @@ >> #define CDSP_DOMAIN_ID (3) >> #define GDSP_DOMAIN_ID (4) >> #define FASTRPC_MAX_SESSIONS 14 >> +#define FASTRPC_DUP_SESSIONS 4 >> #define FASTRPC_MAX_VMIDS 16 >> #define FASTRPC_ALIGN 128 >> #define FASTRPC_MAX_FDLIST 16 >> @@ -2195,7 +2196,6 @@ static int fastrpc_cb_probe(struct platform_device *pdev) >> struct fastrpc_channel_ctx *cctx; >> struct fastrpc_session_ctx *sess; >> struct device *dev = &pdev->dev; >> - int i, sessions = 0; >> unsigned long flags; >> int rc; >> u32 dma_bits; >> @@ -2204,8 +2204,6 @@ static int fastrpc_cb_probe(struct platform_device *pdev) >> if (!cctx) >> return -EINVAL; >> >> - of_property_read_u32(dev->of_node, "qcom,nsessions", &sessions); >> - >> spin_lock_irqsave(&cctx->lock, flags); >> if (cctx->sesscount >= FASTRPC_MAX_SESSIONS) { >> dev_err(&pdev->dev, "too many sessions\n"); >> @@ -2225,16 +2223,6 @@ static int fastrpc_cb_probe(struct platform_device *pdev) >> if (of_property_read_u32(dev->of_node, "reg", &sess->sid)) >> dev_info(dev, "FastRPC Session ID not specified in DT\n"); >> >> - if (sessions > 0) { >> - struct fastrpc_session_ctx *dup_sess; >> - >> - for (i = 1; i < sessions; i++) { >> - if (cctx->sesscount >= FASTRPC_MAX_SESSIONS) >> - break; >> - dup_sess = &cctx->session[cctx->sesscount++]; >> - memcpy(dup_sess, sess, sizeof(*dup_sess)); >> - } >> - } >> spin_unlock_irqrestore(&cctx->lock, flags); >> rc = dma_set_mask(dev, DMA_BIT_MASK(dma_bits)); >> if (rc) { >> @@ -2445,6 +2433,23 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) >> if (err) >> goto err_deregister_fdev; >> >> + if (data->domain_id == ADSP_DOMAIN_ID && data->sesscount > 0) { >> + struct fastrpc_session_ctx *last_sess; >> + struct fastrpc_session_ctx *dup_sess; >> + unsigned long flags; >> + int i; > int i was already declared outside, avoid shadowing> + Ack, will update in v2.>> + spin_lock_irqsave(&data->lock, flags); >> + last_sess = &data->session[data->sesscount - 1]; >> + for (i = 0; i < FASTRPC_DUP_SESSIONS; i++) { >> + if (data->sesscount >= FASTRPC_MAX_SESSIONS) >> + break; >> + dup_sess = &data->session[data->sesscount++]; >> + memcpy(dup_sess, last_sess, sizeof(*dup_sess)); >> + } >> + spin_unlock_irqrestore(&data->lock, flags); >> + } >> + >> return 0; >> >> err_deregister_fdev: >> >> --- >> base-commit: 97e797263a5e963da3d1e66e743fd518567dfe37 >> change-id: 20260609-dup-sessions-ea2acaac1994 >> >> Best regards, >