From nobody Tue Dec 16 13:26:13 2025 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 5C46E2FD7DA; Thu, 11 Dec 2025 10:09:48 +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=1765447789; cv=none; b=iWfv1eRc1Bxa20DualBKcpNB+fr37dcYd/aGaxZuUaBS+XSyHScuEYXnnJ4xUfvtVAo6R1x4Dj6I8ZIQAWH1pDwE418Cc3ea0G+nIIY/w+QyWs9baNPvq2SUsecU6L3preJ6s4ZEUbxr04HgK5+ZAGgsC+uSZTdMP5H9wj8PrNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765447789; c=relaxed/simple; bh=Jj3k1ECDT+nkv2uHMj2uDyK6/LocMtQvcrDcEMO8hgM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=IvZruwtd3dgypCwlUjpgn1p60mCnIcoGsvRfIbiUU+h3wYmBui4JyI3ZPbsdgjZ/Qw8ayLDUtSEEU074iDuc+wQxypet7VIVIaEl4l8BpUscmfp9DcFxoYRo2s1H3JYWxqBVu738X6oz3K9AsPgmyM/y7ZX2lLMr/lHZ52L9SHE= 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=gEdso+hd; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="gEdso+hd" 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 5BB9ZSwY899044; Thu, 11 Dec 2025 10:09:43 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=nIvs4QHsAyk QRAEuoCMd2Tx4nAjd0MuCXYMQSBH960A=; b=gEdso+hdXv4Qm0dc8osjXvbpFzJ GN8y4wlmgE4SwgFD7jJIrVHJcb/kuBim2/LBYboS+q3xapFFSqfNo4tZGugI8e/O jrH6ULSg+MzD8pcdQIyoDqFG/YYMOrCOG/+tIrUA5gfTKlcVLlSi8KUc4FnVbIBp fwW5UlmYwq0Jtfx5b7XeN95B6LSjMn+4IveelNhWKddKmOX1ic4PDvKH9+dzkYa+ lqTFfqsIWy0emqg6FJy/lPdGmZKmNR99cGv9xK7eBXbaMYiu7nJjfaP0hT0cJFmb oSGnWKi+u7y4Fo1H/m5TFcD4DhTloQyZrj9vqbgRGUCT2RAzwKdoGs//PhQ== 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 4ayrpagpb4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09:43 +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 5BBA9e82013854; Thu, 11 Dec 2025 10:09:40 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4avdjnupny-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09: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 5BBA9deK013849; Thu, 11 Dec 2025 10:09: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 5BBA9dbY013846 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09:39 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id 87B32578; Thu, 11 Dec 2025 15:39: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 v6 1/4] dt-bindings: misc: qcom,fastrpc: Add compatible for Kaanapali Date: Thu, 11 Dec 2025 15:39:30 +0530 Message-Id: <20251211100933.1285093-2-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251211100933.1285093-1-kumari.pallavi@oss.qualcomm.com> References: <20251211100933.1285093-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: WmVSQ1jlPQPSDqSxMbJhVTodnV0FAZs_ X-Proofpoint-GUID: WmVSQ1jlPQPSDqSxMbJhVTodnV0FAZs_ X-Authority-Analysis: v=2.4 cv=G9sR0tk5 c=1 sm=1 tr=0 ts=693a9867 cx=c_pps a=Ou0eQOY4+eZoSc0qltEV5Q==:117 a=Ou0eQOY4+eZoSc0qltEV5Q==:17 a=wP3pNCr1ah4A:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=URzRxF_-m-AlxXRg6lwA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjExMDA3NyBTYWx0ZWRfXwc/YQvR3WXQp gcOdx8k1gQhazXff745gkDYpLx/CSEDecB9yjYxg3WlCCBSk11zl78ddb295ynDkZFYG0/81fdk 9AAQ17zILbDsJfyVGOw7kP4FvdY8+sBgsPNJhHvaB/Q7MGi+Q6mO3Mh+H3sL/OPR9/1QE6bF2pY YL30NxN9ntUAffapXq6jIrFPAb2/jGfPTWBc44iGLCO2udhh4razxfrLVfl0CNy3Gs9SzVq/HsX XrnWsuJ9jIkm0AghEN+JGB0lsDbdISVRadYh+UTTbfWQvgTJjeM4RUnSEgL6QiF1SUj2wUJ9G4I KmZPMS5h6WGPWCndOPjtVtwf9QGZ/FT4SKcGtv8d9tTcK5ImaJ/sW8ocJv/7XSZupPFYwbXnGgW LQGzu2jWvtNq6ng+UbUWV0gK8FRwFQ== 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-10_03,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 adultscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 spamscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512110077 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 --- Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml b/Doc= umentation/devicetree/bindings/misc/qcom,fastrpc.yaml index 3f6199fc9ae6..142309e2c656 100644 --- a/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml +++ b/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml @@ -18,7 +18,12 @@ description: | =20 properties: compatible: - const: qcom,fastrpc + oneOf: + - items: + - enum: + - qcom,kaanapali-fastrpc + - const: qcom,fastrpc + - const: qcom,fastrpc =20 label: enum: --=20 2.34.1 From nobody Tue Dec 16 13:26:13 2025 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 AD5302FF67A; Thu, 11 Dec 2025 10:09:51 +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=1765447793; cv=none; b=XPPc2xKwnQEAq+920PuKGv5Kakv9CNmGaT+T7Iwio1s2dAix8lNGtbYowNQwAKlOx1tLp58DfEIP53Rw5kl+HolBjfHxcEGE4yc+Odb3BE0qeoq7lyL1jqN5LcgM57SzhkfM+R0kOneaaVP2dD8+7iEKp7owBrUWb+Jbwhqncj0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765447793; c=relaxed/simple; bh=v2rICkGIgWFUwBarnib6MwKkf/CQrFHzC3C5QtfXYzc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RC0c3gI8EL7gEqjbpfXyFaBEOxBV8P1LV96QyzLpxXlsWmKkWUU3L/LIFz1e6oqcwPDb0nMx4TcDA+glDpKCRe+udwK/Sb9dtyJ0vM7Bf1jw3lnEevWff3lu8lFXXAHfNj3HRyerZ89y+5j44F6R8qfOidy1bfTHeR4Qmks7+6g= 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=g7IieW+U; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="g7IieW+U" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BB9ZUeq1083601; Thu, 11 Dec 2025 10:09:46 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=g7IieW+UV9gN7OUUpBq8IYajoWA Ls1nimQJoPGrY8MFHVZh+6K6oFoGfwZUuPDZpP4AJLgMpFaWNHBnr4v1Zphw+fRe RYJ/vABpGcptCR5LmCAwbK4f42frq8hbhBiilCukBjgXgr/bxAtXAZuJd2hDQELk v3JMF1sO8SlZ8E5L2GmBucvmbCcUr6GfyaHWt3aOi1Q342Y3Av6K5HvzwvLBqHqT k30GTMynWJ8mxJkzeQlbgP2/TyAzoJyMOa4l45HqRp2CHB25+dsDoQZZ3vTV5gm8 17COL6BDpt5XNBDQUSllAZ7g2pkFfpxzNPf020YKh6qO/oeQPwABQO1ee0Q== 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 4ayg0pt3hy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09: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 5BBA9eq9013858; Thu, 11 Dec 2025 10:09:42 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4avdjnupp9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09:41 +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 5BBA9fwG013870; Thu, 11 Dec 2025 10:09: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 5BBA9fKO013865 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09:41 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id 6C3A356A; Thu, 11 Dec 2025 15:39: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 v6 2/4] misc: fastrpc: Rename phys to dma_addr for clarity Date: Thu, 11 Dec 2025 15:39:31 +0530 Message-Id: <20251211100933.1285093-3-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251211100933.1285093-1-kumari.pallavi@oss.qualcomm.com> References: <20251211100933.1285093-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: GIs6gvUQiQQvrchOvj4HOx-M0HnA-ApP X-Authority-Analysis: v=2.4 cv=b46/I9Gx c=1 sm=1 tr=0 ts=693a986a 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-Spam-Details-Enc: AW1haW4tMjUxMjExMDA3NyBTYWx0ZWRfX6Nt1uknLs09w dIoUdpcB6IPjR1dNpJHsItMhIDStGLPQBtdyRggwxZ5it2/E1TnskRl7W2AxnMAUg+vlG8diKLi ZXlVwuqh7ouy3SBh9EwerT21gCzRtAnJe7F7QnSQVtbOSC63Hd8DcDohKxq98DIembD5IPZaMXi iLoFsdg2bCKH+LwOoOimuQZZ4o9Zp/kF01j2bHbTjkWJXdIszuc+pqGe4ixbdSdALHSZwPJrd7c o8ioGtGBJb/M2J9TL2hUzDgIA4rV6Nm1UeR7SYyvi3+EiLuOc9wCDJVTyrFSaUmcqnK1cDBCuZq U0bEA7jnDmxddWSTC4+i6hh1bImCNTLkjkN0Uz9P1aqTZNJ6TCSHuOxqSQBSOBiMzC7V1QMJXTM d2mRs3AgpTplcUf07S+C1KGOaFKcLQ== X-Proofpoint-GUID: GIs6gvUQiQQvrchOvj4HOx-M0HnA-ApP 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-10_03,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 clxscore=1015 adultscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512110077 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 --- 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 Tue Dec 16 13:26:13 2025 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 B0F242D47E3; Thu, 11 Dec 2025 10:09:52 +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=1765447794; cv=none; b=LGHNGjERMPxPkWbA9xtq2GAJQkrVTLWx/umw8QHsdOxVUHYjzd2pR4ldunnmK90IxTA9VKg9PlVxuW6bfndOHb4x9VXf+rR6y1Iua3IBh6lsyqm+pG7ERvkNhNf3W5PuAYCcJVkSQzMHL9Gmv7CJVBk6Hgzsy7yjOiTva0kLKFM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765447794; c=relaxed/simple; bh=jIqp8kQAWI3IarKdgyhaXw5jJ9pQFokWihP6O/k88H8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kmzVUBpcju+edVJyOkzr1nEEfb7TumLoNp1Sx7xOZFng7q2KZzI1WeP3OgDJjHrDO8l1qUqiN0YvAZaew4KoG42rBXdXdV4BrvGmvnZCSetKIJLxnvZIRaktuVzJRsx8QnDQ/Vw1gASJySPt8anZCAPI5x+EcgduAHYFcSPUY1k= 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=ZuYr84f7; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="ZuYr84f7" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BB9ZQWG906345; Thu, 11 Dec 2025 10:09: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=93ToqsNF9cC WqIJe3O+rBTF0+xoqhApFcLEnNR1eEC4=; b=ZuYr84f7m8f4UABPd6IKTFnXkNR 1NipJ/49ai/MCWHhPHPKujh0xqKTLKPIX1XIeAARkUE0Jyg+lQzU7ZDqakvQbeoe tjJCeOZE3W4WfVqoaJElTlLfNHf/HdQmUZFecg10c4FnrZX+LDJXDcFVwQL6I5e+ S+HHxkzKZsEaZkB58qVZdXGIhADU3WobT3N0rLeKTveS/RaLHgwrEyvPszL3WU3s 5DG3Uu90R+Yo/s6KDjiRJu1Inrm0aNq/7qV0KpXRjXywTsRv1vbf9J1LkU1VaRiB 5q4JfVzK/6gVG53h7+ySrKx2jnPSMJclAzYhdP4VuH3gDTPXlikZM/NpavA== 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 4aygtfhwrd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09: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 5BBA9gja013877; Thu, 11 Dec 2025 10:09:44 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4avdjnuppg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09: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 5BBA9fwI013870; Thu, 11 Dec 2025 10:09: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 5BBA9heF013883 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09:44 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id 7BFF256A; Thu, 11 Dec 2025 15:39: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 v6 3/4] misc: fastrpc: Add support for new DSP IOVA formatting Date: Thu, 11 Dec 2025 15:39:32 +0530 Message-Id: <20251211100933.1285093-4-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251211100933.1285093-1-kumari.pallavi@oss.qualcomm.com> References: <20251211100933.1285093-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-Authority-Analysis: v=2.4 cv=At7jHe9P c=1 sm=1 tr=0 ts=693a986b 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-ORIG-GUID: orfqGX7tqUoCAh-szN5QYszLdDsrt2R0 X-Proofpoint-GUID: orfqGX7tqUoCAh-szN5QYszLdDsrt2R0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjExMDA3NyBTYWx0ZWRfXxbSYIWJgXjJV hxJmf/FtsTTO1JX8ToYbnY2Jf+oSd2P1TxtJiV0w1PS9NmC+rZVMNJFEsL4xH2lrSk1AAG240UR Limm4pyP7S5bKY4KkFHf7IXitBhRrcDd3vaVeOEfK7CsLdt4yihPYQLJwacjHpdoCVnx2YA9Iv8 x8easAVnAS+7a3p/rZ2b+sSHdVAWVKz+VZ+zJcqMwDessXB1N2VdQC0dCtl4qU7TLO87Oi/Bqwl CBW9eHAWSri0j8OomgFTe6d4naqHMk8fpn6UbaQqoK84hHPvgkBMa1UILYGcpKuo2UxcytOKgpn VK0dYeIT0LZd5JNPQlrklHBn9yC8cyVTxXq/3crHyZzDOaPfKMQpNBo8evXGDLkLoBdCX3BKE72 MLQf1dDr4YTweXXOg5Mu7fw4u4QuLA== 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-10_03,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 phishscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512110077 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 --- drivers/misc/fastrpc.c | 61 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c index eb9501fe79bc..af92876f1cc1 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 @@ -105,6 +105,23 @@ =20 #define miscdev_to_fdevice(d) container_of(d, struct fastrpc_device, miscd= ev) =20 +/* Extract SMMU PA from consolidated IOVA */ +static inline dma_addr_t fastrpc_ipa_to_dma_addr(dma_addr_t iova, u32 sid_= pos) +{ + if (!sid_pos) + return 0; + return iova & GENMASK_ULL(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_compute_sid_offset(u64 sid, u32 sid_pos) +{ + return sid << sid_pos; +} + struct fastrpc_phy_page { dma_addr_t addr; /* dma address */ u64 size; /* size of contiguous region */ @@ -257,6 +274,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 +299,7 @@ struct fastrpc_channel_ctx { bool secure; bool unsigned_support; u64 dma_mask; + const struct fastrpc_soc_data *soc_data; }; =20 struct fastrpc_device { @@ -390,7 +412,8 @@ 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->dma_addr, + buf->fl->cctx->soc_data->sid_pos)); kfree(buf); } =20 @@ -440,7 +463,8 @@ 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_compute_sid_offset(fl->sctx->sid, + fl->cctx->soc_data->sid_pos); =20 return 0; } @@ -685,7 +709,9 @@ 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->dma_addr, + buffer->fl->cctx->soc_data->sid_pos), + buffer->size); if (ret < 0) { dev_err(buffer->dev, "failed to get scatterlist from DMA API\n"); kfree(a); @@ -734,7 +760,8 @@ 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->dma_addr, + buf->fl->cctx->soc_data->sid_pos), size); } =20 static const struct dma_buf_ops fastrpc_dma_buf_ops =3D { @@ -747,6 +774,12 @@ 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_compute_sid_offset(fl->sctx->sid, + fl->cctx->soc_data->sid_pos); +} + static int fastrpc_map_attach(struct fastrpc_user *fl, int fd, u64 len, u32 attr, struct fastrpc_map **ppmap) { @@ -788,8 +821,7 @@ static int fastrpc_map_attach(struct fastrpc_user *fl, = int fd, 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); + 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) @@ -2290,6 +2322,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 +2338,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 +2393,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 +2531,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 Tue Dec 16 13:26:13 2025 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 61F082FF66A; Thu, 11 Dec 2025 10:09:54 +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=1765447796; cv=none; b=qa0/PtRg+idjS4VYT0t/9Ow5jgsP+qRDjNAyaftIyHHQzkikRJO9+vG6vs6JnYbGZWJloSjF5mzzUDtzY/VNc5d3ddr1nQVndZ8OzrvU3Gp7whu6Rxv8jNof395ES7fJ6hfCp43J2t67gF+JZTXZEUvbBiwY2D2gWDiHBbXPcPQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765447796; c=relaxed/simple; bh=1bhxSf2/Y8D86Y6DHpiNlB7iFuF07Jb5dJFEFzkWFTQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nBacADbfbHOfV06xP8d/pu+5ppqiBc4eorP9/goiaZe9OgrQj6wNvcnFSHWGMICXgbY1MbrF/FZvQt6vz4OKYmS6TJ9DnxZFluQfHBK7jV8S/aR22Rb9b/SPFwecMB3rRATR2G3YoWS04OoeCTVYCc9oQEJ4q8situla/vVF1LQ= 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=j2dFDH62; 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=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="j2dFDH62" 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 5BB9ZREE1054833; Thu, 11 Dec 2025 10:09: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=iiYtERK5lDS jU0f7TnMrdUzOzeVIfDyXuyD3Ay+56Fk=; b=j2dFDH62SWidfTwwYK+uRupV80O +ICsjsjWNnRD7eJXS6u1gUeBnS79XHt7IwnJJhsHzPEo9rFHhe0VXxTYMk+3shHT p5/RYwxwLkRxMtfkWMtxEQ6NPs1pIyGX3YnpMDJoZLGptr8hYIgcNlg9sEUrkkiQ Vt4A6UVtTldPmOFrIUBZIXl0bczdRmJLpTjOLoF7J9RQw+wmj7t0PbZZX4q+EPsf D5UzcOwHkBCOWXczzNNd2wRPiliaMJjk+tbrLtEfaMQGMlUrqCaW1f/Y6BauGGHX 64h36SyU2fqGzSKo23cUOQ2oXJHa5XGD5znj4qz1Wzb1eel1UjsHp/7A5rg== 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 4aygsx1yav-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09: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 5BBA9kaV013920; Thu, 11 Dec 2025 10:09:46 GMT Received: from pps.reinject (localhost [127.0.0.1]) by APBLRPPMTA01.qualcomm.com (PPS) with ESMTPS id 4avdjnuppp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09: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 5BBA9kKr013904; Thu, 11 Dec 2025 10:09:46 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 5BBA9jwA013896 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 11 Dec 2025 10:09:46 +0000 Received: by hu-devc-hyd-u22-c.qualcomm.com (Postfix, from userid 4720299) id A6DD756A; Thu, 11 Dec 2025 15:39: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 v6 4/4] misc: fastrpc: Update dma_bits for CDSP support on Kaanapali SoC Date: Thu, 11 Dec 2025 15:39:33 +0530 Message-Id: <20251211100933.1285093-5-kumari.pallavi@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251211100933.1285093-1-kumari.pallavi@oss.qualcomm.com> References: <20251211100933.1285093-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-GUID: r9lxgX0muM-eLe9b-Ua8Suynkwm33XWk X-Authority-Analysis: v=2.4 cv=d974CBjE c=1 sm=1 tr=0 ts=693a986d 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-Spam-Details-Enc: AW1haW4tMjUxMjExMDA3NyBTYWx0ZWRfX7g28sQSf5yvk pUJ8L3wid5/PpsB0PD6EIPLTHLKndsiw55KKIaf+TgNdHMdhyx2vc0jIyrcLDz8ptwCgFjdLeRx GVW800EIOXM7rxrJjMWLOsO8xZLRuZz5bezjELi5ODcldmVd1C6GPkA0w6fClxJJAlBE5LRGwPQ QKDIgTBmClsrMXkBukOKvTBP3mvHUFOUjSRYKa1gUS9svNeF3h5AwvsizPPXFRb8TTZ4iuReIay aRe6K9JEwT3TpDDPOKrfC2vC9ttq6JEwOg78YY7HVHikrlrymJ6OpdGXvpQJ4tBQIKzZbhiv5PY d54xKSkQkUrwp/+Qp5hek5I1t1Q9CEReTdpUflNoBb8hyweVG2rJp1Ug0jbOHZ1uUwf1l2P9Wzw KCtXtU6LtWfBfWH8YSHvSAfns+J39g== X-Proofpoint-ORIG-GUID: r9lxgX0muM-eLe9b-Ua8Suynkwm33XWk 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-10_03,2025-12-09_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 impostorscore=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2512110077 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 af92876f1cc1..333be4c4f10b 100644 --- a/drivers/misc/fastrpc.c +++ b/drivers/misc/fastrpc.c @@ -276,6 +276,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 { @@ -2202,6 +2204,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) @@ -2215,12 +2218,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 @@ -2235,9 +2242,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 @@ -2324,10 +2331,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