From nobody Thu Apr 2 01:40:05 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 4083F3B47C4 for ; Mon, 30 Mar 2026 08:21:55 +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=1774858916; cv=none; b=Lca64ZaA0W1FTcFFT9T3zxB2iRQIwGhhfsjouPxcI/BhR2qig6jjKJL5ukywHHsdRvF8fibzpJMwdrDep9JLIhwnu89Z3mc80HXS8waAKuTrto2HItdAFyhZZoClJhgixo48RGsgxzSTqFcxj8FsTa6VbbwT3qbT8B1uEZMj0JY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774858916; c=relaxed/simple; bh=3nJe78cfkL1kyPmx34In1LIYXv2cp1Fw4uemtw2se+c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KmH7aVhUkbIOjGYCoS/GpSPvbxDAH5HiJ7Qo6EGtfISWT7TahdqCd4i8NFcp3gDIJ9anIJi0o6Vs0BFLArawjeVhWahzrd81gh7MBUaQA/FBPeZ7eRy/o/ImMaKkZUK5RBIieYj44DZ8yx/VYBh2PEG9q9nGKFcQIi20u+mSygM= 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=RIOZW2xA; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Dj0ePJC9; 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="RIOZW2xA"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Dj0ePJC9" 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 62U46OX92952983 for ; Mon, 30 Mar 2026 08:21:54 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=M4hAckrjCeS PiOx0QjgRxuKhLYXUUzI3EfTDbynJbGo=; b=RIOZW2xACaETKY0eRKCB2sjsRCP KjBRShHQa0ritDRfFZIk2H386rB/cD9ECUcYl9viuAB8+2ZtxcgK+v4JiTZRWa7Y q78F0ZdEL0cHzLBpQw85ZVTyHYmeD283tsCewjirdtHy/e0bPMlK33hyLN/mM+EY GEZ/k/zMJOPXOmj5YS7USh1lNHgOL3vC+omjx8/OZgbXm9OJP8TNx2j32mV3Qdmj 68gXXczdY56aeITu848jUhdMZ+jh4+w000HC4Sm69608JXV89iQXT0PL6xKDfTEK JvUtL8G57DnBlbVekuOhSh4WJgHgTu/zGoAfbMeRDwqBeCnc0nexnZgDELA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d6wqek2g5-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 30 Mar 2026 08:21:54 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50b44f7b7bbso132745501cf.3 for ; Mon, 30 Mar 2026 01:21:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774858914; x=1775463714; 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=M4hAckrjCeSPiOx0QjgRxuKhLYXUUzI3EfTDbynJbGo=; b=Dj0ePJC9R1XPnlVIaRPb40oRqqp/UZZ9rc2M32dEL/2fYfrweyzo1jigmDxX6T7new GQvLRviFwFBTECpW47miz5708mGsCG+lyE1Zw9A27/R8EZU8tJf7fI0kuC6DsnmYbqDy DlMW+7sbK5kGYD1KfGuVa4YhEZGnckYmSxf+4i2uzKnszaF0j+cS75g/VTQgPbpRiinq 2wFYy7FX9roDYQDFfZhu3Y8Z1lhqTyspT1dnSTASRU/cTcyq5Hi6No3ybxzveRozfn3m UasAIgoiLKqbD4pPJyvJMpAZpEw/o0kjDSoSrSxtLwVZ4Zp34ZpZcEAfZQUPzj/vPNtw iT5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774858914; x=1775463714; 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=M4hAckrjCeSPiOx0QjgRxuKhLYXUUzI3EfTDbynJbGo=; b=ryHXg1pTE7cjFYYUXZ71uqNgW280OqlweI6NjnNvKyA6SbA1nHUPkta+2e9k/4mjB5 PgS926yYRR6SoXGphbIcLt7X0Oef3XCrl/Lco49A/1xlWTCOWPbkKzSLcuhbzCXpqb3K VtTrIBTq7atxOo4BLYJxH6cI96SyNH32DO5bQTx0EEpf+++5vfnTRKrZI3tslnyiAqGl HFDI+iNPjbUGJTH3DGQw0Tn54bHchAjk+1PLP6in+2KOMGNDM5Alr3eQy9H9N1TVixlC sG9yuIzqiXoXQpklhjuqI3mnJHMBhKhrDsoVN3mg7f8V/LBVluB+9vxZCv/I5/xC3TB9 6tuA== X-Forwarded-Encrypted: i=1; AJvYcCVCI6W8sFGdgg+T+w3xkPLN/ZIGBgL5EUH7vGUFB4hWxKklAr86GrZPlpp1RksFM010RDjRt4Va45zrhxA=@vger.kernel.org X-Gm-Message-State: AOJu0Yyqq7a1CUTryq6Em7BRoxFqvD2rqVbtkeavr9l91mIVLhmdExkO F+lBu/G1SXaRW+ZcLAE6u8XAS583ibqnfxXXUxtfe+9ToZuljFqgEnV0SJICqpbJEapXEla3c35 ihu5UwAvto7RMtHQqzkJwUUp3db08o2vTHkdZW5/+MKIZpuW6XSGEUPO9Os/n2QpqmGY= X-Gm-Gg: ATEYQzz9uOoaXsCmjk6iZKQs1xcKL2pNadjzHNaE4RKgBqI+7XHwj5fpeXmoAyEYAZV oVBi/wKHRjBzi6/ncP4T5iQCRThwOB7l7wICgp7/J/FhLHUzc2EcOZ3EffEnwVtPNOHcAiAaE1D HrAehBpCr6gTabZyeKXngDeA5pmyqbfDKdflvzdVupilmrK0yoMGHPROk9RRR25lsDJ5c8TxiAp NmYVms/kkc4WK8yGXqDRdEZ8D8vUqdIpN2P24uzFU21Nefh6a9XhYkwvxQbxcPGp3NWcMCDfGKW 3Nfsi8SUN37pG7OeQqvOjkPj8c1FRh6KWyKzY+TRBjYtoqdsUfuCgzr8wwDnzC7k408cDYCm3ux HsOJpx1wx2U96lWDorKlkaUdQpaP6153XYai2obzBSHSSHiS4IHpeynQ= X-Received: by 2002:ac8:7d15:0:b0:50b:50bf:5bbe with SMTP id d75a77b69052e-50ba37fac78mr172230491cf.22.1774858913555; Mon, 30 Mar 2026 01:21:53 -0700 (PDT) X-Received: by 2002:ac8:7d15:0:b0:50b:50bf:5bbe with SMTP id d75a77b69052e-50ba37fac78mr172230191cf.22.1774858913115; Mon, 30 Mar 2026 01:21:53 -0700 (PDT) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43cf1db08e6sm26244773f8f.0.2026.03.30.01.21.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Mar 2026 01:21:52 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: mohammad.rafi.shaik@oss.qualcomm.com, linux-sound@vger.kernel.org, lgirdwood@gmail.com, perex@perex.cz, tiwai@suse.com, johan@kernel.org, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, srini@kernel.org, val@packett.cool, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v8 12/13] ASoC: qcom: qdsp6: remove search for module iid in hot path Date: Mon, 30 Mar 2026 08:21:04 +0000 Message-ID: <20260330082105.278055-13-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260330082105.278055-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260330082105.278055-1-srinivas.kandagatla@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=Jo78bc4C c=1 sm=1 tr=0 ts=69ca32a2 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=Ll4dbTg5roZnn8cDlSAA:9 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: ZTbVhLhc1O6kPCzUF37oZEq_U8s7e5rb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzMwMDA2NSBTYWx0ZWRfXy/DXQBvtl221 bHUnWFhikowzYHlq9lVM4MaX1BlQatb8sg2TzHi69j5cuhs0NsiKAFV8pbS2UBB9MYUYSBmZ6F/ ixkENt980oxizk0TamlIOm+v1brX4g6mId46xAPTG4mENletiwtfgs8yf3oZWC+7NL/qBgJfqMc Uc06Dr7oNVYCUPaFTuujD7LewkazCToFzS5+EM40CQ+AgtF5ouIvoRZtyq2XHiKYU+k3MDO4ktk M72uGMkaxT6ECcDlzd1erpGapYklYvsIxW6muZkcoaYZ3N6BCX+GR0sPaULIkYBNf1Bd9YUg5pV 3BNeNATMd06eiOwGQtk1RF/VC9rpx+Vcvyia/sLDAChttN8612aJ136+Ff9VWYPi6XEybUjdOBi 0eM+OJ51SLG5yMsg9Za65fzpWNQOzV10Q+yJxmS2Hc+7PckZMFOgja8/riKy1kmDvV4XOYI6x8O l8b0QrcyEpeOhkCijSw== X-Proofpoint-ORIG-GUID: ZTbVhLhc1O6kPCzUF37oZEq_U8s7e5rb 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-29_05,2026-03-28_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 bulkscore=0 malwarescore=0 suspectscore=0 impostorscore=0 adultscore=0 priorityscore=1501 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603300065 Content-Type: text/plain; charset="utf-8" Remove searching for Shared Memory module instance id on every read/write call, this is un-necessary if we can cache the shared memory module instance id per PCM graph. Add new member to graph struct to store shared memory module instance id to avoid searching for this in hot path. Signed-off-by: Srinivas Kandagatla --- sound/soc/qcom/qdsp6/q6apm-dai.c | 5 +++-- sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 4 ++-- sound/soc/qcom/qdsp6/q6apm.c | 14 +++++++++----- sound/soc/qcom/qdsp6/q6apm.h | 3 ++- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/sound/soc/qcom/qdsp6/q6apm-dai.c b/sound/soc/qcom/qdsp6/q6apm-= dai.c index 292be457764f..86d6438bd9fd 100644 --- a/sound/soc/qcom/qdsp6/q6apm-dai.c +++ b/sound/soc/qcom/qdsp6/q6apm-dai.c @@ -355,7 +355,7 @@ static int q6apm_dai_open(struct snd_soc_component *com= ponent, =20 spin_lock_init(&prtd->lock); prtd->substream =3D substream; - prtd->graph =3D q6apm_graph_open(dev, event_handler, prtd, graph_id); + prtd->graph =3D q6apm_graph_open(dev, event_handler, prtd, graph_id, subs= tream->stream); if (IS_ERR(prtd->graph)) { dev_err(dev, "%s: Could not allocate memory\n", __func__); ret =3D PTR_ERR(prtd->graph); @@ -496,7 +496,8 @@ static int q6apm_dai_compr_open(struct snd_soc_componen= t *component, return -ENOMEM; =20 prtd->cstream =3D stream; - prtd->graph =3D q6apm_graph_open(dev, event_handler_compr, prtd, graph_id= ); + prtd->graph =3D q6apm_graph_open(dev, event_handler_compr, prtd, graph_id, + SNDRV_PCM_STREAM_PLAYBACK); if (IS_ERR(prtd->graph)) { ret =3D PTR_ERR(prtd->graph); kfree(prtd); diff --git a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c b/sound/soc/qcom/qdsp6= /q6apm-lpass-dais.c index e904066484d5..006b283484d9 100644 --- a/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +++ b/sound/soc/qcom/qdsp6/q6apm-lpass-dais.c @@ -203,7 +203,7 @@ static int q6apm_lpass_dai_prepare(struct snd_pcm_subst= ream *substream, struct s * graph, so sequence for playback and capture will be different */ if (substream->stream =3D=3D SNDRV_PCM_STREAM_PLAYBACK && dai_data->graph= [dai->id] =3D=3D NULL) { - graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id); + graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id, substream= ->stream); if (IS_ERR(graph)) { dev_err(dai->dev, "Failed to open graph (%d)\n", graph_id); rc =3D PTR_ERR(graph); @@ -240,7 +240,7 @@ static int q6apm_lpass_dai_startup(struct snd_pcm_subst= ream *substream, struct s int graph_id =3D dai->id; =20 if (substream->stream =3D=3D SNDRV_PCM_STREAM_CAPTURE) { - graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id); + graph =3D q6apm_graph_open(dai->dev, NULL, dai->dev, graph_id, substream= ->stream); if (IS_ERR(graph)) { dev_err(dai->dev, "Failed to open graph (%d)\n", graph_id); return PTR_ERR(graph); diff --git a/sound/soc/qcom/qdsp6/q6apm.c b/sound/soc/qcom/qdsp6/q6apm.c index 5751e80b3b92..6a3942a1ed28 100644 --- a/sound/soc/qcom/qdsp6/q6apm.c +++ b/sound/soc/qcom/qdsp6/q6apm.c @@ -411,12 +411,11 @@ int q6apm_write_async(struct q6apm_graph *graph, uint= 32_t len, uint32_t msw_ts, { struct apm_data_cmd_wr_sh_mem_ep_data_buffer_v2 *write_buffer; struct audio_buffer *ab; - int iid =3D q6apm_graph_get_rx_shmem_module_iid(graph); =20 struct gpr_pkt *pkt __free(kfree) =3D audioreach_alloc_pkt(sizeof(*write_= buffer), DATA_CMD_WR_SH_MEM_EP_DATA_BUFFER_V2, graph->rx_data.dsp_buf | (len << APM_WRITE_TOKEN_LEN_SHIFT), - graph->port->id, iid); + graph->port->id, graph->shm_iid); if (IS_ERR(pkt)) return PTR_ERR(pkt); =20 @@ -449,11 +448,10 @@ int q6apm_read(struct q6apm_graph *graph) struct data_cmd_rd_sh_mem_ep_data_buffer_v2 *read_buffer; struct audioreach_graph_data *port; struct audio_buffer *ab; - int iid =3D q6apm_graph_get_tx_shmem_module_iid(graph); =20 struct gpr_pkt *pkt __free(kfree) =3D audioreach_alloc_pkt(sizeof(*read_b= uffer), DATA_CMD_RD_SH_MEM_EP_DATA_BUFFER_V2, - graph->tx_data.dsp_buf, graph->port->id, iid); + graph->tx_data.dsp_buf, graph->port->id, graph->shm_iid); if (IS_ERR(pkt)) return PTR_ERR(pkt); =20 @@ -604,7 +602,7 @@ static int graph_callback(const struct gpr_resp_pkt *da= ta, void *priv, int op) } =20 struct q6apm_graph *q6apm_graph_open(struct device *dev, q6apm_cb cb, - void *priv, int graph_id) + void *priv, int graph_id, int dir) { struct q6apm *apm =3D dev_get_drvdata(dev->parent); struct audioreach_graph *ar_graph; @@ -631,6 +629,12 @@ struct q6apm_graph *q6apm_graph_open(struct device *de= v, q6apm_cb cb, graph->id =3D ar_graph->id; graph->dev =3D dev; =20 + if (dir =3D=3D SNDRV_PCM_STREAM_PLAYBACK) + graph->shm_iid =3D q6apm_graph_get_rx_shmem_module_iid(graph); + else + graph->shm_iid =3D q6apm_graph_get_tx_shmem_module_iid(graph); + + mutex_init(&graph->lock); init_waitqueue_head(&graph->cmd_wait); =20 diff --git a/sound/soc/qcom/qdsp6/q6apm.h b/sound/soc/qcom/qdsp6/q6apm.h index 5cf538397841..7c646ffcf956 100644 --- a/sound/soc/qcom/qdsp6/q6apm.h +++ b/sound/soc/qcom/qdsp6/q6apm.h @@ -99,6 +99,7 @@ struct q6apm_graph { void *priv; q6apm_cb cb; uint32_t id; + uint32_t shm_iid; struct device *dev; struct q6apm *apm; gpr_port_t *port; @@ -113,7 +114,7 @@ struct q6apm_graph { =20 /* Graph Operations */ struct q6apm_graph *q6apm_graph_open(struct device *dev, q6apm_cb cb, - void *priv, int graph_id); + void *priv, int graph_id, int dir); int q6apm_graph_close(struct q6apm_graph *graph); int q6apm_graph_prepare(struct q6apm_graph *graph); int q6apm_graph_start(struct q6apm_graph *graph); --=20 2.47.3