From nobody Thu Apr 9 18:49:25 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 D240A3939AE for ; Fri, 6 Mar 2026 12:22:17 +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=1772799747; cv=none; b=ADGahnfx2uHjUaG8DBLasOYwfT8KNxrol1r7rItB575czbLbC8iawM54iSL7fgUyDpGmSpKFbmomdouubLWsxPojpGiRvzSKUi4gQss+QzjvrCV3ZjzYcq2jIkFOapNnSG4fT+D5msh4mlu6wpj0J8moKfRI5zRhr/yx7Q3+/kg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772799747; c=relaxed/simple; bh=VyhmcmdCocO/mXPDB+OqytJYIreg7wlJAag5CLmUSxg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W6NJKqgA8Wzt2BB11awAZZNJBUWeWiqYE92so7oexoJL1U55QDPVty79vUYis/lR10qg2YD0CdgB4g5TxmdI2Mi0R9n5Oh5Ubkhj7rl8Raq65FG1CfKVx6QfSHoHH0J1AAy+J9OuhOBpiwxjiHto6E6DRmRBceiZaONLhES7cX0= 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=gJ3B4V6l; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MQa1AFYm; 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="gJ3B4V6l"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MQa1AFYm" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 626BbEYt4150952 for ; Fri, 6 Mar 2026 12:22:17 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=XJegSL9SyIW 8NkmReRK6OuDLMZtYbsuyhgigi3fazVM=; b=gJ3B4V6lnRsRRx4g5VF149O2SUJ 1TnxaAjq7VfhwN73j6o6Y1godNU7j0FUA+peuM+IW26qCZr+haCHi3AnrPfgKnOD NslmhSM+JA3OPd46R7Pov6F5iIsmQQipxdLmcehk1ewUuVFbZ8OgQy+4xY/gXDgv yJH7UeWJczwAbu/TIWq8T9ii35aG6eFjx4OOK7mZxcVvZlrnXYlVFI5JOcrOWBeK BMBRvwwDnuFbzRPQEb919j6oOsiX4xzYqu0ciMUrCaPEr5kvvsxD5uFlay3Rep9g bT/b1GMiGBQXQaqrmeBJ0SQOrpNXshDm6pSyvCPOGDjuuWYYvG0Zj+HzVZw== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cqf25u4ey-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Mar 2026 12:22:16 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8cb3ad1b81aso1505859985a.2 for ; Fri, 06 Mar 2026 04:22:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772799736; x=1773404536; 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=XJegSL9SyIW8NkmReRK6OuDLMZtYbsuyhgigi3fazVM=; b=MQa1AFYmUg464/nLel07QQttFLgfd3TqA5oJRNEek17R5o5/8Qg+sUMPRFixiRvcqZ /hwYfNjO3CdwjooeRFp27W51R7wuuM4R3qHh4CYf6aUNZ/bE8b6vHny8E7buLRr6Z374 gg2TBkToB6H/8B6wfeIvigZPc7txy6Gn5LYjft9zknJ7iOo6HiAzokMHuw+fcVSpmowa MjFaR18VbPmaaieNF3u/9aVPFKFGDdk8H/IGZEYfRJJoSIR1bvKz/g8HsDEsTp/UBxa1 dMMhlAGLE64eS64UlazYp9HWSGkQLUhZ6Ei1odKGSEI+Qss3lyekiofIfeqh51DX1c9Y gQLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772799736; x=1773404536; 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=XJegSL9SyIW8NkmReRK6OuDLMZtYbsuyhgigi3fazVM=; b=IqZU6G+7QjLZo0kdzaDngJpteK5boSBnSxbqPgEHdWsnFKpqyIaAbIJzzteSGy888r EANDVtqz/U3dKUEkEu3lVTENnj033lc0X5Mhhz3gZb1QwMwJymyhqgRq6A9N8aADeDs1 kOeyplwa6ZLD9dW/AipmBWnU1LV7Gcx2/Jnla1YsM9xY7o0+l3WsJatRPYHyD4nsxx5Z cS6zavxQPqcEzzP/mC0SYb3uLSs7QuqDDA6hd6UU7pa/CXiBzH8KW8K4H6QeglUs6DrC VdV5SfhQmHp0Hti6qvwk4KhoZc93yzwu7FXaMFgd9U9qjN4gUMVWxrAHMjZJJwc2kYbX 59qw== X-Forwarded-Encrypted: i=1; AJvYcCVkTjjbq3RIagf/XyKK7/ZNbuEQ1QsYOCzYCnsA6v7tBiygDK5o9D7LHuyt3zqkeL7jjfjxeGHxB7U98lY=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6oUisplw6x1ST2qawNEIj2CIHwAOafPZwemTCEMEEMpMJwZc7 4DOLp/uEGXWVXWPjVOKEicmLgN1nRo++uo78AD9UwJGfw7bC5bZx9hSAO6RB6hCdQzm+jWL2ERr 0kzfwsKJJyiPnPmAncUfsyTIhJ6rhYCfdBOjVCaHKu9ifwA1ubG+ig/WMadGDiWrRTa4= X-Gm-Gg: ATEYQzwGBz6Ipyoc7MMt3bAMD6zrmD3spR7JTvuumcuF4yjDGDDxaPFS0aym0wPVe8j ykyOjmQX19Hkls268GXDpf32Djlfa8Iv3KMdLcZpbj4rsTj450ehQDnkS5OrfXfsMxIcL7OfAiU R536+FGqoMy8kbWS5uepX4YAT1HcX5WJ8TcZWyoeuzoWNoMHsfOtuC09TaJtmmFTVKdjhLBOMng XgtuXM5ZzVdnCjZ8Hil6qSmDxUT4vJy+5x/hnDvEZLdn031zh65/TUn1h87jwKN9g0HuOB1mHnC 34zq2Pn+P1JfySMy9awC+BmGkJTCm13F169I8SOjNy+v8kKlJIr+6Yh9JRgtdAFYCR6gZljARkb cgO6bERs5lb5L3yK66Di/DHYVQaoPuvC+wmayX+xx0PphL0q46KoUd2Y= X-Received: by 2002:a05:620a:4723:b0:8ca:1107:1214 with SMTP id af79cd13be357-8cd6d3fb768mr236458285a.7.1772799735872; Fri, 06 Mar 2026 04:22:15 -0800 (PST) X-Received: by 2002:a05:620a:4723:b0:8ca:1107:1214 with SMTP id af79cd13be357-8cd6d3fb768mr236454085a.7.1772799735361; Fri, 06 Mar 2026 04:22:15 -0800 (PST) Received: from localhost.localdomain ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4851fa87e56sm111972395e9.0.2026.03.06.04.22.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2026 04:22:14 -0800 (PST) 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, mailingradian@gmail.com, Srinivas Kandagatla Subject: [PATCH v4 12/13] ASoC: qcom: qdsp6: remove search for module iid in hot path Date: Fri, 6 Mar 2026 12:21:14 +0000 Message-ID: <20260306122115.509705-13-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260306122115.509705-1-srinivas.kandagatla@oss.qualcomm.com> References: <20260306122115.509705-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-Proofpoint-ORIG-GUID: YZsJKovjaN7y264R-GgMfTxG8rheWocM X-Authority-Analysis: v=2.4 cv=Uvdu9uwB c=1 sm=1 tr=0 ts=69aac6f8 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=Ll4dbTg5roZnn8cDlSAA:9 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA2MDExNyBTYWx0ZWRfXwruTExwPw1eJ eiZbivKwvPKmOoPT5EgQwLo5wFHzsWzYjej0f8sSInKAke3JKLWxhqQb8Eyah0/55mGIVEc1HkR JhhhN81011kfiCM8oIaRwX0zhsCW0wf2A3L83fX4MpBIAZlLJbXLSgrQ/VkimYYDeJmXKHvbYjA krGrPeYT7GK4k1bZoWCGcbHI4xOwaXobZ/90APuCZxFPzC7p+D8UbpHrDXLh8idOuZgDx18Ppf3 uydy3uVB/34K/+oUURXDyhlIJsefTgPvIL7SO2hUnVoYnjz/ihAscPgNETwDQlsxwWFsaHDzApj pDWnm/Jkp4mhTUjvrPU//QfF80jdeDRBr6LLRfXHhTks09EYarfhCEPiOB2g9PFkL2dx5RGIi/X XdqTlnroqy83h8A55a37N48M+mb7LCjutzEhNmM7xQB/psQ+pWZx+jLm39LS6yKtsRxlIQ9Baq2 K1+oYA/BXgvxZeDyheg== X-Proofpoint-GUID: YZsJKovjaN7y264R-GgMfTxG8rheWocM 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-06_04,2026-03-06_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 malwarescore=0 spamscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603060117 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 3eff45b241c9..bdd4cc458acd 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 70e283671f43..aceb2ac9bac8 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 f190ad5e912a..7ef6ae0b1759 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