From nobody Mon Feb 9 00:26:29 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 1DA8D212560; Fri, 26 Dec 2025 07:05:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732752; cv=none; b=Y/65adIbeHeKBQ5dAtsXzyk2nPumxA6NMghAHnsUQ0+8bOd5vg3iupj0asGBDS9KVpIWyJMZISws0hVBms2t9T0rDCvkbAL9JjFT5FfvsZjFyzm4F+UKpiO/XgKoeuATQmGusHvsNO9abzEeOH07qFhkL6SotKtQrhMSsvBeeEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732752; c=relaxed/simple; bh=k+gqVIVCo5hukAUrG60UrUXFbWThlqre4SfmiKtSX1I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=s7Zk54Lp9oNKJf8TVfeeC7HPxpKHv+pbWIRVVVZTkgbUE8fpaKK7tywychsleXZ1Zca5Z8V/B7aii2SxtakiW4U/v4aZPGJCvLPVkk230/1qULnACkI+o3enhTLnrI5HDPpArgMvx76NDazD10XV6zdGMJT2Dd6U2NgkFdAB0a8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=JBoUKrBa; arc=none smtp.client-ip=205.220.180.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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="JBoUKrBa" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BQ2v56c3595689; Fri, 26 Dec 2025 07:05:44 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=6Ey1mtSvMtA BSYNzjei1a6ESqne+7daOqxRwc6yQY5Q=; b=JBoUKrBaKL/TD5xV+LO5UpGjtb8 wfkRtccdgQw+BOFKnTxid81vvgs+ubnO9LQzfRVwxzxUhOZIfjAfiNfVYNTKJ0cy wOcKjhXuJMD0xBKeU8PleS6edDJmVkZbJRRMkWeymy5CZobInZ8RmDmeI1kbmZub L9UQTmmtp7ugnCKDfh0gl35RJGZCUTiAvEqM2qlEjb+H+WEsIiJXqonqobs+nGoy BcEX7cWlOMTxt5bCXpqktdiDfroB3fn/oUS5XH5FIyHG6ypbRhZqh2+ypAiQ9V+9 lZ1LSCsTAwi3WuFI7zJGlGJwd1vepkdR2GQdgFqGcLfQVkgx6upUMdjPaeg== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b9j1d8equ-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:44 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTP id 5BQ75dmV023349; Fri, 26 Dec 2025 07:05:40 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4b5mvn69xy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:40 +0000 Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 5BQ75dgu023351; Fri, 26 Dec 2025 07:05:40 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-kpallavi-hyd.qualcomm.com [10.147.243.7]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 5BQ75dce023350 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:39 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id 8F7BE576; Fri, 26 Dec 2025 12:35:38 +0530 (+0530) From: Kumari Pallavi To: kpallavi@qti.qualcomm.com, srini@kernel.org, amahesh@qti.qualcomm.com, arnd@arndb.de, gregkh@linuxfoundation.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: Kumari Pallavi , quic_bkumar@quicinc.com, ekansh.gupta@oss.qualcomm.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, jingyi.wang@oss.qualcomm.com, aiqun.yu@oss.qualcomm.com, ktadakam@qti.qualcomm.com Subject: [PATCH v7 1/4] dt-bindings: misc: qcom,fastrpc: Add compatible for Kaanapali Date: Fri, 26 Dec 2025 12:35:31 +0530 Message-Id: <20251226070534.602021-2-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251226070534.602021-1-kumari.pallavi@oss.qualcomm.com> References: <20251226070534.602021-1-kumari.pallavi@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-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: FN8oi5mtD574vY1NcBzdjWs9hnL1XITq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI2MDA2NCBTYWx0ZWRfX1HAketEDSb+n bcoA1w4uOafNA2VB4yjoDhFT3ro+ektWed6QuqTzj7pBIWx1VEqL/ZvHcAH5Bk8VC5XtOq4/Xta T25CR42UKINdPEg6NhIVxEpwqU+dJ6yy0KX8hstUWGV7ILGkgD1FOZ9atWOwTykPTU3SjnS4UJL 4SAv3QM2d7vJMJwF8obXOhTBp7JRGP19sd28dy5vWxkCF4Jfp7D1fcjQDvcxt6uP/8iwd7LCrvL l21A1t/BuyCax2R6JzZlZNf48iPvSfJl3bblIkAIGL9FbDp3TB6xOpXd+HeZbMv7XkMwWWTMbnS SpiaY7XxaXZDGufkjqE1ezPTr8FmjF/A2GG5gm68mqOyz3Q7C10xoNT8+4NEAriBCgah+Dn1xKB 5VTXq4HBsWHqmcTdNZTL8YoYv22rO6F5TzNMJqpYNzVNf5dpcrXZ9pBixSVtgFDDad8QlrQTWbQ 9to3UQ5DEPErxWhBpOw== X-Proofpoint-GUID: FN8oi5mtD574vY1NcBzdjWs9hnL1XITq X-Authority-Analysis: v=2.4 cv=Z5zh3XRA c=1 sm=1 tr=0 ts=694e33c8 cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=wP3pNCr1ah4A:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=YSQxBCvXrTrNkw4t54MA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-26_02,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 malwarescore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 clxscore=1015 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512260064 Content-Type: text/plain; charset="utf-8" Kaanapali introduces changes in DSP IOVA layout and CDSP DMA addressing that differ from previous SoCs. The SID field moves within the physical address, and CDSP now supports a wider DMA range, requiring updated sid_pos and DMA mask handling in the driver. Signed-off-by: Kumari Pallavi Reviewed-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml b/Doc= umentation/devicetree/bindings/misc/qcom,fastrpc.yaml index 3f6199fc9ae6..d8e47db677cc 100644 --- a/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml +++ b/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml @@ -18,7 +18,9 @@ description: | =20 properties: compatible: - const: qcom,fastrpc + enum: + - qcom,kaanapali-fastrpc + - qcom,fastrpc =20 label: enum: --=20 2.34.1 From nobody Mon Feb 9 00:26:29 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 981E521D3F6; Fri, 26 Dec 2025 07:05:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732753; cv=none; b=EPZW0lPFRUQh3eS3WrtWMHpvEF4lhm5mEoee/ULTFqZTp0Sl+ETsJ8pG+onGN4dpYlpkrslwK+c1IPpNXM0jd1IVj1++gnwUkNpFsHbCEAunrx4IvbHCeImde2MeCCkXTnPTJo7Z2GzKandd8rl9FNQtwYd+kIbY1ITEap0hBYE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732753; c=relaxed/simple; bh=v2rICkGIgWFUwBarnib6MwKkf/CQrFHzC3C5QtfXYzc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tSMI9FHkDEH44zYDeg5I8hm2Wpb/hLbn2N9Y1vqteypuD/fe3+cfVxihPMAwtWeHxGBeVfNSghpupMrmPKMMpILcmZhqBjpnPTT8Sl7GzgQPSG21atfnd0ZG/snel7U+4AEgByYn4Oz91mSeWsM7xxPOgn2J7ptNMOpfxHRd8gA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=jWvDlbSF; arc=none smtp.client-ip=205.220.180.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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="jWvDlbSF" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BPNCGR73547894; Fri, 26 Dec 2025 07:05:45 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=SM1lw0jWL2v Ri4HkhhXnp3AaNnHf6OGNTnj1/ZF/cK4=; b=jWvDlbSFvlnM5eU8ivNrl3v4VGT qhY+RcQyIhVaZu5tPQRWnFJnzDIEEp9TCIJh9HWT6xelPOXUvRl0XaSe1oqZQP2y GmqwpjjcwIAcyKkjv920xtd5X0ph6pSy0ROc9sCaYMtNQXf6Jrk0hrNQeTxYj6YJ tIPIGyvp9qe5eBiU40Fw1n9C4mysRHJvsLGjHgawj7TvD5JBbz17pPe6XbduwsAh hSLpApuaZsRbKQJ3jHA/tsTXRV8WlxvNxM4sKWDE3uz8UCLku4fxEiQVY5avkNky BiOTbyFtBh5iZS5kQktq3Fdo/bM0RcO++mv3OeDY0oAyk/UPLl/BS5axBPw== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b8kywk6jj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:45 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTP id 5BQ75gBh023372; Fri, 26 Dec 2025 07:05:42 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4b5mvn69y4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:42 +0000 Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 5BQ75fAd023367; Fri, 26 Dec 2025 07:05:41 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-kpallavi-hyd.qualcomm.com [10.147.243.7]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 5BQ75fvn023365 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:41 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id 9050E576; Fri, 26 Dec 2025 12:35:40 +0530 (+0530) From: Kumari Pallavi To: kpallavi@qti.qualcomm.com, srini@kernel.org, amahesh@qti.qualcomm.com, arnd@arndb.de, gregkh@linuxfoundation.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: Kumari Pallavi , quic_bkumar@quicinc.com, ekansh.gupta@oss.qualcomm.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, jingyi.wang@oss.qualcomm.com, aiqun.yu@oss.qualcomm.com, ktadakam@qti.qualcomm.com Subject: [PATCH v7 2/4] misc: fastrpc: Rename phys to dma_addr for clarity Date: Fri, 26 Dec 2025 12:35:32 +0530 Message-Id: <20251226070534.602021-3-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251226070534.602021-1-kumari.pallavi@oss.qualcomm.com> References: <20251226070534.602021-1-kumari.pallavi@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-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI2MDA2NCBTYWx0ZWRfX5DQ7oVTinTQC P/6TkoGL5ZWt877zB9/8fka/GJMS5PoQQS5bmNaf5C40eM2DYJfISj3Yo1x2TCHxMuUdPuSfRG/ 2OwrYvffPBlEtBg1vxdKIg4YoM65sqnHTumXfmf/02Emu8aZ1YTMKuimD3gN1kg5MkfeqVzvFpV fjUE0Zjw4zqO9YD1E93/cvY0WL/whyUSGx5YlHcij7mRiemzYv/89XzVTfn2Awsc+nOrP+BNMZ1 zNICEP+HUTujnoiUY8qt6PwNrn+yitBFwULQ6LZgIa81bUBR3Qfg3LH4jZ9XTlGj9x/DU7J9/An G5hkcKX5h5ucEFZEY2pPb59Sh0Ki6rRdWG2KCqq+hquGNFg6QlRYqGKb/XbT1V9u+aLOMz9JVNf QgxYo3/0Ur3nP5ocp9098xmER87a0r4FkHkAoXstx16jxot/Bu4J+pHFUrOkLKPOk6d7YhpLqAE ZziE6Z1dp0xnM3kW4Dg== X-Proofpoint-GUID: nucc3Z2QQzo_B62p__1m8xInMe4Pb8vW X-Authority-Analysis: v=2.4 cv=MKVtWcZl c=1 sm=1 tr=0 ts=694e33c9 cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=wP3pNCr1ah4A:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=UZbHtQxcIr1JeRqDSmcA:9 X-Proofpoint-ORIG-GUID: nucc3Z2QQzo_B62p__1m8xInMe4Pb8vW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-26_02,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 adultscore=0 clxscore=1015 suspectscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512260064 Content-Type: text/plain; charset="utf-8" The fields buf->phys and map->phys currently store DMA addresses returned by dma_map_*() APIs, not physical addresses. This naming is misleading and may lead to incorrect assumptions about the address type and its translation. Rename these fields from phys to dma_addr to improve code clarity and align with kernel conventions for dma_addr_t usage. Signed-off-by: Kumari Pallavi Reviewed-by: Dmitry Baryshkov --- drivers/misc/fastrpc.c | 77 ++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 36 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index ee652ef01534..eb9501fe79bc 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -106,7 +106,7 @@ #define miscdev_to_fdevice(d) container_of(d, struct fastrpc_device, miscd= ev) =20 struct fastrpc_phy_page { - u64 addr; /* physical address */ + dma_addr_t addr; /* dma address */ u64 size; /* size of contiguous region */ }; =20 @@ -171,7 +171,7 @@ struct fastrpc_msg { u64 ctx; /* invoke caller context */ u32 handle; /* handle to invoke */ u32 sc; /* scalars structure describing the data */ - u64 addr; /* physical address */ + dma_addr_t addr; /* dma address */ u64 size; /* size of contiguous region */ }; =20 @@ -194,7 +194,7 @@ struct fastrpc_buf { struct dma_buf *dmabuf; struct device *dev; void *virt; - u64 phys; + dma_addr_t dma_addr; u64 size; /* Lock for dma buf attachments */ struct mutex lock; @@ -217,7 +217,7 @@ struct fastrpc_map { struct dma_buf *buf; struct sg_table *table; struct dma_buf_attachment *attach; - u64 phys; + dma_addr_t dma_addr; u64 size; void *va; u64 len; @@ -320,11 +320,12 @@ static void fastrpc_free_map(struct kref *ref) =20 perm.vmid =3D QCOM_SCM_VMID_HLOS; perm.perm =3D QCOM_SCM_PERM_RWX; - err =3D qcom_scm_assign_mem(map->phys, map->len, + err =3D qcom_scm_assign_mem(map->dma_addr, map->len, &src_perms, &perm, 1); if (err) { - dev_err(map->fl->sctx->dev, "Failed to assign memory phys 0x%llx size = 0x%llx err %d\n", - map->phys, map->len, err); + dev_err(map->fl->sctx->dev, + "Failed to assign memory dma_addr %pad size 0x%llx err %d\n", + &map->dma_addr, map->len, err); return; } } @@ -389,7 +390,7 @@ static int fastrpc_map_lookup(struct fastrpc_user *fl, = int fd, static void fastrpc_buf_free(struct fastrpc_buf *buf) { dma_free_coherent(buf->dev, buf->size, buf->virt, - FASTRPC_PHYS(buf->phys)); + FASTRPC_PHYS(buf->dma_addr)); kfree(buf); } =20 @@ -408,12 +409,12 @@ static int __fastrpc_buf_alloc(struct fastrpc_user *f= l, struct device *dev, =20 buf->fl =3D fl; buf->virt =3D NULL; - buf->phys =3D 0; + buf->dma_addr =3D 0; buf->size =3D size; buf->dev =3D dev; buf->raddr =3D 0; =20 - buf->virt =3D dma_alloc_coherent(dev, buf->size, (dma_addr_t *)&buf->phys, + buf->virt =3D dma_alloc_coherent(dev, buf->size, &buf->dma_addr, GFP_KERNEL); if (!buf->virt) { mutex_destroy(&buf->lock); @@ -439,7 +440,7 @@ static int fastrpc_buf_alloc(struct fastrpc_user *fl, s= truct device *dev, buf =3D *obuf; =20 if (fl->sctx && fl->sctx->sid) - buf->phys +=3D ((u64)fl->sctx->sid << 32); + buf->dma_addr +=3D ((u64)fl->sctx->sid << 32); =20 return 0; } @@ -684,7 +685,7 @@ static int fastrpc_dma_buf_attach(struct dma_buf *dmabu= f, return -ENOMEM; =20 ret =3D dma_get_sgtable(buffer->dev, &a->sgt, buffer->virt, - FASTRPC_PHYS(buffer->phys), buffer->size); + FASTRPC_PHYS(buffer->dma_addr), buffer->size); if (ret < 0) { dev_err(buffer->dev, "failed to get scatterlist from DMA API\n"); kfree(a); @@ -733,7 +734,7 @@ static int fastrpc_mmap(struct dma_buf *dmabuf, dma_resv_assert_held(dmabuf->resv); =20 return dma_mmap_coherent(buf->dev, vma, buf->virt, - FASTRPC_PHYS(buf->phys), size); + FASTRPC_PHYS(buf->dma_addr), size); } =20 static const struct dma_buf_ops fastrpc_dma_buf_ops =3D { @@ -785,10 +786,10 @@ static int fastrpc_map_attach(struct fastrpc_user *fl= , int fd, map->table =3D table; =20 if (attr & FASTRPC_ATTR_SECUREMAP) { - map->phys =3D sg_phys(map->table->sgl); + map->dma_addr =3D sg_phys(map->table->sgl); } else { - map->phys =3D sg_dma_address(map->table->sgl); - map->phys +=3D ((u64)fl->sctx->sid << 32); + map->dma_addr =3D sg_dma_address(map->table->sgl); + map->dma_addr +=3D ((u64)fl->sctx->sid << 32); } for_each_sg(map->table->sgl, sgl, map->table->nents, sgl_index) @@ -815,10 +816,11 @@ static int fastrpc_map_attach(struct fastrpc_user *fl= , int fd, dst_perms[1].vmid =3D fl->cctx->vmperms[0].vmid; dst_perms[1].perm =3D QCOM_SCM_PERM_RWX; map->attr =3D attr; - err =3D qcom_scm_assign_mem(map->phys, (u64)map->len, &src_perms, dst_pe= rms, 2); + err =3D qcom_scm_assign_mem(map->dma_addr, (u64)map->len, &src_perms, ds= t_perms, 2); if (err) { - dev_err(sess->dev, "Failed to assign memory with phys 0x%llx size 0x%ll= x err %d\n", - map->phys, map->len, err); + dev_err(sess->dev, + "Failed to assign memory with dma_addr %pad size 0x%llx err %d\n", + &map->dma_addr, map->len, err); goto map_err; } } @@ -1009,7 +1011,7 @@ static int fastrpc_get_args(u32 kernel, struct fastrp= c_invoke_ctx *ctx) struct vm_area_struct *vma =3D NULL; =20 rpra[i].buf.pv =3D (u64) ctx->args[i].ptr; - pages[i].addr =3D ctx->maps[i]->phys; + pages[i].addr =3D ctx->maps[i]->dma_addr; =20 mmap_read_lock(current->mm); vma =3D find_vma(current->mm, ctx->args[i].ptr); @@ -1036,7 +1038,7 @@ static int fastrpc_get_args(u32 kernel, struct fastrp= c_invoke_ctx *ctx) goto bail; =20 rpra[i].buf.pv =3D args - ctx->olaps[oix].offset; - pages[i].addr =3D ctx->buf->phys - + pages[i].addr =3D ctx->buf->dma_addr - ctx->olaps[oix].offset + (pkt_size - rlen); pages[i].addr =3D pages[i].addr & PAGE_MASK; @@ -1068,7 +1070,7 @@ static int fastrpc_get_args(u32 kernel, struct fastrp= c_invoke_ctx *ctx) list[i].num =3D ctx->args[i].length ? 1 : 0; list[i].pgidx =3D i; if (ctx->maps[i]) { - pages[i].addr =3D ctx->maps[i]->phys; + pages[i].addr =3D ctx->maps[i]->dma_addr; pages[i].size =3D ctx->maps[i]->size; } rpra[i].dma.fd =3D ctx->args[i].fd; @@ -1150,7 +1152,7 @@ static int fastrpc_invoke_send(struct fastrpc_session= _ctx *sctx, msg->ctx =3D ctx->ctxid | fl->pd; msg->handle =3D handle; msg->sc =3D ctx->sc; - msg->addr =3D ctx->buf ? ctx->buf->phys : 0; + msg->addr =3D ctx->buf ? ctx->buf->dma_addr : 0; msg->size =3D roundup(ctx->msg_sz, PAGE_SIZE); fastrpc_context_get(ctx); =20 @@ -1306,13 +1308,15 @@ static int fastrpc_init_create_static_process(struc= t fastrpc_user *fl, if (fl->cctx->vmcount) { u64 src_perms =3D BIT(QCOM_SCM_VMID_HLOS); =20 - err =3D qcom_scm_assign_mem(fl->cctx->remote_heap->phys, + err =3D qcom_scm_assign_mem(fl->cctx->remote_heap->dma_addr, (u64)fl->cctx->remote_heap->size, &src_perms, fl->cctx->vmperms, fl->cctx->vmcount); if (err) { - dev_err(fl->sctx->dev, "Failed to assign memory with phys 0x%llx size = 0x%llx err %d\n", - fl->cctx->remote_heap->phys, fl->cctx->remote_heap->size, err); + dev_err(fl->sctx->dev, + "Failed to assign memory with dma_addr %pad size 0x%llx err %d\n", + &fl->cctx->remote_heap->dma_addr, + fl->cctx->remote_heap->size, err); goto err_map; } scm_done =3D true; @@ -1332,7 +1336,7 @@ static int fastrpc_init_create_static_process(struct = fastrpc_user *fl, args[1].length =3D inbuf.namelen; args[1].fd =3D -1; =20 - pages[0].addr =3D fl->cctx->remote_heap->phys; + pages[0].addr =3D fl->cctx->remote_heap->dma_addr; pages[0].size =3D fl->cctx->remote_heap->size; =20 args[2].ptr =3D (u64)(uintptr_t) pages; @@ -1361,12 +1365,12 @@ static int fastrpc_init_create_static_process(struc= t fastrpc_user *fl, =20 dst_perms.vmid =3D QCOM_SCM_VMID_HLOS; dst_perms.perm =3D QCOM_SCM_PERM_RWX; - err =3D qcom_scm_assign_mem(fl->cctx->remote_heap->phys, + err =3D qcom_scm_assign_mem(fl->cctx->remote_heap->dma_addr, (u64)fl->cctx->remote_heap->size, &src_perms, &dst_perms, 1); if (err) - dev_err(fl->sctx->dev, "Failed to assign memory phys 0x%llx size 0x%llx= err %d\n", - fl->cctx->remote_heap->phys, fl->cctx->remote_heap->size, err); + dev_err(fl->sctx->dev, "Failed to assign memory dma_addr %pad size 0x%l= lx err %d\n", + &fl->cctx->remote_heap->dma_addr, fl->cctx->remote_heap->size, err); } err_map: fastrpc_buf_free(fl->cctx->remote_heap); @@ -1455,7 +1459,7 @@ static int fastrpc_init_create_process(struct fastrpc= _user *fl, args[2].length =3D inbuf.filelen; args[2].fd =3D init.filefd; =20 - pages[0].addr =3D imem->phys; + pages[0].addr =3D imem->dma_addr; pages[0].size =3D imem->size; =20 args[3].ptr =3D (u64)(uintptr_t) pages; @@ -1913,7 +1917,7 @@ static int fastrpc_req_mmap(struct fastrpc_user *fl, = char __user *argp) args[0].ptr =3D (u64) (uintptr_t) &req_msg; args[0].length =3D sizeof(req_msg); =20 - pages.addr =3D buf->phys; + pages.addr =3D buf->dma_addr; pages.size =3D buf->size; =20 args[1].ptr =3D (u64) (uintptr_t) &pages; @@ -1941,11 +1945,12 @@ static int fastrpc_req_mmap(struct fastrpc_user *fl= , char __user *argp) if (req.flags =3D=3D ADSP_MMAP_REMOTE_HEAP_ADDR && fl->cctx->vmcount) { u64 src_perms =3D BIT(QCOM_SCM_VMID_HLOS); =20 - err =3D qcom_scm_assign_mem(buf->phys, (u64)buf->size, + err =3D qcom_scm_assign_mem(buf->dma_addr, (u64)buf->size, &src_perms, fl->cctx->vmperms, fl->cctx->vmcount); if (err) { - dev_err(fl->sctx->dev, "Failed to assign memory phys 0x%llx size 0x%llx= err %d", - buf->phys, buf->size, err); + dev_err(fl->sctx->dev, + "Failed to assign memory dma_addr %pad size 0x%llx err %d", + &buf->dma_addr, buf->size, err); goto err_assign; } } @@ -2059,7 +2064,7 @@ static int fastrpc_req_mem_map(struct fastrpc_user *f= l, char __user *argp) args[0].ptr =3D (u64) (uintptr_t) &req_msg; args[0].length =3D sizeof(req_msg); =20 - pages.addr =3D map->phys; + pages.addr =3D map->dma_addr; pages.size =3D map->len; =20 args[1].ptr =3D (u64) (uintptr_t) &pages; --=20 2.34.1 From nobody Mon Feb 9 00:26:29 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 457E4313289; Fri, 26 Dec 2025 07:05:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732755; cv=none; b=a+ZZmuwPRQQk6RMzOMw0dMUdd/FNIJtdJhRwmhvpQEfldPNI/wI3IFeaprfdvUfHSjPlsBSwKNOIEMf1W0JB/SdyDkTKC/dsj+zUKdpQkMrKfp5e9RQGPeRN6azC+wtHKVW6BZUNJXK0X5CYq+d7sjfTAeAfchbttla8h85B8Bw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732755; c=relaxed/simple; bh=rPwQoRiexwoTCHgD/c0xPlnN8yT6qpeMq+ujnGoftgM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gAv8SGBjfRBeM2O6UwidTzwKtK6zr/8DUlxQHseHOBUnAqD53Ym91RcDDWhwCeh4A2j5OZKsB3H7iNgCqHICs7lJsrllh8Wiv4O7WyPzhxAmO8qqNTWUeYtptz3WNt0aHdHnwvxOfntDdKvgDW2P+J9cJ3o/8fpkP/a+1IaWXoo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=mB1FI4VZ; arc=none smtp.client-ip=205.220.180.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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="mB1FI4VZ" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BQ2uvte3594713; Fri, 26 Dec 2025 07:05:47 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=PFfzZ6tUJ0o 6zKc6UQ2DA8AvbeW8XJb9HOdOjSL5Ltg=; b=mB1FI4VZCbRmPAHksMIWaTATZ8P 6USr+/C0BVgvadF8YniP8UTrmBSa0w4/02P9z/5K5SYgNggPdGqQUAC0oN246p/M ySlElqd5Xr/5/CWccjp7+KnL5V7Qsm+QFUrEntTmpJe0akx0qcIE/cMV5xIsmBoG AvWmNBh01DgFwV9ibPkjYwN5rigBxi28RF1vlSv86AU2WTcXyd3+CT7s399jGPSX v3Eag9V557eLoJf74WlDf9iy+qZ+Nhw6pH9bdHrwRRgYIAStoHpOl0LHGZz2DB9e 7G1I6cYRsZpEgY/0In8GYEwza2YptklmYc2sMVdaPwswEHLqShVZ+yEBE8A== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b9j1d8er4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:47 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTP id 5BQ75iDt023391; Fri, 26 Dec 2025 07:05:44 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4b5mvn69ye-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:44 +0000 Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 5BQ75hjJ023386; Fri, 26 Dec 2025 07:05:44 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-kpallavi-hyd.qualcomm.com [10.147.243.7]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 5BQ75hU1023382 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:43 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id 776B2576; Fri, 26 Dec 2025 12:35:42 +0530 (+0530) From: Kumari Pallavi To: kpallavi@qti.qualcomm.com, srini@kernel.org, amahesh@qti.qualcomm.com, arnd@arndb.de, gregkh@linuxfoundation.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: Kumari Pallavi , quic_bkumar@quicinc.com, ekansh.gupta@oss.qualcomm.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, jingyi.wang@oss.qualcomm.com, aiqun.yu@oss.qualcomm.com, ktadakam@qti.qualcomm.com Subject: [PATCH v7 3/4] misc: fastrpc: Add support for new DSP IOVA formatting Date: Fri, 26 Dec 2025 12:35:33 +0530 Message-Id: <20251226070534.602021-4-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251226070534.602021-1-kumari.pallavi@oss.qualcomm.com> References: <20251226070534.602021-1-kumari.pallavi@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-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: f9Qe27_3YmWLIDdGJt4128Pms4IH7JlD X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI2MDA2NCBTYWx0ZWRfXxpNFC4Csf3gs zl6AR+g9PhDt7h9uvWZ5aZcWSD6sEvrisfllehlfeFKyvJ19fC6dtEqNY5mBfIE/hndtyoGGx/Q lEQNQKAogW4UUudPIykVK42E2g3cGhZ2gakw9uNza6+XBpa4kF8YTXfEpctv7TVhvTZ54ELD9Us BcFjVqHOswEfJDFe2F60G/c52WuiAkh4jr53MaNZSdg1DmjvKymX3/VJ2tQ5Q119VqJyLiNLq9T gOHyriOkuA5fxgYgU2Bt0PqGKFv3tJJlEQWJhQzqq7s571NK9g72DQgCXmPR/WT5h/HZdPIuPlS RCOxK7nNPY/nqlG1+6RYSqdvsmGf7Q9S0wGlWTSpUFwuR9ugZmOgRXN99F+LMGFJDtNV6drUXxB ebvpc5v6LL3TAW37M4VH7fGKqCIJh9MjpvHHyuojSeADZi6Hboy42GEchiNB65uWMZ8E14e0NQt FKnVHmRCVfYSDbA+XKQ== X-Proofpoint-GUID: f9Qe27_3YmWLIDdGJt4128Pms4IH7JlD X-Authority-Analysis: v=2.4 cv=Z5zh3XRA c=1 sm=1 tr=0 ts=694e33cb cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=wP3pNCr1ah4A:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=-4e2_yvRbxqkDXL5fRYA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-26_02,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 malwarescore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 clxscore=1015 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512260064 Content-Type: text/plain; charset="utf-8" Implement the new IOVA formatting required by the DSP architecture change on Kaanapali SoC. Place the SID for DSP DMA transactions at bit 56 in the physical address. This placement is necessary for the DSPs to correctly identify streams and operate as intended. To address this, set SID position to bit 56 via OF matching on the fastrpc node; otherwise, default to legacy 32-bit placement. This change ensures consistent SID placement across DSPs. Signed-off-by: Kumari Pallavi Reviewed-by: Dmitry Baryshkov --- drivers/misc/fastrpc.c | 62 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 11 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index eb9501fe79bc..fcc80206b7c4 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -22,6 +22,7 @@ #include #include #include +#include =20 #define ADSP_DOMAIN_ID (0) #define MDSP_DOMAIN_ID (1) @@ -33,7 +34,6 @@ #define FASTRPC_ALIGN 128 #define FASTRPC_MAX_FDLIST 16 #define FASTRPC_MAX_CRCLIST 64 -#define FASTRPC_PHYS(p) ((p) & 0xffffffff) #define FASTRPC_CTX_MAX (256) #define FASTRPC_INIT_HANDLE 1 #define FASTRPC_DSP_UTILITIES_HANDLE 2 @@ -257,6 +257,10 @@ struct fastrpc_session_ctx { bool valid; }; =20 +struct fastrpc_soc_data { + u32 sid_pos; +}; + struct fastrpc_channel_ctx { int domain_id; int sesscount; @@ -278,6 +282,7 @@ struct fastrpc_channel_ctx { bool secure; bool unsigned_support; u64 dma_mask; + const struct fastrpc_soc_data *soc_data; }; =20 struct fastrpc_device { @@ -305,6 +310,24 @@ struct fastrpc_user { struct mutex mutex; }; =20 +/* Extract SMMU PA from consolidated IOVA */ +static inline dma_addr_t fastrpc_ipa_to_dma_addr(struct fastrpc_channel_ct= x *cctx, dma_addr_t iova) +{ + if (!cctx->soc_data->sid_pos) + return 0; + return iova & GENMASK_ULL(cctx->soc_data->sid_pos - 1, 0); +} + +/* + * Prepare the consolidated iova to send to DSP by prepending the SID + * to smmu PA at the appropriate position + */ +static inline u64 fastrpc_sid_offset(struct fastrpc_channel_ctx *cctx, + struct fastrpc_session_ctx *sctx) +{ + return (u64)sctx->sid << cctx->soc_data->sid_pos; +} + static void fastrpc_free_map(struct kref *ref) { struct fastrpc_map *map; @@ -390,7 +413,7 @@ static int fastrpc_map_lookup(struct fastrpc_user *fl, = int fd, static void fastrpc_buf_free(struct fastrpc_buf *buf) { dma_free_coherent(buf->dev, buf->size, buf->virt, - FASTRPC_PHYS(buf->dma_addr)); + fastrpc_ipa_to_dma_addr(buf->fl->cctx, buf->dma_addr)); kfree(buf); } =20 @@ -440,7 +463,7 @@ static int fastrpc_buf_alloc(struct fastrpc_user *fl, s= truct device *dev, buf =3D *obuf; =20 if (fl->sctx && fl->sctx->sid) - buf->dma_addr +=3D ((u64)fl->sctx->sid << 32); + buf->dma_addr +=3D fastrpc_sid_offset(fl->cctx, fl->sctx); =20 return 0; } @@ -685,7 +708,8 @@ static int fastrpc_dma_buf_attach(struct dma_buf *dmabu= f, return -ENOMEM; =20 ret =3D dma_get_sgtable(buffer->dev, &a->sgt, buffer->virt, - FASTRPC_PHYS(buffer->dma_addr), buffer->size); + fastrpc_ipa_to_dma_addr(buffer->fl->cctx, buffer->dma_addr), + buffer->size); if (ret < 0) { dev_err(buffer->dev, "failed to get scatterlist from DMA API\n"); kfree(a); @@ -734,7 +758,7 @@ static int fastrpc_mmap(struct dma_buf *dmabuf, dma_resv_assert_held(dmabuf->resv); =20 return dma_mmap_coherent(buf->dev, vma, buf->virt, - FASTRPC_PHYS(buf->dma_addr), size); + fastrpc_ipa_to_dma_addr(buf->fl->cctx, buf->dma_addr), size); } =20 static const struct dma_buf_ops fastrpc_dma_buf_ops =3D { @@ -747,6 +771,11 @@ static const struct dma_buf_ops fastrpc_dma_buf_ops = =3D { .release =3D fastrpc_release, }; =20 +static dma_addr_t fastrpc_compute_dma_addr(struct fastrpc_user *fl, dma_ad= dr_t sg_dma_addr) +{ + return sg_dma_addr + fastrpc_sid_offset(fl->cctx, fl->sctx); +} + static int fastrpc_map_attach(struct fastrpc_user *fl, int fd, u64 len, u32 attr, struct fastrpc_map **ppmap) { @@ -785,12 +814,10 @@ static int fastrpc_map_attach(struct fastrpc_user *fl= , int fd, } map->table =3D table; =20 - if (attr & FASTRPC_ATTR_SECUREMAP) { + if (attr & FASTRPC_ATTR_SECUREMAP) map->dma_addr =3D sg_phys(map->table->sgl); - } else { - map->dma_addr =3D sg_dma_address(map->table->sgl); - map->dma_addr +=3D ((u64)fl->sctx->sid << 32); - } + else + map->dma_addr =3D fastrpc_compute_dma_addr(fl, sg_dma_address(map->table= ->sgl)); for_each_sg(map->table->sgl, sgl, map->table->nents, sgl_index) map->size +=3D sg_dma_len(sgl); @@ -2290,6 +2317,14 @@ static int fastrpc_get_domain_id(const char *domain) return -EINVAL; } =20 +static const struct fastrpc_soc_data kaanapali_soc_data =3D { + .sid_pos =3D 56, +}; + +static const struct fastrpc_soc_data default_soc_data =3D { + .sid_pos =3D 32, +}; + static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) { struct device *rdev =3D &rpdev->dev; @@ -2298,6 +2333,9 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *r= pdev) const char *domain; bool secure_dsp; unsigned int vmids[FASTRPC_MAX_VMIDS]; + const struct fastrpc_soc_data *soc_data; + + soc_data =3D device_get_match_data(rdev); =20 err =3D of_property_read_string(rdev->of_node, "label", &domain); if (err) { @@ -2350,6 +2388,7 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *r= pdev) =20 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; =20 switch (domain_id) { case ADSP_DOMAIN_ID: @@ -2487,7 +2526,8 @@ static int fastrpc_rpmsg_callback(struct rpmsg_device= *rpdev, void *data, } =20 static const struct of_device_id fastrpc_rpmsg_of_match[] =3D { - { .compatible =3D "qcom,fastrpc" }, + { .compatible =3D "qcom,kaanapali-fastrpc", .data =3D &kaanapali_soc_data= }, + { .compatible =3D "qcom,fastrpc", .data =3D &default_soc_data }, { }, }; MODULE_DEVICE_TABLE(of, fastrpc_rpmsg_of_match); --=20 2.34.1 From nobody Mon Feb 9 00:26:29 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 CF600313E2F; Fri, 26 Dec 2025 07:05:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732756; cv=none; b=lgVHwuDAE7LZzn+6t0zyrihlC8A2LVGrDPzll5wbs7FoDhIzsqi+3FFTR5f0ynVXssSqpkW5Kwz94sEJIj8ZavboOmIOA3AkB5xuPCHG+PzIzG8fdvxznwx1+ge27yoHj29oNOc+BQjW19Vo82AFZ0ntuC4HD4d5enAIGz/kfq8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766732756; c=relaxed/simple; bh=Fz50QREr/D1/rHTzFEX+Xci6ROtaWvxxJ03v8FmyOtQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=J/TzuCjvsdjZNFHAa6uz1wPuHRy0cI8Qm/+9XBhUQeBZi1DU8CTpfdysSCIJQsaiQ9RxwanW+UZ5pLkI+IbRKTocV+0dHk8tYHSwT2xxrunwXMpMeALb5RKBHmAlTCuE1hGl/19I1n9Aulz/nPkcHb2wkIdy0uldEffz7x2gqKE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=FR9YVqRx; arc=none smtp.client-ip=205.220.180.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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="FR9YVqRx" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BPNugwt3634479; Fri, 26 Dec 2025 07:05:49 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=jvFS/69PzEc WHl3Hqe8ueX1yuMTuNSHSys3sPH2aIGg=; b=FR9YVqRx8ansJ5vNhh7YgRg5atL WyS26W4OLapvsteFw64r467+fyrQMZIFEdn3aDK5Zxfnpf/ZzmeDBzNPrZNUR5b1 c1WSeik1tH0nifPq3dIKwdo39cVHgKsGWugqDmupWPiBX5R3VDtVJNxL6Y/ejzZr jsn8oCDJnvkWELYma8mdpLc+vMcU9u6dIPKrytrJrrkZVnaTSicVohu6dMaZFcU3 5C2JhG1A22efhUIYVX8R7OAQAlpcuEl1TBRY9cjgt2VOO5P6l1ToKeIIYwjFeCZh Se51BergoztyE64P9JRnXqIAGA1wtd35PFgmiiR4m0naZA/ah7jendr4ejA== Received: from apblrppmta01.qualcomm.com (blr-bdr-fw-01_GlobalNAT_AllZones-Outside.qualcomm.com [103.229.18.19]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4b8kywk6jp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:49 +0000 (GMT) Received: from pps.filterd (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTP id 5BQ75kpT023406; Fri, 26 Dec 2025 07:05:46 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4b5mvn69yp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:46 +0000 Received: from APBLRPPMTA01.qualcomm.com (APBLRPPMTA01.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 5BQ75jRS023400; Fri, 26 Dec 2025 07:05:45 GMT Received: from hu-devc-hyd-u22-c.qualcomm.com (hu-kpallavi-hyd.qualcomm.com [10.147.243.7]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 5BQ75jUv023399 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 26 Dec 2025 07:05:45 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id 57E64576; Fri, 26 Dec 2025 12:35:44 +0530 (+0530) From: Kumari Pallavi To: kpallavi@qti.qualcomm.com, srini@kernel.org, amahesh@qti.qualcomm.com, arnd@arndb.de, gregkh@linuxfoundation.org, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org Cc: Kumari Pallavi , quic_bkumar@quicinc.com, ekansh.gupta@oss.qualcomm.com, linux-kernel@vger.kernel.org, quic_chennak@quicinc.com, dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, jingyi.wang@oss.qualcomm.com, aiqun.yu@oss.qualcomm.com, ktadakam@qti.qualcomm.com Subject: [PATCH v7 4/4] misc: fastrpc: Update dma_bits for CDSP support on Kaanapali SoC Date: Fri, 26 Dec 2025 12:35:34 +0530 Message-Id: <20251226070534.602021-5-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251226070534.602021-1-kumari.pallavi@oss.qualcomm.com> References: <20251226070534.602021-1-kumari.pallavi@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-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI2MDA2NCBTYWx0ZWRfX5NeebwY+bsmc bC4zhJcTM2E7EfzHgMWvjDkhOkB9R+Q5QKVJDqgERRGf2PwlHPiOCcTUjHaGnS2P7YaLD3YKied Pkn1f0GYX+W408LFMXvTJH/d47X+GVn9pCMqJJSFWHt6EOhtypthsfCRe1Jh/DuwvneUvvcGTMh 4j4DMG+jHroOJSK3dCbj4e6iOrKK11z3XF2OrVO4vQT2JvZ6yFhWez6gyVbQ86udCzEgcTGD5WB xuypq2ySGcuvD+q1kToGFDIYxAGLLX10PlO92BQK9hBo+vd6qHz3dC2gFCWkvF6oxB1ieGTzWEe b0tinMurgx6YFFFKJVvKwh/T8Pe+vt5ETxcXrDuC7paV2ystgU6ept/0JwUEOdVCbOepfFo+MHt XMS/7Ht1NKWxw19RifH2S4Y2+iCf6moEIR6TONzRodsuzL6je0d4w4HN6XT8g/VO3ol3ASIHMxt 7GXwSRRFgucMQW5bcwg== X-Proofpoint-GUID: DeK9FdxI0cMHuKgQa3Usrs7UXJO-5wiO X-Authority-Analysis: v=2.4 cv=MKVtWcZl c=1 sm=1 tr=0 ts=694e33cd cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=wP3pNCr1ah4A:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=pfE1wiWnY1F2L3mdSfMA:9 X-Proofpoint-ORIG-GUID: DeK9FdxI0cMHuKgQa3Usrs7UXJO-5wiO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-26_02,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 adultscore=0 clxscore=1015 suspectscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512260064 Content-Type: text/plain; charset="utf-8" DSP currently supports 32-bit IOVA (32-bit PA + 4-bit SID) for both Q6 and user DMA (uDMA) access. This is being upgraded to 34-bit PA + 4-bit SID due to a hardware revision in CDSP for Kaanapali SoC, which expands the DMA addressable range. Update DMA bits configuration in the driver to support CDSP on Kaanapali SoC. Set the default `dma_bits` to 32-bit and update it to 34-bit based on CDSP and OF matching on the fastrpc node. Signed-off-by: Kumari Pallavi Reviewed-by: Dmitry Baryshkov --- drivers/misc/fastrpc.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index fcc80206b7c4..4f5a79c50f58 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -259,6 +259,8 @@ struct fastrpc_session_ctx { =20 struct fastrpc_soc_data { u32 sid_pos; + u32 dma_addr_bits_cdsp; + u32 dma_addr_bits_default; }; =20 struct fastrpc_channel_ctx { @@ -2197,6 +2199,7 @@ static int fastrpc_cb_probe(struct platform_device *p= dev) int i, sessions =3D 0; unsigned long flags; int rc; + u32 dma_bits; =20 cctx =3D dev_get_drvdata(dev->parent); if (!cctx) @@ -2210,12 +2213,16 @@ static int fastrpc_cb_probe(struct platform_device = *pdev) spin_unlock_irqrestore(&cctx->lock, flags); return -ENOSPC; } + dma_bits =3D cctx->soc_data->dma_addr_bits_default; sess =3D &cctx->session[cctx->sesscount++]; sess->used =3D false; sess->valid =3D true; sess->dev =3D dev; dev_set_drvdata(dev, sess); =20 + if (cctx->domain_id =3D=3D CDSP_DOMAIN_ID) + dma_bits =3D cctx->soc_data->dma_addr_bits_cdsp; + if (of_property_read_u32(dev->of_node, "reg", &sess->sid)) dev_info(dev, "FastRPC Session ID not specified in DT\n"); =20 @@ -2230,9 +2237,9 @@ static int fastrpc_cb_probe(struct platform_device *p= dev) } } spin_unlock_irqrestore(&cctx->lock, flags); - rc =3D dma_set_mask(dev, DMA_BIT_MASK(32)); + rc =3D dma_set_mask(dev, DMA_BIT_MASK(dma_bits)); if (rc) { - dev_err(dev, "32-bit DMA enable failed\n"); + dev_err(dev, "%u-bit DMA enable failed\n", dma_bits); return rc; } =20 @@ -2319,10 +2326,14 @@ static int fastrpc_get_domain_id(const char *domain) =20 static const struct fastrpc_soc_data kaanapali_soc_data =3D { .sid_pos =3D 56, + .dma_addr_bits_cdsp =3D 34, + .dma_addr_bits_default =3D 32, }; =20 static const struct fastrpc_soc_data default_soc_data =3D { .sid_pos =3D 32, + .dma_addr_bits_cdsp =3D 32, + .dma_addr_bits_default =3D 32, }; =20 static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev) --=20 2.34.1