From nobody Sat Feb 7 09:29:34 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 B1FD133987A for ; Mon, 5 Jan 2026 13:23:20 +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=1767619402; cv=none; b=E2kKoPvAkYOf3idkLglQeYj51hfgb9BTKifspWQFWWNSLUKkts4jg+rm1Y/r/stDQfOYRSsXPYueB1qEMO/kb9RufwZ06Ks61pX3RvS2eEOQIlMb8FWpNkRdmHkVypT3+mO78XwPE6fKbsYmq4rd10QN9k+tKaSaFPn/1M6Yblk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619402; c=relaxed/simple; bh=fkI0IV5pKXD+Z8pE0/I4omqNa0GvsOuaX0Z626kXB7M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BLazf+yLWwcAWC4EVsLI036pDP3LQH9JtoEfNVK63TJbQ5A79p/wtXpUBh0zmeu22mhUn0E81yJ28aFrTu4uA1K2BcL+4frKD8GxGwayOWmgkqaRU6D3+5TswbJ9EabhY0IkcYDVQC2JMKaNSmC1hSM+FKf8hLR5EbfChWMflIc= 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=n8nccmDJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MFMeIx2M; 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="n8nccmDJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MFMeIx2M" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6058PZFA1234621 for ; Mon, 5 Jan 2026 13:23:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= QAPzsylvQAf0leJxcPm7SZsbOhaaSA1OJ2ImRJF3POY=; b=n8nccmDJ/JJz7aYf fUehwygErMt3Nosvx7DJzJvSz/99DHseo/mKYDB0w/QEYVTpFJzTpyzsgb5gRxpF +KHqpWhW7aNlCqfTo4l/iVLZcf0aJso/BegtqjItVWQR9906zpUoQ8XAFYMClIxu 1x4xFt+/ubFPTHA4ImKEMQ7ceA/yMxiVHMiwdAwerdbuhHg0BQN8z2XDbaElBbRe AJKlt/Sb4qCjb7OJV9typvWgRX1J+sCQAOEzsqBmlZfhnvst1cvhTEUQWOiRvYov 0UwfbFcFFfBZOr0QB8xnthHfXNFevNwGdzBJjETQPftaZE5KwEniZLReSWmJ/G1a CedowA== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bev9hch6s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:19 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-7ae3e3e0d06so11559789b3a.0 for ; Mon, 05 Jan 2026 05:23:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619399; x=1768224199; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QAPzsylvQAf0leJxcPm7SZsbOhaaSA1OJ2ImRJF3POY=; b=MFMeIx2MBgvvIz9W443fEDj5gxFzOTYdRe0l/6yyP9ZV+SUURPbkY/szW1n3UJzLon MdEWHjZN4cwL1KHAe5rh0BSfOQUgzfAiJwgej1wJG5yoUF1z9Arq6V6PcqKAU8SO1Aip jSyvfOwTIsu+iLC9j40IuskARyYtg5U+jPiYISmh07iQx9Ev6hiCc13CWIdHnQLnvtc2 n7rZVDCFpSLX/9/wHV1YkUNF8DQU+0iz3DNHZDUkcirFg9O11bLxnxr1Y46rfcaJPker lRTnTFV3j56wsxs76OkRt4xnXLWEhMINxRVEJTAP0l1UYqywuvJ/FJQgKU2hRh/q8UJK UcXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619399; x=1768224199; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=QAPzsylvQAf0leJxcPm7SZsbOhaaSA1OJ2ImRJF3POY=; b=t/7gZVAmVvdUqGN8Dmtm+n/UMv/8DgD2lwsly6lef0oZ1P05p8LS8SXDitfQvqmj4w A205L7LekJomiC2KrHMDlaYrQ9IgC3iIIevueyBvaOfvyJ1CYR3d+bxWjRAVK647w+cU IgUtZUZC+nRtpJ8UaWoHSba+ke5zH/YFpqWw9u36gINMmkzuWIiLi1LLXzEpto9/PbZa ipaKsx9y5txy+c/NUjA+0D/9LAigXBxpl91195GvaTlP49X8qqnB/czOBNPgVE3tXUUJ A32h38aWJouUhjBbyXDqbjT+K7mtxsp0+Pi8hefCPRA7wxUUj9VqZc8qiZNgQF5YyGKV sAPg== X-Forwarded-Encrypted: i=1; AJvYcCWaN7zk6SezTkM6YRYYJU37wDI4W37wJZMxNFs+g7h/UjesJu8b204RkKN3/mO2OZRVx6j6JZKA7sPpY8o=@vger.kernel.org X-Gm-Message-State: AOJu0YwR63hYiNoht7iJv14YC1pgc5/MSiPbNR6Ek5EZL0r3gvBiFd0q +veSH2D6PHXdABB4xYH3HJ9nCigYWaR5O0OrsyWv29sDJvIMdIet5z5+zEOrM72sw+FOBOtwH9C 5uhMYbD1DM7sNVgL6bEpL00fmq8qBapk4ux3txqd1G4eO5WmyAsBqEA8iwGQvHajKo1E= X-Gm-Gg: AY/fxX73hU2IBJNb1VWM5euoDRNTtep6w0vcM1lwAx0253doeuyKsNH2M7rF+ZBIKvw 9n/xHqIf39g/CAwQaLFHKQn9EN2v0DsTGq1vNgR7cHV+xdKSoEx5lKuZOr3RNp5os9M1lWko20Y 7Qi/loALrEpJ1ifB2QeQd1jA45Iaf9vaDXLowf32fS3Z3aWin/nzBGOYruhTqf6HkAda4S8Bbd5 JGIUDE23+oD5Wi9loQf/RCgYUV5+a20W4cEFQ2v0np1vxFEcJn03u4A9NV5T/XvRJYvri6zZuII xYQAi8yRRPBlWmAiVb/PMlDWdrW9MCCC9RqloCu8e3l8y3UhGiEqHZ3zmOAleIN3VDadP5GON1T nNPN/re2dApKMRZ3d56M3Hj2DLZg+unRwYpmX X-Received: by 2002:a05:6a00:e11:b0:7ac:9d93:3efa with SMTP id d2e1a72fcca58-7ff6420d8b0mr42007413b3a.7.1767619399110; Mon, 05 Jan 2026 05:23:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IEXHIoRObBnpG+sDXEev7xVi5cr2hxbkLz+kqCHin71KDqJCUdIlqKzoFWOJM2Ny5kzVPST3A== X-Received: by 2002:a05:6a00:e11:b0:7ac:9d93:3efa with SMTP id d2e1a72fcca58-7ff6420d8b0mr42007379b3a.7.1767619398507; Mon, 05 Jan 2026 05:23:18 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:18 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:49 +0530 Subject: [PATCH v10 01/14] dt-bindings: remoteproc: qcom,pas: Add iommus property Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-1-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Bryan O'Donoghue , Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=1346; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=fkI0IV5pKXD+Z8pE0/I4omqNa0GvsOuaX0Z626kXB7M=; b=N7A1Me2sKxNSdYcaU+4DCNbfiZ8wqBvjkhm5jGip5KJnozTrWsE1VUhhTDdOtzy+26dTqaDBu qI9HFMuG4A0Af0myuYSCsLX6xSFm7RoBTubjT19KZDQXv7oIVpw/IAR X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX9Av4EQAtAbmY KWjQv+z3KeciWXP43NCp0vggXwHhbKKH1eMaAQB5i1N9oIBEHOn02glx5mlhtYoP+iNit+UoCWZ RdQ47qjZW3PydVmWGEaN2nTlMbL6TyHjb3aN4HZNaa+xuLXq8B9i5PRZWlUsl/1w5GJmKT/6DSO lbNDiE9tvajSBgNmvcw1LsYZY/Ljz1/at/em5H/vQa9Au2ufoGwLCAJyM9o0tdmrrsu8HpJEUnn Oo+4hP4ojFCI5id9OcGv0po4yp3Nwmxm0qvaAp8tkhzFydoh3VBboQCUoTYzzDDtK7POGsLhUnc g3IFXfKt9YekaPmGboiwCX3YbveYQDa8z4/rUtHDxGyNwI6dV6uJgQ3WrvsB3Z8oBqD8A2VF3Vg gPSySqLL7xL0kx5UCgglaO2q8XtaBx7TUvEwpcewqtBAHWTK+3NlFnFeTIUWLeiL+mQvrsuUHgT Uuod8/HJ1/VASh828LA== X-Proofpoint-GUID: cCJDS1UcsM6fexkZ-G5AaxU2Q2sHR9VE X-Authority-Analysis: v=2.4 cv=RrbI7SmK c=1 sm=1 tr=0 ts=695bbb47 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=nDsJnkO8JLPJ0mjf3QIA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: cCJDS1UcsM6fexkZ-G5AaxU2Q2sHR9VE 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 On most Qualcomm platforms, the Qualcomm Hypervisor Execution Environment (QHEE) is either used as a standalone hypervisor or co-exists as a module with the Gunyah hypervisor. When QHEE is present, it configures firmware streams for remote processors. If QHEE is not available, the operating system must perform these configurations instead and for that remote processor firmware stream should be presented to the operating system. To support this, add the iommus property as an optional property for PAS-supported devices. Acked-by: Rob Herring (Arm) Reviewed-by: Bryan O'Donoghue Signed-off-by: Mukesh Ojha --- Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.y= aml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml index 63a82e7a8bf8..68c17bf18987 100644 --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml @@ -44,6 +44,9 @@ properties: - const: stop-ack - const: shutdown-ack =20 + iommus: + maxItems: 1 + power-domains: minItems: 1 maxItems: 3 --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 5EA8B338F24 for ; Mon, 5 Jan 2026 13:23:24 +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=1767619405; cv=none; b=nteCcpPrK0OWX/6T83p7TDLoPv0/ESM5cy2VTLnchLK00FrrJoDlVAnbaPK0fPPb6MEd7Mryqs86Qv7XcwLymt8bMmZz60tTb+YEUSJSEDuNhDHuJuHUw6LllUyCZlerOFIRtOlQG/H+zUg/HubZ6UeRffwns2BMdWS9KcRCozU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619405; c=relaxed/simple; bh=f3jYdsijIVBEzZgPAfHN0jwD0EYovRmBDqXW9rNphNg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YeTOvji1VZJazqvwBJrkUIs2mGIMBaJ/Xw7puf8eVWfIwqMzl3P95uuLtvQ5610qW6tgPZJHMlzp9IWBbCkCUhk7gPxAxYXg9zdiRHUV8jMAoLZqbhnlvKTAyYNHNzdT1stIRKByVB2VNFd//uJprAsCg5o6tC7OryZPRNlh7uc= 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=hEz5xDZv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ftb5Ydwr; 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="hEz5xDZv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ftb5Ydwr" 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 6058wA0X594026 for ; Mon, 5 Jan 2026 13:23:23 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= O5upYUWOdvpOsm/yxMLoPNEuGEBTstWRpnFFFwvgaLQ=; b=hEz5xDZv0XKQ2Zfm p9Yk6lcZnvO0Nrsu2BcFag4Xi/ZRRtmMzbPy37srTD7fqTKhQgae4WBQyBBeB1Ce V0VelIEw9epD7znhfFSp/EEsX+yMF2kvVPOIPpFfwYT9WvKj2ETjKTvYB+xdxVh1 Ldb/QaUVZb4uwQLEskFCepBllAYcYxQvwG1hGXxdEyVhDZLg3UfwDZzhltfMQmwl Lmw6CO9ATIAJgL/WB9XEDKpuDH5dYOoBMsRz3a23dgelalo4/BlvZeznxm3mYuAe 8YBRepmMUP7TZFmEPZZCXxXBwo69hJdKIIuPEGDJ2fEmbkBAMb5cMv+YnkffY/w6 r2Noxw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bga8pgnm1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:23 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7f66686710fso36304806b3a.3 for ; Mon, 05 Jan 2026 05:23:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619403; x=1768224203; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=O5upYUWOdvpOsm/yxMLoPNEuGEBTstWRpnFFFwvgaLQ=; b=Ftb5YdwrXu3wbT2NQFJFfTlFEXeYA8+8PqZxTSZzey/4QrKLyS6klAebR0RP4iq/nC lQB9enaxdaOhLU0rZQThFVtE2AxF3n0gkx3TsXgab7afq9i6ByegC2rDNrwHHzR2ssDH OLXCTOxDCxD+hgtosAsWHM/o78dx+pCohzS0/11JdCsDBZH7y4BA5WNum+yw8iioeip4 LJZWsZATCob/ofi6DAW2RSvunUP3hSN23jk3IdPrO0hGtVY8uT7nIgwzQdFlrj7JHVQD YpWVooH+TDiJqYd4p5xzBsii1u2rWShGITXls1yqTCEsMcgPqLX2k2DfWKH3HQXDJ2Qs d3xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619403; x=1768224203; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=O5upYUWOdvpOsm/yxMLoPNEuGEBTstWRpnFFFwvgaLQ=; b=b7CPQncIRdVNtrs2NOsWBWpvFItZQuTAoHWLpSvRn8xdLq2ntVKb0g+uF2O8igYm4f eRqR/5LcF+ziz71y33JdClgbTB7z76ZuSBDEkPxuJ4s1Fjuk1/ePocTRoMHPgO03wdgD PUqNqZkbnNMi3VjAqCjUh6qYiQvjarpuL8hLIkBSUrDKJi9AIWskv3Skg2mqPjEcnezE DhJILpVHvqzNzivT+SSEBzAkptFVEL8l3npDhNHY6qHFk14W6bgW7MR724yO9r41HYRJ Eq0JqIKSHXU/Rrpa2mtCZnS7kVbi5puAFq8Npz65RMcokMSY6ke+s1AD8u+kfFrQA+cw UzQQ== X-Forwarded-Encrypted: i=1; AJvYcCWL7vta7ZUMac1vepSRplEt7s+VCA/Y3B9RJpfgA/wDJZtQKHUhj5jw/hf/FNQn87YuIZGCmbm9VZ+pge0=@vger.kernel.org X-Gm-Message-State: AOJu0Yx93AzfxKiBIJFIx+sjjb7oV02Thf8yoJNE7U6avdVkC3LDwODn WbGZXRbbu9/Sns2Y79AarbMoXY5CcEPc/aIBoEVGOD0S5DRI8yHEe+PwHHAi/Yh2JgmCpKBT46/ Bgjv8d5SruoEoBFSMvmY0PbRsNmmrTFi6TAal2yCHmI4setzaDnAcuMKyRl1LZ4ctyLU= X-Gm-Gg: AY/fxX5hLG+Xl6JXM+fSA023iSTinvJ9Kmh7KDHkX5C07DjYYXoDadNV4+cf01WwoRx 0v8AF+lkU4vp2ziBjGdb3BZy2OyunGa5Pbf+h16B1UKB0djBVem/cPP57d/SusiEHjHdFpHIV8r iv910L/+QIru+pxtpLcxAH72MCToxexNTMbSibiBcRcLQYaWqALhKV9ZokT9prEPryIbdfqxPFG pyN+aS4ZrJFH4fc9E2/zoNoY1dtu+QudR6C+xr+9THNIinmeBiidq6S29MA6S8up2I8GYToM3jR QhKFximAF5lmhPp2SUOtAqCGPDbiWTtsENJBf394LwTBmIsPHWnPe7Be2NUqNc+zxjzqc48QnOM IcSrr/ZSK/n7n09OqGRDhwzL7cluhegL6ft2n X-Received: by 2002:a05:6a00:3286:b0:7f0:4694:1c21 with SMTP id d2e1a72fcca58-7ff64cd8d46mr40843355b3a.20.1767619402687; Mon, 05 Jan 2026 05:23:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IFxveuL87kJNHh5nfz18Kp9QUBUrVDW8mtXxjkXMmCCGbHxKJw+wtfTwu7owSqxrLFOchDAEw== X-Received: by 2002:a05:6a00:3286:b0:7f0:4694:1c21 with SMTP id d2e1a72fcca58-7ff64cd8d46mr40843328b3a.20.1767619402110; Mon, 05 Jan 2026 05:23:22 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:21 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:50 +0530 Subject: [PATCH v10 02/14] firmware: qcom_scm: Remove redundant piece of code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-2-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=906; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=f3jYdsijIVBEzZgPAfHN0jwD0EYovRmBDqXW9rNphNg=; b=pgcAxwIg7lKniSHznYTYZDP0GeACkWbxO1ROZNw4iJv+mVjU/kTo9XMGm9TrJLjglxmyf7bRv tMA8jl6xFqTAsEjbucBIwkjYNoE83qcSRV3Z7Nepxx5GOg9yuT4UEK9 X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfXzTULriapYN7S txJVY3cXCOW2Y9Leyv+EEBoe8BfQZlOPXbE5fisadK//tsonSbYPRnTV/z20MuQrExk/ZUWBjyz RC3Oxd+R63lngXYGPBko4Yf1ndwLQhp4Bgb6Wxh4gChEIU14VEQy/pvdMiroBUlom5/nF9pnITI AGxzPLO6ehr7iRYOAGb9nBW9xSH+NWw8NWrNBcpTeY7Hsa+2dllUYLYyFQyFFmFozSO+vx1pQTe vv/cdt8j3Kc/kQzKOKiLtAgD+HaDaxfpHbNC7XJbJPtwKZHrEoGvC0BBXXMwx6AtLiLOXeU7Nwf O7yemeYLqu08vm16wIaiAdNR4Rx9pCTutOZEObLv+D4vSVW1j/w+IfX+KpmlhElzqVF7uyxAxLv b2wP3UgxVr4rZ8Zgq4G9Rb8+SAAcfbF71H7sznWlWesqmvnVGmXK+LRSHt58mnt0iheNlX45YCm 581NuYTFiZRjV+HlIdg== X-Authority-Analysis: v=2.4 cv=JfWxbEKV c=1 sm=1 tr=0 ts=695bbb4b cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=pWxEDRe995Kf1ot4LjYA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: qOhqSc0bgTku5154GZv9a9NEr_lvnn3D X-Proofpoint-GUID: qOhqSc0bgTku5154GZv9a9NEr_lvnn3D 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 The qcom_scm_pas_metadata_release() function already frees the allocated memory and sets ctx->ptr to NULL. Resetting ctx->phys and ctx->size to zero is unnecessary because the context is expected to be discarded after release. Lets removes redundant assignments. Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 5ae5cc72a4fa..b298a529c84a 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -650,8 +650,6 @@ void qcom_scm_pas_metadata_release(struct qcom_scm_pas_= metadata *ctx) dma_free_coherent(__scm->dev, ctx->size, ctx->ptr, ctx->phys); =20 ctx->ptr =3D NULL; - ctx->phys =3D 0; - ctx->size =3D 0; } EXPORT_SYMBOL_GPL(qcom_scm_pas_metadata_release); =20 --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 81DF133ADB6 for ; Mon, 5 Jan 2026 13:23:28 +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=1767619410; cv=none; b=F1pTGasTLNGDHxe6WMMETuNbG7O8VqXDrOI9DT67lnr0LstyLgxwhT1OgNnCGFpvvB2WqutqEgb8Dio/i6a15bR1VxheevErcATUW9JhqiQyPH5jMZyjW6gGRIGTjDZleXWleBNQO0pSDfB0Y36XOWR1YUasFHqSOEZEiip1bqE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619410; c=relaxed/simple; bh=jmJLL9yy21/T5dkUfSi6xv+w7Dl4R9a76g4RjfccEf0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eWShst634FkNRh+6fUzLjPQ1QWHSZ7VVeRMUBzxoxV3r8DViUhXZN7ssF+lgWm7n7ZmX9VPZOgwEwctUWZKmD/xP8ssJ+Lbcs8mNowU0U7WtrDaVvZyIfFOtEkcu3F3PwLbi5dKtDffGEz0m1B6GmVsEBjzi+BvNpjNt7wje/gQ= 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=gN/1kI7b; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=F8WzVJV0; 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="gN/1kI7b"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="F8WzVJV0" 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 6058JL9v3803597 for ; Mon, 5 Jan 2026 13:23:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= TcTaBliHVmGkKDCgkAsYs4g0RXmBZjhCOT5UQPijOLQ=; b=gN/1kI7bnnLAjm6/ o48195kJXXBaEVdPCFZIepIOEF+dJAnBZr5HySBV5x6UZ5g+T8qJkQlyRPT6oO87 mxKhxdMmzWa5rrlpt2KPnG/0kbgES7M/PCl0jHeNktFjywMlQ8b2JIwPuWR+rG0p FD4LD4cumRjQp5UaMSvfZLdsJXGbMwj43uCc3vk44qyLyBgoFvE2jhhWdOZeb7Jr 0ekh2y3jmZJe6rHlkF0pX8viEgpREVSjMC/mTBXYGG5liaF11wUKmLUmyd4ejunM DQl9+VjVarW4NFEwTN7egO9RT2pLXXUXtsytDJDnFj5x78+o3YeC8jll+vnQSAlR VBkCcw== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4beuvd4jc3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:27 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b609c0f6522so24650193a12.3 for ; Mon, 05 Jan 2026 05:23:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619407; x=1768224207; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=TcTaBliHVmGkKDCgkAsYs4g0RXmBZjhCOT5UQPijOLQ=; b=F8WzVJV0bX0UHAPd7CAQ+FGgD2iUwUWPlLTr+RUAOM8/qhLQ/2MUa13n1wwDeO+vdK 7SFnGQQBsbHxieUo2NZK99JsCqJQPqWjZltzUd4vnPcm0s75FRHj6aKo7yOarzLQsOOm R0XXBlLISWCM84MAv9IR4xxf1AmEy0xchOqEO0Tk7wXQf2WqgFuuQIoov6mptOpbEkca zgpLVoilcEfHE3th2oOYfdG/r6JDoXhGIT4HyRhE6FuObjaF3LI3Nxz8Ebd2//TcCLOe tPAJHZ1X3YIWyilVthkdUN19fp7XUcYPvbGK+II6Xb4WZLcDPW8OLP3Z6UKf2sZPnXLP Vn8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619407; x=1768224207; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TcTaBliHVmGkKDCgkAsYs4g0RXmBZjhCOT5UQPijOLQ=; b=s1hKqthw0P6yMcDIemEVMb81/be5MI0O0x/o0UllrdkJQ121/icyxSObxf1ft9PVtV LyLUybSvZ103+3KQwgURJlE28brbU+PDiiHua6wxrkxUjcdcCDE7JlLXGkwSjFjrFBaX lzfV4/AXk1NEr+xkIr0UBpvXl9STFfzrwORHrvvdIXtf+GAVY9jMf+ndQpKOty6tlV4u a0Ubu9xcFH1J5bznAUEaYHwMTLArxHKcCIvoQYNhkJNYMH7hhVLNoqi46+CiYnsBVpba hW1jl9lnQ34rLE252Xq/iPfxl9KF8/QOE+pzaGIAY4yjPbDn9xS1qIJnE8D8MBkrdqFB NKqA== X-Forwarded-Encrypted: i=1; AJvYcCU67W9AGkhAAzsfcUF8BK1D13Qrh9udAThTOiiUhqZhEvVdQyM1F+1d3/S1zIIhG+q9uUmYRknVAugklLU=@vger.kernel.org X-Gm-Message-State: AOJu0YwcbHB7lJVKSjZUgkdEoUcQnrLX1GHJuQPNgBXxxqoKSCirNwKO EhMKApj1gcR+S6yF2QJVkfLtZPz4HYroraLyX14FI6O4GS+Xrc+3wMmoa0sm0RwAP4hZkaQXBr5 2sO7y7MZoH+YcO/TksQyDcA69Zp3sMrGisZieZE9qCqJG6aM8Css8GMLNdE4lH4lZ3Lg= X-Gm-Gg: AY/fxX5dR1AfpHG8ibRVO7jvU2Xxt08sZQdyG41orobEciot82V/8ZoEIWEeDlBz/66 rAYYKPGoHCHB3sDGo4LgLXkX+OrGI3Iup9XpsRnEGde3g3Uh2i3xyELEqG62CeW++eYcgrQBqOW D52XvN20ZlfO6MQ4+KpvhwFyfo8kQITyuO0Pma6mN7Ygj/3bEjNG0aVEMBKPyFpkv9e8mmapTOk 032MeplTcQCaAOR9q0Ws5kYHFdaEpPPEqcp/yU2f1nU5MlIBT+w1Qde9dfI5LUw9AC6Rb6yhiLU VxPcFsTkqTInjbjaa/Nc8R2kWIS2HPNlG35ul6WOsIfSz7bjSo6+fJWbBWrZHHhyFE1fOUM0j2d cX24x5R4eWLJ4UU75sqdvBrgQnZTb01pf2jFX X-Received: by 2002:a05:6a00:450f:b0:7b9:a3c8:8c3a with SMTP id d2e1a72fcca58-7ff650c7e8dmr45686367b3a.7.1767619406854; Mon, 05 Jan 2026 05:23:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IEtlWc8KtYhNXYtaxKI/oWeTbuW+o3yF1YRHJmezy+B67scF+917/I/6y5QEi8f/0qUQFzSpg== X-Received: by 2002:a05:6a00:450f:b0:7b9:a3c8:8c3a with SMTP id d2e1a72fcca58-7ff650c7e8dmr45686320b3a.7.1767619406133; Mon, 05 Jan 2026 05:23:26 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:25 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:51 +0530 Subject: [PATCH v10 03/14] firmware: qcom_scm: Rename peripheral as pas_id Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-3-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Bryan O'Donoghue , Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=6116; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=jmJLL9yy21/T5dkUfSi6xv+w7Dl4R9a76g4RjfccEf0=; b=dujnzhr0uDU+SouoPxty+Ow+oSBFlWtpmUafpLyapHaYkfLyQHu1p+AGcBnq+B/Z0ZdJ4Oj/d DywWe3RnQdpBfYfb4TvBc6+2oSo861vthJ2FQyXKMWvhdaCCYPRtoJZ X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-ORIG-GUID: oGUBkcFXJPRqQ2_vb_JYaj9v82rSrJW- X-Proofpoint-GUID: oGUBkcFXJPRqQ2_vb_JYaj9v82rSrJW- X-Authority-Analysis: v=2.4 cv=OuhCCi/t c=1 sm=1 tr=0 ts=695bbb4f cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=bcWw3dkznkfw-y6_B5AA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX75tQeD4fvxN+ Oy5doWB55h7TQS3dlIZEXvW+OxsZzzx7VYotCLCAFWCLhqGVaNprhClNz+NS54y3wGAl4SMCQr9 GuhDrhTYc0efFj3drg//WaaxMv8Ln4M/WnQvhb8bKLO6nZZJpAJ+T1UESLLrWaYRAO01NCJa5/j DhURJxaQjrQAvTaF8zO3qSSIPc79nLChkhnmcqK+bAGKxJTyurhbU934fdrd1Ek8gE9xTE10nBr 8FvMGCkQjIYd9hptIwgR5lHaF4wW/0n9DHHnLfxsHxmPtNLvsPvT13SQqkMhKaJe0w5LzYiLjQD tn/TuAFVKxmrR9eDs3mloJfsRda20GcfzFxvtN3C2eHY6M/wwjSk6xM6brcOVrbnN5a5ZHxJ9KN Neiylufkj3p8QkJ8lcC+NxpcUY8JIJLhjyiE2OYLQqDB8rPqQcR0U00qKhPL8oe4B21NEat/ToJ NdgZMGcUNwBfbuxV5+w== 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 impostorscore=0 spamscore=0 priorityscore=1501 lowpriorityscore=0 adultscore=0 suspectscore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 Peripheral and pas_id refers to unique id for a subsystem and used only when peripheral authentication service from secure world is utilized. Lets rename peripheral to pas_id to reflect closer to its meaning. Reviewed-by: Bryan O'Donoghue Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 30 +++++++++++++++--------------- include/linux/firmware/qcom/qcom_scm.h | 10 +++++----- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index b298a529c84a..0a4d5d58c177 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -562,7 +562,7 @@ static void qcom_scm_set_download_mode(u32 dload_mode) * qcom_scm_pas_init_image() - Initialize peripheral authentication service * state machine for a given peripheral, using the * metadata - * @peripheral: peripheral id + * @pas_id: peripheral authentication service id * @metadata: pointer to memory containing ELF header, program header table * and optional blob of data used for authenticating the metadata * and the rest of the firmware @@ -575,7 +575,7 @@ static void qcom_scm_set_download_mode(u32 dload_mode) * track the metadata allocation, this needs to be released by invoking * qcom_scm_pas_metadata_release() by the caller. */ -int qcom_scm_pas_init_image(u32 peripheral, const void *metadata, size_t s= ize, +int qcom_scm_pas_init_image(u32 pas_id, const void *metadata, size_t size, struct qcom_scm_pas_metadata *ctx) { dma_addr_t mdata_phys; @@ -585,7 +585,7 @@ int qcom_scm_pas_init_image(u32 peripheral, const void = *metadata, size_t size, .svc =3D QCOM_SCM_SVC_PIL, .cmd =3D QCOM_SCM_PIL_PAS_INIT_IMAGE, .arginfo =3D QCOM_SCM_ARGS(2, QCOM_SCM_VAL, QCOM_SCM_RW), - .args[0] =3D peripheral, + .args[0] =3D pas_id, .owner =3D ARM_SMCCC_OWNER_SIP, }; struct qcom_scm_res res; @@ -656,20 +656,20 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_metadata_release); /** * qcom_scm_pas_mem_setup() - Prepare the memory related to a given periph= eral * for firmware loading - * @peripheral: peripheral id + * @pas_id: peripheral authentication service id * @addr: start address of memory area to prepare * @size: size of the memory area to prepare * * Returns 0 on success. */ -int qcom_scm_pas_mem_setup(u32 peripheral, phys_addr_t addr, phys_addr_t s= ize) +int qcom_scm_pas_mem_setup(u32 pas_id, phys_addr_t addr, phys_addr_t size) { int ret; struct qcom_scm_desc desc =3D { .svc =3D QCOM_SCM_SVC_PIL, .cmd =3D QCOM_SCM_PIL_PAS_MEM_SETUP, .arginfo =3D QCOM_SCM_ARGS(3), - .args[0] =3D peripheral, + .args[0] =3D pas_id, .args[1] =3D addr, .args[2] =3D size, .owner =3D ARM_SMCCC_OWNER_SIP, @@ -697,18 +697,18 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_mem_setup); /** * qcom_scm_pas_auth_and_reset() - Authenticate the given peripheral firmw= are * and reset the remote processor - * @peripheral: peripheral id + * @pas_id: peripheral authentication service id * * Return 0 on success. */ -int qcom_scm_pas_auth_and_reset(u32 peripheral) +int qcom_scm_pas_auth_and_reset(u32 pas_id) { int ret; struct qcom_scm_desc desc =3D { .svc =3D QCOM_SCM_SVC_PIL, .cmd =3D QCOM_SCM_PIL_PAS_AUTH_AND_RESET, .arginfo =3D QCOM_SCM_ARGS(1), - .args[0] =3D peripheral, + .args[0] =3D pas_id, .owner =3D ARM_SMCCC_OWNER_SIP, }; struct qcom_scm_res res; @@ -733,18 +733,18 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_auth_and_reset); =20 /** * qcom_scm_pas_shutdown() - Shut down the remote processor - * @peripheral: peripheral id + * @pas_id: peripheral authentication service id * * Returns 0 on success. */ -int qcom_scm_pas_shutdown(u32 peripheral) +int qcom_scm_pas_shutdown(u32 pas_id) { int ret; struct qcom_scm_desc desc =3D { .svc =3D QCOM_SCM_SVC_PIL, .cmd =3D QCOM_SCM_PIL_PAS_SHUTDOWN, .arginfo =3D QCOM_SCM_ARGS(1), - .args[0] =3D peripheral, + .args[0] =3D pas_id, .owner =3D ARM_SMCCC_OWNER_SIP, }; struct qcom_scm_res res; @@ -770,18 +770,18 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_shutdown); /** * qcom_scm_pas_supported() - Check if the peripheral authentication servi= ce is * available for the given peripherial - * @peripheral: peripheral id + * @pas_id: peripheral authentication service id * * Returns true if PAS is supported for this peripheral, otherwise false. */ -bool qcom_scm_pas_supported(u32 peripheral) +bool qcom_scm_pas_supported(u32 pas_id) { int ret; struct qcom_scm_desc desc =3D { .svc =3D QCOM_SCM_SVC_PIL, .cmd =3D QCOM_SCM_PIL_PAS_IS_SUPPORTED, .arginfo =3D QCOM_SCM_ARGS(1), - .args[0] =3D peripheral, + .args[0] =3D pas_id, .owner =3D ARM_SMCCC_OWNER_SIP, }; struct qcom_scm_res res; diff --git a/include/linux/firmware/qcom/qcom_scm.h b/include/linux/firmwar= e/qcom/qcom_scm.h index a55ca771286b..a13f703b16cd 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -72,13 +72,13 @@ struct qcom_scm_pas_metadata { ssize_t size; }; =20 -int qcom_scm_pas_init_image(u32 peripheral, const void *metadata, size_t s= ize, +int qcom_scm_pas_init_image(u32 pas_id, const void *metadata, size_t size, struct qcom_scm_pas_metadata *ctx); void qcom_scm_pas_metadata_release(struct qcom_scm_pas_metadata *ctx); -int qcom_scm_pas_mem_setup(u32 peripheral, phys_addr_t addr, phys_addr_t s= ize); -int qcom_scm_pas_auth_and_reset(u32 peripheral); -int qcom_scm_pas_shutdown(u32 peripheral); -bool qcom_scm_pas_supported(u32 peripheral); +int qcom_scm_pas_mem_setup(u32 pas_id, phys_addr_t addr, phys_addr_t size); +int qcom_scm_pas_auth_and_reset(u32 pas_id); +int qcom_scm_pas_shutdown(u32 pas_id); +bool qcom_scm_pas_supported(u32 pas_id); =20 int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val); int qcom_scm_io_writel(phys_addr_t addr, unsigned int val); --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 EEE3933B95E for ; Mon, 5 Jan 2026 13:23:32 +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=1767619414; cv=none; b=gB1E5tmeiUkmhvWIBJn1TwWzCHuUJpjE4NRHFBiKYul3rR34XiyJKmpeLOqqxASypZZxUau+CZYgH9CIhlZJaNKyvhXmEOLhN50SjOOc1HqqkvMBoLfTtsugqy9/Tw8UCOqgSHeUWOTGgafdZO0ZzSUdeMeJ6OQeHdRkeX9blq8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619414; c=relaxed/simple; bh=HrLkG36I07Ib0XRgEzoPfMEgZMeQfHT6NhYwPB4Ll/Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lm++KogqqdrD7f56JYbls6ZkZDthC2a4cuNqBC8z8V6r3eS6whWzwUXIvLupuF9XjsSiBaUQ+kT7R8heDVRI31xeZF2b4PkZ+3YWpMKB8hWIhRrsnoB/lnvYKQo22qlDYuqMJf8vZFS5ydioVYM+f/cyYQBWqOlla7JsLYonpWo= 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=TgmxVvoY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IbpFN4oa; 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="TgmxVvoY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IbpFN4oa" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 605A6DYU3541659 for ; Mon, 5 Jan 2026 13:23:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= +ixUkiWjvrA2xnuQivPNMlYRl32u7TOycV7BpXyApjM=; b=TgmxVvoYUlLvcu4F 1aCF99jzASv23+RPtdpBV8v87aMdpFk0Gesh1SU/OSa5s9slFDas+iubdhXQZPIB xg+cHdC8rChoAmeXelqldFYSPa0PcXzIJCSIdIQWB3Hijb+jOoa1mbXS+vAItdLy iyc3mMwAjcoMIUnTuRsa3FkiCT7z3eNSnqtJx3yGAtQx47LVXTM8bbov3O+wTsM3 VcOcR+tcZ4WHEij/NijV9l6+qjpaeEvs+J5z1aCMTaaFrAvp3X9AvUxuXYkpuG2p YxurqE5Y4yZQea1dQQSwxVXt97f/nWxi0wQbPzmAAOwzBE4WIE50DBd3GviSZQYx 0W3o/w== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bg57shkfq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:32 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7f21951c317so11253498b3a.2 for ; Mon, 05 Jan 2026 05:23:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619411; x=1768224211; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+ixUkiWjvrA2xnuQivPNMlYRl32u7TOycV7BpXyApjM=; b=IbpFN4oaGgX+p1KY5Eyn8oMP4CKnnDtiZA8LasC05/qf82zNt7LGauIZ/XoXYjFsyg AEBAUmbE60k3Oj286mRgiiMnKX+hzz/eY2PkLSZXxna8ClazEfuZjWm3MtH2X3pjSTTL KDfBExOcWMtiKYKyl+1usv3Jlc+SKsF2hPECIPfU8natekYUimDuZayXqJirwkxLcXCo NBJEqLkTbqLMmecHxvPhNosId0c8Jj9/2IPzPwLnazkLmkuAbXhvsouNKaxIK7NsUsPR OhpIksldqcxJf6aI44mY6hBl/PDgDPpxQ3QhyYUF+7ObK1hTz4JJxbzyMu7LirnseqWL 3KDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619411; x=1768224211; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+ixUkiWjvrA2xnuQivPNMlYRl32u7TOycV7BpXyApjM=; b=rKE9LnwwEAhxoHuQ4vBlI0Q4JIPkA0mW7Vkvt+L4eAruEE8sHLMiPruUHN/9K5NYtW ClyD1YUkrKE9ETaEURWz/vcTnXoGVSHja8epq0IM7nioCIFQlVB3TsXhP5ZFVuwGZypY W66uLqacSppW3nqXVoPiaZAMeAxmWG5otKCosuvm+BFUT+3j4LLJM4PE23yBABfOe6CP 72y2uXy0VmSn3P8jSXuN8yQtMOd2d+GddcyH07IIux2HONnIQ7ktauwWsLBhvsQrYYaP qNGAI76wOuX6tK9rNLtgYK1g3qZojDVEArKYaF/75e67P2gz/eQe3Of5YSXcPYnyOCHU htMQ== X-Forwarded-Encrypted: i=1; AJvYcCUbtTQchebgKvnKg4Undh08W8pdETg/NDpTugcOtyXxoF1TQuZoW7KNpvUWeo5+WGX0Ykg4YqaS18BZyJc=@vger.kernel.org X-Gm-Message-State: AOJu0Yx71XRA54AFFYPkHCQ4UulE6Ri40ewRrb8mPxm9fCbLsZG3qPAy lod8Uo+hutuKVFJuV9gDmvoN/GItk/v2r8q6IpYjq9240oH5PmaybR61FdRhMibdbwkJI7pVRmY aLHao6EQpMWoWhNhVomQnCpfzR8bBN+f9hEEdi3GjgC8fk3afFtcIPr/ZUTqdweRwzDA= X-Gm-Gg: AY/fxX7x6xHLuGUYIdNYfPI1WJ/S6AJO33YRdpBwjVhbiYjC1CJRycT+jYrAuW0dGCs lhrRTdGUO06oNBAz/FAyXN+IwbFNOsP2+LZb6tTZS/yHxFfqYSe+QubXFBIrMWUX0UdccF13aGu hA3QOA3hgs3L+O5DM6KBpLStins2pBXCnNdmfrPsn+FO6ZhDscPwccAkaSkAXwnVpLIBQhrEs4O EAyqvrPcaKgGQUKoqYCP7evLQf6KNxwGk/exA3XRk+Oi+HyHaw/Wf2s5PYQFeQY0kCUtFAJLbws 6EEDDiwA2Fy7BUHAMHNCxFkQeGdZ0NFDJqSSCG6v+MKrcnkfq+vKY0XSJtdG97loTm4tVbvZOkW GBaQdy/xn6qdOEeunz0BlUUn6S2j5VL9EA8cL X-Received: by 2002:a05:6a00:4483:b0:7e8:4471:8e4 with SMTP id d2e1a72fcca58-7ff66f5ae03mr38215253b3a.69.1767619411411; Mon, 05 Jan 2026 05:23:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IG+OmHz3U8kN2GWNtwM65IjApm5j0ep/tO3ITPoxAyzCoic25jZF7MQ25wgM4nE9IGG8nMJhg== X-Received: by 2002:a05:6a00:4483:b0:7e8:4471:8e4 with SMTP id d2e1a72fcca58-7ff66f5ae03mr38215227b3a.69.1767619410822; Mon, 05 Jan 2026 05:23:30 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:30 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:52 +0530 Subject: [PATCH v10 04/14] firmware: qcom_scm: Introduce PAS context allocator helper function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-4-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=4036; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=HrLkG36I07Ib0XRgEzoPfMEgZMeQfHT6NhYwPB4Ll/Q=; b=YiRaLse+KM8syyQNGIDwZvKaM1DSMbpFOU4ROmDFa2yVE9Paj9VMYZI8oxQ03C2ZkNdgyI/X5 /oSxL26nZJfABAeJBF7CAAQZ1zSuYkLon7814XQ9qEfh70m07uk1eun X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Authority-Analysis: v=2.4 cv=UJ/Q3Sfy c=1 sm=1 tr=0 ts=695bbb54 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=FtZ2CgB1kwCBZN0VdloA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfXzFVKhwy4n/sh oX/6KavjRGjdAYJFrflAIyhe4Yvq80SjNXbhwAgANv9kc5qkh6neH/aYwmerXFp8OuOU9lMf6S4 x2CPyMTwi9fv8FMOKsxZ33+pxsu6mxlp7vWucgskqdz8JXVy5fG/aVswEqYFo//Pslu7MgqSIlL 9kiraXIJvNq7VKggHBbBSJvpi0NjL8yMhzNtg29VrQ51odxEJiFzYZVpm/9njo7Hcp0819fAYhV 4GLEkM57mQZKFnZTnfrkYd6ZJ61HQkJXXW+NI3MnS9PoDr2yu81hBpztMSfG1WcPPgLeBa8RcuD lTTB+Zox9MmErh54DWC1e31oTHAuOllJraQ+tVqANFC7EIIskf/zDEJWOy6SwVpAkrZxr6HGA7k 6GtzlksZ/078jzXj8enfava1nHRjRIcOACSvKRCxiWNk/fk2kTgmJh/d+t4dsH6gRZecTRhy2ux 4GXQoIH2c2+99cUkhmQ== X-Proofpoint-ORIG-GUID: z39aqkHScICQ5rjSryveZMLAeeKFcaI8 X-Proofpoint-GUID: z39aqkHScICQ5rjSryveZMLAeeKFcaI8 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 spamscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 When the Peripheral Authentication Service (PAS) method runs on a SoC where Linux operates at EL2 (i.e., without the Gunyah hypervisor), the reset sequences are handled by TrustZone. In such cases, Linux must perform additional steps before invoking PAS SMC calls, such as creating a SHM bridge. Therefore, PAS SMC calls require awareness and handling of these additional steps when Linux runs at EL2. To support this, there is a need for a data structure that can be initialized prior to invoking any SMC or MDT functions. This structure allows those functions to determine whether they are operating in the presence or absence of the Gunyah hypervisor and behave accordingly. Currently, remoteproc and non-remoteproc subsystems use different variants of the MDT loader helper API, primarily due to differences in metadata context handling. Remoteproc subsystems retain the metadata context until authentication and reset are completed, while non-remoteproc subsystems (e.g., video, graphics, IPA, etc.) do not retain the metadata context and can free it within the qcom_scm_pas_init() call by passing a NULL context parameter and due to these differences, it is not possible to extend metadata context handling to support remoteproc and non remoteproc subsystem use PAS operations, when Linux operates at EL2. Add PAS context data structure allocator helper function. Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 34 ++++++++++++++++++++++++++++++= ++++ include/linux/firmware/qcom/qcom_scm.h | 14 ++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 0a4d5d58c177..43a6187f4bd2 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -558,6 +558,40 @@ static void qcom_scm_set_download_mode(u32 dload_mode) dev_err(__scm->dev, "failed to set download mode: %d\n", ret); } =20 +/** + * devm_qcom_scm_pas_context_alloc() - Allocate peripheral authentication = service + * context for a given peripheral + * + * PAS context is device-resource managed, so the caller does not need + * to worry about freeing the context memory. + * + * @dev: PAS firmware device + * @pas_id: peripheral authentication service id + * @mem_phys: Subsystem reserve memory start address + * @mem_size: Subsystem reserve memory size + * + * Returns: The new PAS context, or ERR_PTR() on failure. + */ +struct qcom_scm_pas_context *devm_qcom_scm_pas_context_alloc(struct device= *dev, + u32 pas_id, + phys_addr_t mem_phys, + size_t mem_size) +{ + struct qcom_scm_pas_context *ctx; + + ctx =3D devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return ERR_PTR(-ENOMEM); + + ctx->dev =3D dev; + ctx->pas_id =3D pas_id; + ctx->mem_phys =3D mem_phys; + ctx->mem_size =3D mem_size; + + return ctx; +} +EXPORT_SYMBOL_GPL(devm_qcom_scm_pas_context_alloc); + /** * qcom_scm_pas_init_image() - Initialize peripheral authentication service * state machine for a given peripheral, using the diff --git a/include/linux/firmware/qcom/qcom_scm.h b/include/linux/firmwar= e/qcom/qcom_scm.h index a13f703b16cd..5045f8fe876d 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -72,6 +72,20 @@ struct qcom_scm_pas_metadata { ssize_t size; }; =20 +struct qcom_scm_pas_context { + struct device *dev; + u32 pas_id; + phys_addr_t mem_phys; + size_t mem_size; + void *ptr; + dma_addr_t phys; + ssize_t size; +}; + +struct qcom_scm_pas_context *devm_qcom_scm_pas_context_alloc(struct device= *dev, + u32 pas_id, + phys_addr_t mem_phys, + size_t mem_size); int qcom_scm_pas_init_image(u32 pas_id, const void *metadata, size_t size, struct qcom_scm_pas_metadata *ctx); void qcom_scm_pas_metadata_release(struct qcom_scm_pas_metadata *ctx); --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 328ED33BBD4 for ; Mon, 5 Jan 2026 13:23:37 +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=1767619418; cv=none; b=ibwTG/lpuq6+nwZJ/tQYyU0wZCDbNcUK9o28jNkz8iZBU/oH8i5RdG70IK3H4b5K64Y4okGkntTOEFndB72vIYGW31m944tfFxYbMper9440q7AT2qZ/Ue0acWKkhPuyCwarZhlpvEpU792HLPcj27i789wYya6lRFv0WDmsQSE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619418; c=relaxed/simple; bh=1R/LmskGceWBGNRaC8G9uMDiBlpL1Wbo7UUQ7OYccTo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UExSfBHpPNJLwnGRbZmEANNBxkks613dKOKe6DAbwe/X0PRE15P4uhphVdJZki1oiLXl2jvTFqZUMqMuPEKYGM4VC404PCUjquaMi19OMDroggfwYu37gpeuEYeM/KZzImuVZgfJ5nz/vXES0OzyuamSPirYCCqu5e8RuRmpW+w= 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=M4DRTprG; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hDkFBYkA; 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="M4DRTprG"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hDkFBYkA" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6058bSGH1216101 for ; Mon, 5 Jan 2026 13:23:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= XIRLZB2KHqoq49aFdDDnjzDKbj1SGql6ahTYS5V6XgI=; b=M4DRTprGjoid5FbG FAFMg9MiT1iKc5iQKHw+2Klb1Rdy6rQ1zSrE+J8Gcb2/ZCPqQa5UzNMwQ963IZNs HP2kPBnnMpez4pLp/bfF6RcJFWbA6eOma+W86w393mUFNxWgkBq/TD3bhISpcoeC Ka7Xuv/aErgOMJcqK8BOkFEVg1RxdJBaI2DA6wMaPq9odboL9Y9XPyDRTgL2DygC rT4webF6DyNioy7QH7lUaKakUFCfS/1jG3jHYcLgYAgKNYo/5tohHeBMI0y6QASf 9+Zyk56Riq2rLFitkwKMTD3hFYH6lCsvOjoXNf1LPo0YYMKd7sWX80VqnUvM2Z/E k8FXpg== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bev9hch7d-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:36 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7b82c2c2ca2so26383250b3a.1 for ; Mon, 05 Jan 2026 05:23:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619415; x=1768224215; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XIRLZB2KHqoq49aFdDDnjzDKbj1SGql6ahTYS5V6XgI=; b=hDkFBYkAwYr/ah3olN/+fee4lbl39pzuml6ruJIMeEOxjuJeRGujEiuXnE9Bi495ku 9MWWAiIxJxF/+2/bmtoXsvlQPdYYTKjSzfqYOAdEdNpXj/KDlqTM4XmvOvJHI7/777Db +x0yGI3zRqsczbTqBdE5VlLrUa8yvgypVPy2qqMv3A/3VzW2Y+krWROq7nUf+gRe/Pol Z6RkYXsAXn//gwzh5MkX/4yDkHVNeD0AlopYXbX+hgbob+gk0HJhPNfzMO8b8yey2WIe Wck9iFu5J2472Qq9ctDehNGcGKVDHImkt8lCCi6MEhLH8YXR7dvl/jmmS2SzKkDE1WE6 jPxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619415; x=1768224215; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=XIRLZB2KHqoq49aFdDDnjzDKbj1SGql6ahTYS5V6XgI=; b=Je9TRcUgUalgvgyYvP61JuU1A04s4ynDbzdRvXCGkmfu19401fB0c2chP4PV/6D5f1 tQ5mLR9my20ErnCvM9pr5ec9rZmeBCNvae/QhuV8zsakpA8evJk3aSg3UmmxBpa5e9ko D5/yLu7F/qiBYhu7OEvVCaIX+O/u+zIz1Zid91mtD8goPC7eRXlvs/zkmVVEJR/78pB8 Vt3huCoAHnAXzP8/RhatGfAt9FM2mIKbnnqryiARmxQsWp9cmgXNhJNwJ8eeNyLJ/oe4 L3duSuxa/Tgll5Zhs7uiS0J1k+BEkKFbUAJS6z0Z+Hbqt0NFGueLmGG8triJYWXe0vnd QWxg== X-Forwarded-Encrypted: i=1; AJvYcCVnIHUYL3/DZrBvKNTH3+ejLh0ljtYpo7rpd1UDayGj0JkoOBegf+VXNG3mhQAPOCmqBHsSVOW72bFXDT8=@vger.kernel.org X-Gm-Message-State: AOJu0YwnjUmqREqTjFVsF/aqI4dvbDHGVdzHx86h87UqYyIm20zD+XAj IrT2cKaJFt2Wb3psPKKPCvnfy1ia8JVMNkRyHQU8X7PdSLwPX1Dn3yrUQ2zY5ZWYjS/rAOGXTzk bCHXh310jfQIoGWXzGvA46ohBcDQ+gjFW69U8Gz/BU5ZTH5IACoKlbRYRupelgBtvHv8= X-Gm-Gg: AY/fxX4ljhxiCSobPSCXhKGI2VfSy4lPCCWQMBKUEBgBHjKuLgyg9Np+P/7vPjFqJw5 H38dgBhITb1bMIWQqdvsQTDi7V5m7iT3cmF2aQekhkSMuWmWOBBufbesorD9ZI9B1aZxvRUBTg+ uLQ9loYirUXtG08dD219bVclaqgSh3A352lZzkecK3O427hoY4J4/9KHfZyjge+nYj8JCaVx5Dh ShfoovBXcJJJlSuhqO3j4Bl3gSI9JNsQcFwcbR5hCVL0Mx0Y3WZsY+cFFKMcdKIkFHOmUt5SQQE njJs2u/fXa6bkJDuBUc91uKZbbBl/UBPeSPBwLw8+87/H+Dv+9bzixRJuHHC78ipy18/rMlf0UQ slOHChR0ZdMr+bTv0T99Muy8GBMRJmhs9zVjM X-Received: by 2002:a05:6a00:2908:b0:7e8:4471:ae6b with SMTP id d2e1a72fcca58-7ff67a5b877mr39729943b3a.55.1767619415232; Mon, 05 Jan 2026 05:23:35 -0800 (PST) X-Google-Smtp-Source: AGHT+IHenk6G63NTbxTMnahhRHXci8R1KgjZdnUCh6fXg6tePoKsxk9NPCwgb5jEgAblWoCVwdPEwA== X-Received: by 2002:a05:6a00:2908:b0:7e8:4471:ae6b with SMTP id d2e1a72fcca58-7ff67a5b877mr39729908b3a.55.1767619414587; Mon, 05 Jan 2026 05:23:34 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:34 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:53 +0530 Subject: [PATCH v10 05/14] remoteproc: pas: Replace metadata context with PAS context structure Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-5-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=8850; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=1R/LmskGceWBGNRaC8G9uMDiBlpL1Wbo7UUQ7OYccTo=; b=r7QDSuRBAH6k2lrlyz7mlXxA29YrGQRLxkgm57L1Cl6GdgHQUhLgnVoiYmlrLlviSHPsozmRy awRj4JWAemTCK9zNt+U1vNv+8xBk9DD46lAfY98cqPD/75oU8JUk3e3 X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX1z65DcNKSZ4E X52Uy/W/Is7RbXLvIM0Zh3va272ENAuXvRtmjRsH7xhdzoMew4BACCBFQGGYpOJh5hIpbOaY88r 3qe+UJHFI/EzhIvIBHUa53HbyTDiEn2g6SPWU69gccAWT9VOz1xRXhU0iZAThFh0aUboEUFexcj d1ZUV/IxdcjlpFcjtYaAVyaKypYMhkd9utQXf0zHZ44vK+35v8vX70ZBGxxXXvl5jCjw5okKQwE hUmgPl+56yB+dVjnMPR3cxY5HiO3CzrqBP71uVtZZTtVFOLYsy4d9DWE3U00Rx/lZtNs6cO1ujX UC6+MX9dHcev01HK5KdveHd3+xq85jbgNkf5OyCyqblsoIvRD3AzHaTByJ6Hx3sjTvVEceg8fD1 lgaglwFU5+97x3rhr+bKa1wIG6gNeMi+DKR7w43nh5YKWD7zA6En/RrnQy9E5N2ttx9lYSDd0lr LiRpHzghFcT8ChET3jg== X-Proofpoint-GUID: 3gtr1r7oo4Cnb3YJYyOZARF-li9ZEbdm X-Authority-Analysis: v=2.4 cv=RrbI7SmK c=1 sm=1 tr=0 ts=695bbb58 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=FPhKjH8jRcijH9SIsZwA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: 3gtr1r7oo4Cnb3YJYyOZARF-li9ZEbdm 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 As a superset of the existing metadata context, the PAS context structure enables both remoteproc and non-remoteproc subsystems to better support scenarios where the SoC runs with or without the Gunyah hypervisor. To reflect this, relevant SCM and metadata functions are updated to incorporate PAS context awareness and remove metadata context data structure completely. Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 8 +++---- drivers/remoteproc/qcom_q6v5_pas.c | 38 ++++++++++++++++++++++++------= ---- drivers/soc/qcom/mdt_loader.c | 4 ++-- include/linux/firmware/qcom/qcom_scm.h | 10 ++------- include/linux/soc/qcom/mdt_loader.h | 6 +++--- 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 43a6187f4bd2..fcb7620b83a4 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -601,7 +601,7 @@ EXPORT_SYMBOL_GPL(devm_qcom_scm_pas_context_alloc); * and optional blob of data used for authenticating the metadata * and the rest of the firmware * @size: size of the metadata - * @ctx: optional metadata context + * @ctx: optional pas context * * Return: 0 on success. * @@ -610,7 +610,7 @@ EXPORT_SYMBOL_GPL(devm_qcom_scm_pas_context_alloc); * qcom_scm_pas_metadata_release() by the caller. */ int qcom_scm_pas_init_image(u32 pas_id, const void *metadata, size_t size, - struct qcom_scm_pas_metadata *ctx) + struct qcom_scm_pas_context *ctx) { dma_addr_t mdata_phys; void *mdata_buf; @@ -674,9 +674,9 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_init_image); =20 /** * qcom_scm_pas_metadata_release() - release metadata context - * @ctx: metadata context + * @ctx: pas context */ -void qcom_scm_pas_metadata_release(struct qcom_scm_pas_metadata *ctx) +void qcom_scm_pas_metadata_release(struct qcom_scm_pas_context *ctx) { if (!ctx->ptr) return; diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index 52680ac99589..bfcb65aed008 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -117,8 +117,8 @@ struct qcom_pas { struct qcom_rproc_ssr ssr_subdev; struct qcom_sysmon *sysmon; =20 - struct qcom_scm_pas_metadata pas_metadata; - struct qcom_scm_pas_metadata dtb_pas_metadata; + struct qcom_scm_pas_context *pas_ctx; + struct qcom_scm_pas_context *dtb_pas_ctx; }; =20 static void qcom_pas_segment_dump(struct rproc *rproc, @@ -211,9 +211,9 @@ static int qcom_pas_unprepare(struct rproc *rproc) * auth_and_reset() was successful, but in other cases clean it up * here. */ - qcom_scm_pas_metadata_release(&pas->pas_metadata); + qcom_scm_pas_metadata_release(pas->pas_ctx); if (pas->dtb_pas_id) - qcom_scm_pas_metadata_release(&pas->dtb_pas_metadata); + qcom_scm_pas_metadata_release(pas->dtb_pas_ctx); =20 return 0; } @@ -241,7 +241,7 @@ static int qcom_pas_load(struct rproc *rproc, const str= uct firmware *fw) =20 ret =3D qcom_mdt_pas_init(pas->dev, pas->dtb_firmware, pas->dtb_firmware= _name, pas->dtb_pas_id, pas->dtb_mem_phys, - &pas->dtb_pas_metadata); + pas->dtb_pas_ctx); if (ret) goto release_dtb_firmware; =20 @@ -255,7 +255,7 @@ static int qcom_pas_load(struct rproc *rproc, const str= uct firmware *fw) return 0; =20 release_dtb_metadata: - qcom_scm_pas_metadata_release(&pas->dtb_pas_metadata); + qcom_scm_pas_metadata_release(pas->dtb_pas_ctx); =20 release_dtb_firmware: release_firmware(pas->dtb_firmware); @@ -306,7 +306,7 @@ static int qcom_pas_start(struct rproc *rproc) } =20 ret =3D qcom_mdt_pas_init(pas->dev, pas->firmware, rproc->firmware, pas->= pas_id, - pas->mem_phys, &pas->pas_metadata); + pas->mem_phys, pas->pas_ctx); if (ret) goto disable_px_supply; =20 @@ -332,9 +332,9 @@ static int qcom_pas_start(struct rproc *rproc) goto release_pas_metadata; } =20 - qcom_scm_pas_metadata_release(&pas->pas_metadata); + qcom_scm_pas_metadata_release(pas->pas_ctx); if (pas->dtb_pas_id) - qcom_scm_pas_metadata_release(&pas->dtb_pas_metadata); + qcom_scm_pas_metadata_release(pas->dtb_pas_ctx); =20 /* firmware is used to pass reference from qcom_pas_start(), drop it now = */ pas->firmware =3D NULL; @@ -342,9 +342,9 @@ static int qcom_pas_start(struct rproc *rproc) return 0; =20 release_pas_metadata: - qcom_scm_pas_metadata_release(&pas->pas_metadata); + qcom_scm_pas_metadata_release(pas->pas_ctx); if (pas->dtb_pas_id) - qcom_scm_pas_metadata_release(&pas->dtb_pas_metadata); + qcom_scm_pas_metadata_release(pas->dtb_pas_ctx); disable_px_supply: if (pas->px_supply) regulator_disable(pas->px_supply); @@ -760,6 +760,22 @@ static int qcom_pas_probe(struct platform_device *pdev) } =20 qcom_add_ssr_subdev(rproc, &pas->ssr_subdev, desc->ssr_name); + + pas->pas_ctx =3D devm_qcom_scm_pas_context_alloc(pas->dev, pas->pas_id, + pas->mem_phys, pas->mem_size); + if (IS_ERR(pas->pas_ctx)) { + ret =3D PTR_ERR(pas->pas_ctx); + goto remove_ssr_sysmon; + } + + pas->dtb_pas_ctx =3D devm_qcom_scm_pas_context_alloc(pas->dev, pas->dtb_p= as_id, + pas->dtb_mem_phys, + pas->dtb_mem_size); + if (IS_ERR(pas->dtb_pas_ctx)) { + ret =3D PTR_ERR(pas->dtb_pas_ctx); + goto remove_ssr_sysmon; + } + ret =3D rproc_add(rproc); if (ret) goto remove_ssr_sysmon; diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c index c239107cb930..b125140100db 100644 --- a/drivers/soc/qcom/mdt_loader.c +++ b/drivers/soc/qcom/mdt_loader.c @@ -234,13 +234,13 @@ EXPORT_SYMBOL_GPL(qcom_mdt_read_metadata); * @fw_name: name of the firmware, for construction of segment file names * @pas_id: PAS identifier * @mem_phys: physical address of allocated memory region - * @ctx: PAS metadata context, to be released by caller + * @ctx: PAS context, ctx->metadata to be released by caller * * Returns 0 on success, negative errno otherwise. */ int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw, const char *fw_name, int pas_id, phys_addr_t mem_phys, - struct qcom_scm_pas_metadata *ctx) + struct qcom_scm_pas_context *ctx) { const struct elf32_phdr *phdrs; const struct elf32_phdr *phdr; diff --git a/include/linux/firmware/qcom/qcom_scm.h b/include/linux/firmwar= e/qcom/qcom_scm.h index 5045f8fe876d..ad69b51fe6fc 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -66,12 +66,6 @@ int qcom_scm_set_warm_boot_addr(void *entry); void qcom_scm_cpu_power_down(u32 flags); int qcom_scm_set_remote_state(u32 state, u32 id); =20 -struct qcom_scm_pas_metadata { - void *ptr; - dma_addr_t phys; - ssize_t size; -}; - struct qcom_scm_pas_context { struct device *dev; u32 pas_id; @@ -87,8 +81,8 @@ struct qcom_scm_pas_context *devm_qcom_scm_pas_context_al= loc(struct device *dev, phys_addr_t mem_phys, size_t mem_size); int qcom_scm_pas_init_image(u32 pas_id, const void *metadata, size_t size, - struct qcom_scm_pas_metadata *ctx); -void qcom_scm_pas_metadata_release(struct qcom_scm_pas_metadata *ctx); + struct qcom_scm_pas_context *ctx); +void qcom_scm_pas_metadata_release(struct qcom_scm_pas_context *ctx); int qcom_scm_pas_mem_setup(u32 pas_id, phys_addr_t addr, phys_addr_t size); int qcom_scm_pas_auth_and_reset(u32 pas_id); int qcom_scm_pas_shutdown(u32 pas_id); diff --git a/include/linux/soc/qcom/mdt_loader.h b/include/linux/soc/qcom/m= dt_loader.h index 8ea8230579a2..07c278841816 100644 --- a/include/linux/soc/qcom/mdt_loader.h +++ b/include/linux/soc/qcom/mdt_loader.h @@ -10,14 +10,14 @@ =20 struct device; struct firmware; -struct qcom_scm_pas_metadata; +struct qcom_scm_pas_context; =20 #if IS_ENABLED(CONFIG_QCOM_MDT_LOADER) =20 ssize_t qcom_mdt_get_size(const struct firmware *fw); int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw, const char *fw_name, int pas_id, phys_addr_t mem_phys, - struct qcom_scm_pas_metadata *pas_metadata_ctx); + struct qcom_scm_pas_context *pas_ctx); int qcom_mdt_load(struct device *dev, const struct firmware *fw, const char *fw_name, int pas_id, void *mem_region, phys_addr_t mem_phys, size_t mem_size, @@ -39,7 +39,7 @@ static inline ssize_t qcom_mdt_get_size(const struct firm= ware *fw) =20 static inline int qcom_mdt_pas_init(struct device *dev, const struct firmw= are *fw, const char *fw_name, int pas_id, phys_addr_t mem_phys, - struct qcom_scm_pas_metadata *pas_metadata_ctx) + struct qcom_scm_pas_context *pas_ctx) { return -ENODEV; } --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 E10EE33C534 for ; Mon, 5 Jan 2026 13:23:40 +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=1767619422; cv=none; b=Riif7WCEiB8X128yqTAVhuH2XNwymQwKPsBkr3VCkLJeKCDh+yoZ+QXBi8BFbZxpnS1WnjbNs3l6I6wyGfwlbyfaHvsT+rL6sK0TBvjztzhpqax5mTMdyA6XdIC3mZRBD00xKGtzMnEWq6nE25BkGOw0I7u6/RyYQFqF2jNpSzs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619422; c=relaxed/simple; bh=6F8K/zkrX0qeC580/xJB2YdjtX5REOOH8FpswaScz30=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=neWxvURUve1zWvz6tcuXxvkztEmoMl9x6aa73m19qP5XpwBXCIQJ57gf2AL0wH3pVkMNVWchSibG65tOxQ2qbFy2l6NeTTvipRz7/R+JUnZL2ErfF1nyyymnX2aVjZ7cVsZjLWGbTEPc1o3tUCWtn6TfkkNTVAKr7KLm3Zq/KyU= 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=fxwU/Qwf; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=akQwRG37; 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="fxwU/Qwf"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="akQwRG37" 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 6058L32V3652262 for ; Mon, 5 Jan 2026 13:23:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 786iM0/9dnDx7bEo0CycJSZKYjOjPKU4LuDUpimk85w=; b=fxwU/Qwfgd0UBLls +NuF/Px+fyXcrBbuGIFJYg9mRkWl8XSjoxD2VSeZDJ46RjYEy2MdNQNWxOr7/F/z je9D1DNFC6eOcrRrIMZOMlOO/DKxwjMqtLLmHx6sV/s41NO7kV75SiesCe6pJbXp GTkkjvgKZ1Z+m/UEUsMK7drlaKWkjYN3XTWvtEAYTiP9A39FrxfbgllFLnhvQ+5R gK80BJjjmotTct8iskzbWpeQQJj3zksCX159g+gTKusAhWDmoZqnIeklcvq9dMFY BT4l+LVW/VWBuWdljSmxT0lA5ZWeApLtrtU7vPlBHTf2OPkA5/14Ki/d83gbGWY6 Lp7TFQ== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bet2qvrx8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:40 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-7b952a966d7so29785187b3a.3 for ; Mon, 05 Jan 2026 05:23:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619419; x=1768224219; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=786iM0/9dnDx7bEo0CycJSZKYjOjPKU4LuDUpimk85w=; b=akQwRG37blzklcTsc9zXYpKBStHvU3LHtoVVjDrr6fgmd6uDJhWU+utRtkmfCh1Xhb ONAgW8Lm5FDEFRtir/xhBZKcOfqzSKuyVkaLuuXqkCv35POWXsmfCIMNkubWPJpztOon qWdgdKpcJZ34woJ0vYuOKB3NA4uWzr25pAT8g4NDRue2500c42xDD3VreFMlw2c6fz/7 VLdrWFAr87OHr9s68M6pGJDGRhC/6xn7vdcSWP7yh2oLYjUKUALYTw3PwljZCaMTDDC6 dPMIUUGj908+XeseOChqqiVCUm15Xq5G/byP2md5fHEQwotbkhiJH7Idctkkyew7HaJS al/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619419; x=1768224219; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=786iM0/9dnDx7bEo0CycJSZKYjOjPKU4LuDUpimk85w=; b=WBau+G/ofuF9GB3bbuaY4q6vrUojiBmmPDByAX4S/nwu/3SUbL4XBPjBh1EoROnEJJ heDOjPiwd8e/xyChVUU1fuYoMGr0N732puuJFOxK3iwNmRHKgx881ptAi591KXl6nrs5 Uxh3Lib4e5hDvkkhs+kP2icYVpGQHWNZGg0LuWkb5BU7WXGCbizPaQbedfjtbv4gftKu mvQxMZKIz4dVnb86kO0j31yKkkFmMg7leEPMfR6WuCjwwSgmvPh384eNCaq3nYUW3pyM PE4O63RsBa78cMrvm9whRTvnKNyGRdI610UVWT0owUUtjWBamEvdr0mXkuFKnqNhEIp3 ploA== X-Forwarded-Encrypted: i=1; AJvYcCWKfE3YZnf4viMhqtsNXG6LWGNVHY7zhLAs5lWa1hxfXnM6m6QmS7iQinlnOyamq02nin2IgvetVkg1nWY=@vger.kernel.org X-Gm-Message-State: AOJu0YxfPjEvtqfopxAO2knbv9DfitiiyXGpasaydPiwdEVjr+kz4UdP VYfcDFXw7fuBOLnIbt5rFlKGRk6UPp3xecxVFS1V0omCnZF+TjDHevqSYa0wFAjF7c23yGK92Iy 3Idk+9yQ6Wls88n78jMooJ76w/n9CZHgkBkQml7G7C66P5aCdUGtNiKKr73tJjeAqenE= X-Gm-Gg: AY/fxX6COxv5eWPJ/pFpVnkkyQvwcE/JHdFVHA4g42eVzsFjdROLrAqznWOaEfeiNe7 lsYZNja2IZXu+XrFa/szNme/bYKueps/zsqhXb6WlcpMyTkE+/DHjIim1TJvdhfFX0v0VChye+z PDYeFTa/quIDY0QsDX5cIJRLRFc7xtpjv1tEoqfWAHikaf9xC+mRqZq1jyf6z5Ubaq9uULOhR+t 3H336PbxPXddvnHHRWQTNr9Vf8LErsJbwKhT5vx7292NvuVN+ses68beC7vkXfbd5SoctMCbfN2 rXhtvNlVtfvZqS8c0vlFjoJ+MhJubBw4ATKPHOS1VMSMt1gsyDULzqprfHCtSoeWUodOWtswB+d 0v81X7pNuJvzAIrNOwxxKFVWW49c5hzOPj0RK X-Received: by 2002:a05:6a00:f99:b0:7e8:43f5:bd20 with SMTP id d2e1a72fcca58-7ff6735e9b3mr46962679b3a.53.1767619419203; Mon, 05 Jan 2026 05:23:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IEuVefsR2CDF2pOtSOxIMU7dFGADO+VJZnfcBcQcKgWwgx09OqvSjEAwaGj1ItkWmczTrEjYA== X-Received: by 2002:a05:6a00:f99:b0:7e8:43f5:bd20 with SMTP id d2e1a72fcca58-7ff6735e9b3mr46962645b3a.53.1767619418601; Mon, 05 Jan 2026 05:23:38 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:38 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:54 +0530 Subject: [PATCH v10 06/14] soc: qcom: mdtloader: Add PAS context aware qcom_mdt_pas_load() function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-6-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=5691; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=6F8K/zkrX0qeC580/xJB2YdjtX5REOOH8FpswaScz30=; b=AyWDM7qKzCG9bSdB4r9xf038RbNG4tvqzleWMIxbq1tZB45arvB9pdFxRl/uaA4t8SOpJBPQF VoBXliEgbDfApb8ifY20Ri3Y/rYdwxMyGf+4f89r+UvX8lizLNvnHm9 X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-GUID: EKSgMOTwhbhXKUYX5CF7P5SDNpjd9NP0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX5sUL1qewYOfg MFc57zde83kgKwyRhkHiUgEtcO1Py0WG4K9zDYqJTX02ELRAbWU66BgvJ/ubuqXoEHu0k2CJ0fF ySWTcwDtYnJOABoFPmk+XZ1jx/QmS6wpfPtbwVs79F2FiPzFNv+qjoTnboAy9/8HqlGpG5wsJVr Zw5x/jJgba8/5mVAbifodAKYdlA4LhFjr1baYkgeqVGplNeVvhp0VOXiuAgqpYze3/aeATkwkEJ rqUT54PWF96USRkpUuXzrDrTQ4wVRFvVHIWZnAZRSdVnoPJTGoDM5dd0T5tLzzJPbJ6Lk0aNctI 4S4vqczRGZiW9ryMT6b0pvvcpVGsvvtGvBU/bZIO7CdIWoxTEAG2VK/QB0nq6QtlI1Q100tPn4N I3lshp2Rsi7l/YO4OgS1evw/FAU0oP0BLNqV6aKFxbx9jrdkYCyuuxE6aWWOn04K1NSwMnQMLYo lFgk1yZ84opO05js6Vg== X-Authority-Analysis: v=2.4 cv=RKK+3oi+ c=1 sm=1 tr=0 ts=695bbb5c cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=lkfLrt0I0aiTJqoH1swA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-ORIG-GUID: EKSgMOTwhbhXKUYX5CF7P5SDNpjd9NP0 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 adultscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 Introduce a new PAS context-aware function, qcom_mdt_pas_load(), for remote processor drivers. This function utilizes the PAS context pointer returned from qcom_scm_pas_ctx_init() to perform firmware metadata verification and memory setup via SMC calls. The qcom_mdt_pas_load() and qcom_mdt_load() functions are largely similar, but the former is designed for clients using the PAS context-based data structure. Over time, all users of qcom_mdt_load() can be migrated to use qcom_mdt_pas_load() for consistency and improved abstraction. As the remoteproc PAS driver (qcom_q6v5_pas) has already adopted the PAS context-based approach, update it to use qcom_mdt_pas_load(). Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/remoteproc/qcom_q6v5_pas.c | 24 +++++------------------- drivers/soc/qcom/mdt_loader.c | 31 +++++++++++++++++++++++++++++++ include/linux/soc/qcom/mdt_loader.h | 10 ++++++++++ 3 files changed, 46 insertions(+), 19 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index bfcb65aed008..f746d2f39a1d 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -239,15 +239,9 @@ static int qcom_pas_load(struct rproc *rproc, const st= ruct firmware *fw) return ret; } =20 - ret =3D qcom_mdt_pas_init(pas->dev, pas->dtb_firmware, pas->dtb_firmware= _name, - pas->dtb_pas_id, pas->dtb_mem_phys, - pas->dtb_pas_ctx); - if (ret) - goto release_dtb_firmware; - - ret =3D qcom_mdt_load_no_init(pas->dev, pas->dtb_firmware, pas->dtb_firm= ware_name, - pas->dtb_mem_region, pas->dtb_mem_phys, - pas->dtb_mem_size, &pas->dtb_mem_reloc); + ret =3D qcom_mdt_pas_load(pas->dtb_pas_ctx, pas->dtb_firmware, + pas->dtb_firmware_name, pas->dtb_mem_region, + &pas->dtb_mem_reloc); if (ret) goto release_dtb_metadata; } @@ -256,8 +250,6 @@ static int qcom_pas_load(struct rproc *rproc, const str= uct firmware *fw) =20 release_dtb_metadata: qcom_scm_pas_metadata_release(pas->dtb_pas_ctx); - -release_dtb_firmware: release_firmware(pas->dtb_firmware); =20 return ret; @@ -305,14 +297,8 @@ static int qcom_pas_start(struct rproc *rproc) } } =20 - ret =3D qcom_mdt_pas_init(pas->dev, pas->firmware, rproc->firmware, pas->= pas_id, - pas->mem_phys, pas->pas_ctx); - if (ret) - goto disable_px_supply; - - ret =3D qcom_mdt_load_no_init(pas->dev, pas->firmware, rproc->firmware, - pas->mem_region, pas->mem_phys, pas->mem_size, - &pas->mem_reloc); + ret =3D qcom_mdt_pas_load(pas->pas_ctx, pas->firmware, rproc->firmware, + pas->mem_region, &pas->mem_reloc); if (ret) goto release_pas_metadata; =20 diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c index b125140100db..50c6a3c6b2a3 100644 --- a/drivers/soc/qcom/mdt_loader.c +++ b/drivers/soc/qcom/mdt_loader.c @@ -478,5 +478,36 @@ int qcom_mdt_load(struct device *dev, const struct fir= mware *fw, } EXPORT_SYMBOL_GPL(qcom_mdt_load); =20 +/** + * qcom_mdt_pas_load - Loads and authenticates the metadata of the firmware + * (typically contained in the .mdt file), followed by loading the actual + * firmware segments (e.g., .bXX files). Authentication of the segments do= ne + * by a separate call. + * + * The PAS context must be initialized using qcom_scm_pas_context_init() + * prior to invoking this function. + * + * @ctx: Pointer to the PAS (Peripheral Authentication Service) con= text + * @fw: Firmware object representing the .mdt file + * @firmware: Name of the firmware used to construct segment file names + * @mem_region: Memory region allocated for loading the firmware + * @reloc_base: Physical address adjusted after relocation + * + * Return: 0 on success or a negative error code on failure. + */ +int qcom_mdt_pas_load(struct qcom_scm_pas_context *ctx, const struct firmw= are *fw, + const char *firmware, void *mem_region, phys_addr_t *reloc_base) +{ + int ret; + + ret =3D qcom_mdt_pas_init(ctx->dev, fw, firmware, ctx->pas_id, ctx->mem_p= hys, ctx); + if (ret) + return ret; + + return qcom_mdt_load_no_init(ctx->dev, fw, firmware, mem_region, ctx->mem= _phys, + ctx->mem_size, reloc_base); +} +EXPORT_SYMBOL_GPL(qcom_mdt_pas_load); + MODULE_DESCRIPTION("Firmware parser for Qualcomm MDT format"); MODULE_LICENSE("GPL v2"); diff --git a/include/linux/soc/qcom/mdt_loader.h b/include/linux/soc/qcom/m= dt_loader.h index 07c278841816..7d57746fbbfa 100644 --- a/include/linux/soc/qcom/mdt_loader.h +++ b/include/linux/soc/qcom/mdt_loader.h @@ -23,6 +23,9 @@ int qcom_mdt_load(struct device *dev, const struct firmwa= re *fw, phys_addr_t mem_phys, size_t mem_size, phys_addr_t *reloc_base); =20 +int qcom_mdt_pas_load(struct qcom_scm_pas_context *ctx, const struct firmw= are *fw, + const char *firmware, void *mem_region, phys_addr_t *reloc_base); + int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw, const char *fw_name, void *mem_region, phys_addr_t mem_phys, size_t mem_size, @@ -52,6 +55,13 @@ static inline int qcom_mdt_load(struct device *dev, cons= t struct firmware *fw, return -ENODEV; } =20 +static inline int qcom_mdt_pas_load(struct qcom_scm_pas_context *ctx, + const struct firmware *fw, const char *firmware, + void *mem_region, phys_addr_t *reloc_base) +{ + return -ENODEV; +} + static inline int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw, const char *fw_name, void *mem_region, --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 2BB4333D4EB for ; Mon, 5 Jan 2026 13:23:44 +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=1767619426; cv=none; b=k0j/kkyNnxEvHheSL/3/zUOliF99/0pAii2Rnqjv5pNqG3WQMJlBYUmWpBqd82FBgF7JN03sfZgZP3lUnc5A3bWudWZa/DyySbpsYOfNr1kQ/Th+kzqQHH8Oa5xnBuaY0KK25IvFvtVOPb9LaKfV9PUwnimfiwwNS2UtnZGhkAg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619426; c=relaxed/simple; bh=L0f1qWRMFAeXFyR0rIUg5ggvHEBiDcRfJhIUkFhR0Vc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HAVHYGOReYNHuFYiKvGHvayFnGmA8SWt0rbIu5au6DFKNVRBiRbfjRrFmqI3zX9F2FTuo4H/70vcPPLk6ylcjTWFEb5sm5pxU9Br3pbBmZ6INuSxxaaImDP4bqVrxBdFUznB78gciSsrfyPsuKSqKhTdfLV+8R05eXxXjA2pFQs= 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=E+EtdG+q; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Xu6+4JwC; 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="E+EtdG+q"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Xu6+4JwC" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6058LB6A1071698 for ; Mon, 5 Jan 2026 13:23:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= gVFFkdNsP5gHrb05VtnrWWMCJqLpes7QIYPNx6a0/HE=; b=E+EtdG+qWT69sJUa tOB1TWR9vkJbKZKVgrQQ2YUNdnGdX4ORL44C+eGHCi2b0tPiHGhnYp7/uJfsQXm7 c0PwBPbfLaYlIp2ixD1m3iw1iJfDvKwa3qu4lDHsBCy+ZC1XspayCrzX9/3Cqv5T Dsd68i7Zd15RftScTaE2vyeQrImZtLJ98sJunoAEMV5jmwlT9xZDZV/e2LxdThnF 0Fy8ze54TaZT/sbhQftGAhO/M1uiwA1U61LD+4TXlX4Fen+vZ8g6VwXQ1PWx8r9p qrDDv8OK52Rl9KU0i9Y4wOHq4HFV2x63ohKwATi57+EGBEzUj/foU/ffKoUh5kkH 6KER1w== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bev9hch7s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:44 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-29f25e494c2so21769175ad.0 for ; Mon, 05 Jan 2026 05:23:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619423; x=1768224223; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=gVFFkdNsP5gHrb05VtnrWWMCJqLpes7QIYPNx6a0/HE=; b=Xu6+4JwCT3xTRaKM+t6Goiji1NvkPqYUws3IWuMD09wS1m6TyhXO++8T0Hptdz5RkL +o6RzjbnB0yvkOefvZCcOjjzb62nxE7g66OZYq9YKEl/yeDJZ89+msMEL2cbm/hKbO6R xg94mbKQzvkfaQcyF51voXliahpOHVdeCMWSO/lKSoZJgVuo36/hMSQmwzv8iF/zyGXY 63+/Z6PMV6sAFVlebnaDSDInyN1mBGvwzq5GuJjMuz540nrmaopcc5Q25/erJm/FpYF6 4W7ztF82LCXlRNn0BiTxPGgYGs4okzL+d7gXQ6zrFyqIzTUuM97vFQvPUEA8kX9OH16b vLag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619423; x=1768224223; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=gVFFkdNsP5gHrb05VtnrWWMCJqLpes7QIYPNx6a0/HE=; b=JDmUS3kp7jP////KFQAtXnMISKCGqozGpnFnDiT/0TzZgLIfxeSGKY80KRvR1lo0EN Joy3Yjd9/T6LvVnhKLrsKodAf0KreqMnafJqZcoBmZ1dMX8RM6rCedZdp8PRIYjFSgws h3Za27BWkXuQjzMilWQQT4nfF8crTh4xIBHGAkpcBXcrUi6jOvERKoHjeZlzSkLDv7n7 syvZBiQHibK91z/052R/mMlO6VLzYgWr1m41COIe/HnFoFUFR9bKIZ6ZGVpugAcHSeC3 tDS+T3/hTOzqyOS3ZVFiD7uLWpVTaBBv+7Gk41CydB6byaKM6MTANOb7/3C+VmV5Swdr z2rg== X-Forwarded-Encrypted: i=1; AJvYcCW+6hWbQ8VrK0nkz+GYWLJMGycGCiP8WHRz73zpFw/dNTS4KMxXNnBPZws3HKptHJv0prJ/JJ3RJWPsw/Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yz13oF/BPZWCeXBUwih0dX7tHIUsqjeX9v7qP+kLDP2lY1y3fqG u4Swadxkt4m8CiKJk0FQQC26PaXCwQLoUu4UOP26WkDwLA+Td8bUnu5yMHxFxapF7mTeb8LJZZT Ej9pJVaTNEwUa0gVE2p9Km9XACd/hfl+mPVk9tBw473K2OPz5SHGO1JGVVZwcW9Bk1SY= X-Gm-Gg: AY/fxX7X3ohNnAzZXD0IAyYNA7gjQpfYNsgaFs4lHUlFjGV1wvNowTGWyqLtJHF8uQ6 I54wriOzBTh3xvmO4JBESzyEexdRoZCNu9tJSX0fFVVGxvCb6Wh3iut/pdNE0Vx+OD/FLmKR4KM 1rHhvW8zNjpepv04sAIEFp9R0Sd9hWppfk334GWdgJfBsj/QyHocamKxGNSlKoeDqfMVV5gkmkt jtrGZtPU3CHutFws/KdPF/vGr22cmcFn6cQ6BWzVabptyD97zo5Rc0PXkhc7pv9csEC5kUrFUoY bqvi+KqzDeDN5wySTJsXORCg89Vrg5UQrH7Cc/LtQP/7tB5PWyoU/F0v1l8UBLynUIcPFqLIaYi dlMLYuEsFextUWotNFYzTyixUiok5iu225wOb X-Received: by 2002:a17:902:d54c:b0:2a1:3769:1d02 with SMTP id d9443c01a7336-2a3c097b89emr75230655ad.12.1767619423353; Mon, 05 Jan 2026 05:23:43 -0800 (PST) X-Google-Smtp-Source: AGHT+IESxIUEbWDZCgLHhKsCl+niSuEBPAq/eJ0HXAs0HRi98Y74GnLxyBSNkVetg60DtIYkzvYk1A== X-Received: by 2002:a17:902:d54c:b0:2a1:3769:1d02 with SMTP id d9443c01a7336-2a3c097b89emr75230335ad.12.1767619422728; Mon, 05 Jan 2026 05:23:42 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:42 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:55 +0530 Subject: [PATCH v10 07/14] soc: qcom: mdtloader: Remove qcom_mdt_pas_init() from exported symbols Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-7-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=4020; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=L0f1qWRMFAeXFyR0rIUg5ggvHEBiDcRfJhIUkFhR0Vc=; b=UWtwg1PkJV8qhyhGt8CHS53ydxNgM2IbTvUJaSWNggjthqxVIRhHX9u/Y6Jk9EHbwqaYu7g7a iCnMsubFrLsCkdd22Ihfj7J0IsjtJIex4XljP9x9rQ0NtbvaBuwp0b9 X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX9YAeoWFs7SGh 9pLw0xJC/sWhLJlXt0GFWelOUoyVyZX68JCcLUFMpV1DFcUNJJ1Z+4uPnr5ndmlkCoW8O3qHq5v zs8BA6N3RCQB6LAVtyaVTYSujJDLNLtxTzhsP7p44xe/CiWyzWQCtHVUK1oY0BP9d33Wc/Epwri JS77Uoa8ZXPF+83Xp/g1I90RwgwKMrXOyRfgoza4OyKaAXahOf6xdh90yJnhlrJDl59cjLV9zW4 VxCssoG5R64GO7X1G/9TsWBVWbOLMUCHUHp0DkOHEnCceilPGBJJm2++FbkvL2gLP59iW4hfFVm qV0ZlO4MELnKXfKTnWNEcEfKVY6cMBZhghfqyIko+FrCJbF9y85LUaAOxHqhMfOqcltIU2R4iYD my7h726p7blfGngUMjgTV/PJrfpPdfJxwRVXPZYIaXYvMHm4eNB48lT1XMZtSv5HtZOxDDWWrV8 hNi3TZsk0FxIHbvIqFg== X-Proofpoint-GUID: E-nWAdskaj2vifqIJxTS34kjI4mRfnos X-Authority-Analysis: v=2.4 cv=RrbI7SmK c=1 sm=1 tr=0 ts=695bbb60 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=Z4Sw7GGoVt5sTUwIiKwA:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: E-nWAdskaj2vifqIJxTS34kjI4mRfnos 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 qcom_mdt_pas_init() was previously used only by the remoteproc driver (drivers/remoteproc/qcom_q6v5_pas.c). Since that driver has now transitioned to using PAS context-based qcom_mdt_pas_load() function, making qcom_mdt_pas_init() obsolete for external use. Removes qcom_mdt_pas_init() from the list of exported symbols and make it static to limit its scope to internal use within mdtloader. Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/soc/qcom/mdt_loader.c | 22 +++++----------------- include/linux/soc/qcom/mdt_loader.h | 10 ---------- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c index 50c6a3c6b2a3..c004d444d698 100644 --- a/drivers/soc/qcom/mdt_loader.c +++ b/drivers/soc/qcom/mdt_loader.c @@ -227,20 +227,9 @@ void *qcom_mdt_read_metadata(const struct firmware *fw= , size_t *data_len, } EXPORT_SYMBOL_GPL(qcom_mdt_read_metadata); =20 -/** - * qcom_mdt_pas_init() - initialize PAS region for firmware loading - * @dev: device handle to associate resources with - * @fw: firmware object for the mdt file - * @fw_name: name of the firmware, for construction of segment file names - * @pas_id: PAS identifier - * @mem_phys: physical address of allocated memory region - * @ctx: PAS context, ctx->metadata to be released by caller - * - * Returns 0 on success, negative errno otherwise. - */ -int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw, - const char *fw_name, int pas_id, phys_addr_t mem_phys, - struct qcom_scm_pas_context *ctx) +static int __qcom_mdt_pas_init(struct device *dev, const struct firmware *= fw, + const char *fw_name, int pas_id, phys_addr_t mem_phys, + struct qcom_scm_pas_context *ctx) { const struct elf32_phdr *phdrs; const struct elf32_phdr *phdr; @@ -302,7 +291,6 @@ int qcom_mdt_pas_init(struct device *dev, const struct = firmware *fw, out: return ret; } -EXPORT_SYMBOL_GPL(qcom_mdt_pas_init); =20 static bool qcom_mdt_bins_are_split(const struct firmware *fw) { @@ -469,7 +457,7 @@ int qcom_mdt_load(struct device *dev, const struct firm= ware *fw, { int ret; =20 - ret =3D qcom_mdt_pas_init(dev, fw, fw_name, pas_id, mem_phys, NULL); + ret =3D __qcom_mdt_pas_init(dev, fw, fw_name, pas_id, mem_phys, NULL); if (ret) return ret; =20 @@ -500,7 +488,7 @@ int qcom_mdt_pas_load(struct qcom_scm_pas_context *ctx,= const struct firmware *f { int ret; =20 - ret =3D qcom_mdt_pas_init(ctx->dev, fw, firmware, ctx->pas_id, ctx->mem_p= hys, ctx); + ret =3D __qcom_mdt_pas_init(ctx->dev, fw, firmware, ctx->pas_id, ctx->mem= _phys, ctx); if (ret) return ret; =20 diff --git a/include/linux/soc/qcom/mdt_loader.h b/include/linux/soc/qcom/m= dt_loader.h index 7d57746fbbfa..82372e0db0a1 100644 --- a/include/linux/soc/qcom/mdt_loader.h +++ b/include/linux/soc/qcom/mdt_loader.h @@ -15,9 +15,6 @@ struct qcom_scm_pas_context; #if IS_ENABLED(CONFIG_QCOM_MDT_LOADER) =20 ssize_t qcom_mdt_get_size(const struct firmware *fw); -int qcom_mdt_pas_init(struct device *dev, const struct firmware *fw, - const char *fw_name, int pas_id, phys_addr_t mem_phys, - struct qcom_scm_pas_context *pas_ctx); int qcom_mdt_load(struct device *dev, const struct firmware *fw, const char *fw_name, int pas_id, void *mem_region, phys_addr_t mem_phys, size_t mem_size, @@ -40,13 +37,6 @@ static inline ssize_t qcom_mdt_get_size(const struct fir= mware *fw) return -ENODEV; } =20 -static inline int qcom_mdt_pas_init(struct device *dev, const struct firmw= are *fw, - const char *fw_name, int pas_id, phys_addr_t mem_phys, - struct qcom_scm_pas_context *pas_ctx) -{ - return -ENODEV; -} - static inline int qcom_mdt_load(struct device *dev, const struct firmware = *fw, const char *fw_name, int pas_id, void *mem_region, phys_addr_t mem_phys, --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 42F9F33D6C8 for ; Mon, 5 Jan 2026 13:23:49 +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=1767619430; cv=none; b=BQlmiD9njInbhHwt4Mty8TsaQscJtEOx9AZO4eft2Qm5h9PjxlkFLoSgwV4SKNgYLAfN7FKNM+gSsNqRAVZBR3KH8heTX9QA/uslhQR3xLQzJw/1XwLYo8U2hYwncUP35I3QtNIIQpG9VOOZU1rZQ+H0o7SgeBsbEHYYsZ73T0I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619430; c=relaxed/simple; bh=vV2i1NyTT5LTxFd6mck1Wvy9FFgG40KJB1WlVoCg06A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dNhGIMngt8lk1YhCAqDvvb3hbL56PY+eLDmAN6NYVy+UXd8Y5yzoIKjXQtCZ8Aymqh0x7sXe/9NdgoruAw2oNTMkTKpRK+RXpRd65+VZdhcaghn3oZYqpiO2LwWIMRiNWJijPxS+0RtwBNB8Ksf05JbYA6yZ5sOq93yHAfHEggE= 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=bwC7XPXq; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gkolcsWc; 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="bwC7XPXq"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gkolcsWc" 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 6059clId610463 for ; Mon, 5 Jan 2026 13:23:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= rArl0MvZfgZ8hbnXrCbwTRUGC/3eEh7sF4jo2FZZGuY=; b=bwC7XPXqIRi3GLku 20lfZSOiPv/MorNYx93Ja+QScbXJVLjZ2iRiv2NZm41Kr4g+PFlhmpD3cOBiz2bk qloqblsbjtgXxEz+u4t7+ukTKbVNoc0O5/XMWU8JUzr4Kz/dku7lMb3pmnLcRelW SmmDjNr/Q3ZpawU0TOfwGeCLqbo9gO8k/eT8+PR/cAhsqLC05K6smB+hi7Yrs1gT FefL+nTvzsfFV0xdI2hxFBImLSJimqhaOfsWNo2xQyNcqMqPcXeGH/5bl+yR2Iy+ cXlENMVlXN3fA/uSl2jrSTcbbkzlmVOcq2wbI6BZdJmGPKXVq+kWrKH6yZm0T+g/ egks2Q== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bgaus0hjy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:48 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7aa148105a2so13214756b3a.1 for ; Mon, 05 Jan 2026 05:23:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619428; x=1768224228; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rArl0MvZfgZ8hbnXrCbwTRUGC/3eEh7sF4jo2FZZGuY=; b=gkolcsWcdBfKfdqc+FJlNHqbq+MfCIcCVy99T0JgNzhpvUHEPnD7pXnBYowfb7uMF7 1s9Sb1cgBvv1q1eQJG9RY/QmAjNR8qrhxfxFodm4GRIG/+E7pS5MuISq1m/SiqEZRC6f HzHT66Ziw21f7reLCFSodtTLJ//Q5XwLTkbE3BENBDyalyc54mCrtA7xOZ1IxcxOs4q7 yE8jPlhxYJQCWgBNnu7p7btxt+OgUTjgMI5WNjPnWGc9pJwAcqnD4TOsMhYFQFib0cAc klEXI7R+Z00pwr+WkuEEGIpXKODhetpZ3giqq99RoByf89jnbIyg4y1nqZPXSkYLJjNB N+1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619428; x=1768224228; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rArl0MvZfgZ8hbnXrCbwTRUGC/3eEh7sF4jo2FZZGuY=; b=s9yl63b2ojQIg40AC66krbaRKoG7BZhhDFihhGeysbyr6MLOcBqBqm8R9gCM6Wj6uT +JN86GnEpaH1G1e0FSA2GYliP5UUrLjsAP69hHLpM0Rrly3tGi1dcEu3urtbpuoRKuwT mnvne6YDxUDgBQ/6hvtWS87c9H/yANh/ZyAqS9P+r/wqbMhCiNnRIYt+a/lr/hKhSa9K 9S/vMfLlVYB1FV4cuE8QezZbd/2xiCLS2OBwEW9I2xNO9x+aqK4btaftbiHWZTeWDqPC cUauWFgEOz2uj+Y3B2vzaHw/Q3iOTVhZbYD78O5hxIhO5onplmr5j4DaGeAKzwwDT+po HKnQ== X-Forwarded-Encrypted: i=1; AJvYcCVpc3ICQI8YInV8Jzsrq17dPClJzx15LUa5jG1P9e2PG8eN4UiCtZQVgf9m9LOFipChldgvJEfAKiv4ONw=@vger.kernel.org X-Gm-Message-State: AOJu0Yz35hdSrXy0G5LDJpidqo6jDthAtGTGV9v6omGCLPea18LkJ/O1 pjs3oVtzo6/3xCx8Ufr0MVmuPzsqZOOErh95uErf6g1vsOOaVIB+COvShNv0SGX+pilCnMhAtTf vbCBArLetH5pYw8dbLp550X2x8RG2I1DvlBk41t7ZIHTXCasGom3lv871kzSr/za7XGk= X-Gm-Gg: AY/fxX5gR4acSsl5MCR2NZstnLcuTGdHmYJ/ziu0AaWEHQefTbiFTwEDLSwIDhYCJBS lMCBFxXA7LblhY0AGZjJOvPvmZUx5uLywW/zEpwBByGktNBx7jxgm6TRxmpZeIaxVEmaT2Vu4Um OSJfWiECaCh6CQf3bj4WxIetiTg0oYV8mEr6PFxrci5SHsYoA4yvmX2nek3RWMXqR2BPJ9jykha WJbkrECH7Huye3FpWvRf4XLvWthbVjCD+D49I6ByMzQlMEprk6yNONbtmDf/VWfrsajk/NeQOOm ut9S+80Y2lnENHmnNKjNQhzchsqVlxcVxOAvHuJuqTOeuOJkU0m0aWTLFJ57X1GLoZEYLCkO1Pm xUOZ1SREFaKN9EBcEJvYQw3CCtba8F+eM78do X-Received: by 2002:a05:6a00:1f06:b0:781:261b:7524 with SMTP id d2e1a72fcca58-7ff64ed14d4mr41477243b3a.14.1767619427495; Mon, 05 Jan 2026 05:23:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IF07VP7DR2q2g8nZGqguA7SimtIPegjXyDxGOTucGGQKUAbojeYUp868qyYH5VeepK8vfwb6A== X-Received: by 2002:a05:6a00:1f06:b0:781:261b:7524 with SMTP id d2e1a72fcca58-7ff64ed14d4mr41477213b3a.14.1767619426874; Mon, 05 Jan 2026 05:23:46 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:46 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:56 +0530 Subject: [PATCH v10 08/14] firmware: qcom_scm: Add a prep version of auth_and_reset function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-8-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=4371; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=vV2i1NyTT5LTxFd6mck1Wvy9FFgG40KJB1WlVoCg06A=; b=2lxtiiaAsNEmn8ALiODKr2MB3dwuVPqx6IAzJm9audfD8MMdWvEHWJK6Vdfaltu1imPNNBtbV o3OFtp9MxGCDwiAPxEGiHUr7aNJvHTjc1MFUZsjG1lMYy+PqrHIwpGx X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-ORIG-GUID: Df2cyHWIGO1i43WB82JheZ1TJRqcypxZ X-Authority-Analysis: v=2.4 cv=DP6CIiNb c=1 sm=1 tr=0 ts=695bbb64 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=kRiLafTeVKqDyNwm7Q0A:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: Df2cyHWIGO1i43WB82JheZ1TJRqcypxZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX1cYqfjzq88Zd qMNqcFZBlqFU7nhyMIocSMNmPIXU3gv9Ma4OpJvvLWpDktQg57QOpF49fpcUooUr0UTrkj6fUhP YC/cSWtdAYRUO/HddJbP/7EeaYlYoGd9acTXCzfOGXyPlGcfrpq9n1EWXMJCq3vLoo3uN5USQ/X qgzCxfwyz9foaC4D8OEqgT0ROoAvC/6oVQtag6yeDNsnHoyGv+kbcLJl17gWjx3EgyrXq2bLkJw NC7eYyvkoh5KOSPQUb6vFdroRWbeKhsQm7nyKSzBCDbaiDb9NdNPosj7WPUcVt6FfF5lhEl1RBR RMz8jAm77uYvDq05LhXOdaDmkm/gsrbYWYZka7mdSZgumYBmJhKw2PrqWxzVYo3//fOqq3bY6kv LUUVG27ZRvqoK+Oc2jtoBGzaFfvZzYKvHQOthNPs8pIGG9DkTU0V/30CT/WFI7GB4KaFGZpJPyg lLEVZuRXyTiSSmJI87A== 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 impostorscore=0 malwarescore=0 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 For memory passed to TrustZone (TZ), it must either be part of a pool registered with TZ or explicitly registered via SHMbridge SMC calls. When Gunyah hypervisor is present, PAS SMC calls from Linux running at EL1 are trapped by Gunyah running @ EL2, which handles SHMbridge creation for both metadata and remoteproc carveout memory before invoking the calls to TZ. On SoCs running with a non-Gunyah-based hypervisor, Linux must take responsibility for creating the SHM bridge before invoking PAS SMC calls. For the auth_and_reset() call, the remoteproc carveout memory must first be registered with TZ via a SHMbridge SMC call and once authentication and reset are complete, the SHMbridge memory can be deregistered. Introduce qcom_scm_pas_prepare_and_auth_reset(), which sets up the SHM bridge over the remoteproc carveout memory when Linux operates at EL2. This behavior is indicated by a new field added to the PAS context data structure. The function then invokes the auth_and_reset SMC call. Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 47 ++++++++++++++++++++++++++++++= ++++ include/linux/firmware/qcom/qcom_scm.h | 2 ++ 2 files changed, 49 insertions(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index fcb7620b83a4..de71536ef591 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -765,6 +765,53 @@ int qcom_scm_pas_auth_and_reset(u32 pas_id) } EXPORT_SYMBOL_GPL(qcom_scm_pas_auth_and_reset); =20 +/** + * qcom_scm_pas_prepare_and_auth_reset() - Prepare, authenticate, and rese= t the + * remote processor + * + * @ctx: Context saved during call to qcom_scm_pas_context_init() + * + * This function performs the necessary steps to prepare a PAS subsystem, + * authenticate it using the provided metadata, and initiate a reset seque= nce. + * + * It should be used when Linux is in control setting up the IOMMU hardware + * for remote subsystem during secure firmware loading processes. The prep= aration + * step sets up a shmbridge over the firmware memory before TrustZone acce= sses the + * firmware memory region for authentication. The authentication step veri= fies + * the integrity and authenticity of the firmware or configuration using s= ecure + * metadata. Finally, the reset step ensures the subsystem starts in a cle= an and + * sane state. + * + * Return: 0 on success, negative errno on failure. + */ +int qcom_scm_pas_prepare_and_auth_reset(struct qcom_scm_pas_context *ctx) +{ + u64 handle; + int ret; + + /* + * When Linux running @ EL1, Gunyah hypervisor running @ EL2 traps the + * auth_and_reset call and create an shmbridge on the remote subsystem + * memory region and then invokes a call to TrustZone to authenticate. + */ + if (!ctx->use_tzmem) + return qcom_scm_pas_auth_and_reset(ctx->pas_id); + + /* + * When Linux runs @ EL2 Linux must create the shmbridge itself and then + * subsequently call TrustZone for authenticate and reset. + */ + ret =3D qcom_tzmem_shm_bridge_create(ctx->mem_phys, ctx->mem_size, &handl= e); + if (ret) + return ret; + + ret =3D qcom_scm_pas_auth_and_reset(ctx->pas_id); + qcom_tzmem_shm_bridge_delete(handle); + + return ret; +} +EXPORT_SYMBOL_GPL(qcom_scm_pas_prepare_and_auth_reset); + /** * qcom_scm_pas_shutdown() - Shut down the remote processor * @pas_id: peripheral authentication service id diff --git a/include/linux/firmware/qcom/qcom_scm.h b/include/linux/firmwar= e/qcom/qcom_scm.h index ad69b51fe6fc..d6d83888bb75 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -74,6 +74,7 @@ struct qcom_scm_pas_context { void *ptr; dma_addr_t phys; ssize_t size; + bool use_tzmem; }; =20 struct qcom_scm_pas_context *devm_qcom_scm_pas_context_alloc(struct device= *dev, @@ -87,6 +88,7 @@ int qcom_scm_pas_mem_setup(u32 pas_id, phys_addr_t addr, = phys_addr_t size); int qcom_scm_pas_auth_and_reset(u32 pas_id); int qcom_scm_pas_shutdown(u32 pas_id); bool qcom_scm_pas_supported(u32 pas_id); +int qcom_scm_pas_prepare_and_auth_reset(struct qcom_scm_pas_context *ctx); =20 int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val); int qcom_scm_io_writel(phys_addr_t addr, unsigned int val); --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 A622733DEC8 for ; Mon, 5 Jan 2026 13:23:53 +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=1767619435; cv=none; b=pQUsbo0esbxRIvtgXR76ba8uqqlOX2ZMzSOPqeFY5OTZLTueLbf8kPMgMzxuSrSnSfRtNY4ncHhqRq2szIyJAmHOhp7+ySVuNeHvgMkP5WB80JP3As3aEl08/linSd1n+iqK9gnT3iETCH+63QDLzt4ByqWrl5/YtDJ/kOv/h+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619435; c=relaxed/simple; bh=2DBhRl0IrbEGORjCMRdcnMv1YwAZ0EWa5bKeuKqAi0Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=na97O3kQtpyYLbIVgni6Ue8/FrDIaVNO5oTgbaIHhfwnQjZ4qLA0NWVkw5FELwsAwiOxPtdlxAn+PCVTl7to11WYRRcWwJzIHZx0yrENI4xHFN9/MUg73tUXunOsW/zXivD15h9FWIiga+WGm7FtfQSnWRbxNRkoFa0lxfq+z04= 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=YQghvKkv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cdM9YC2G; 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="YQghvKkv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cdM9YC2G" 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 6058JcoU3464867 for ; Mon, 5 Jan 2026 13:23:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= cKCQ9aHSsPPhuwQM80Usl9MqjI0vkKaSKtbQU2Gl8os=; b=YQghvKkvvjzLzupo 9LkSb8TKXS8QqUK41jbJRGJ+Cqnkf2SYZc61XyCiShX9Cc/I3iR0xh1Ye3Y4DCVM Pk4Q9YLrqdQyKXDejJnkv7b+dbWIgYY/ztB85H4lbacyWE+r8kaRBSYX+Uyb8R6A zOsO/OI0q3NcORekiW2YN3rqqfJ9NtD/jk5/3KuY4l4SDEYrGZiT3I3dLDfp+2iD CG9u/c2vvMCtMGEFaf0/1AjQDxDd7dmfE4Jw1zmZngzZibK9LIVmR/DOQpuk937G mxqMSWVQdDwrey9IrvOlL5fLYlZAqrUhktbaOH+qcJLTDjOVNq/EJS4yknGeRTto rFRvSw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bet2qvry0-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:53 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7b4933bc4aeso13512020b3a.2 for ; Mon, 05 Jan 2026 05:23:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619432; x=1768224232; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=cKCQ9aHSsPPhuwQM80Usl9MqjI0vkKaSKtbQU2Gl8os=; b=cdM9YC2GopY4v/vStpJFtzQnlM52tICTIW4DkFhTf1lLdjWSBEUd1DvHMCl4zbzwLm HYwq0g8ajOQW7hBFMtcV92u0noosD9wtne0PHezeIj3vn1LLTIGyB99XiTHsCOg9ucDO o6RvJcg3p84iE7zJ1Iaf1zyT/B56ijoZs9mxwExva+r+leQ6blpn6uaXEQz62YRtWBzl DyhIETYRQZRKmWhKaa+QSv4QthHlCsBDhp/2uF4bBwwNyT+w9YzN6T6FLbmKOpbrPb33 BKe7xHiqzpScQX7lce8MWDXfeyRpANLastTG03dKqDJXM4f9KJMTG15aMgCCMugv3D4v 0/IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619432; x=1768224232; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=cKCQ9aHSsPPhuwQM80Usl9MqjI0vkKaSKtbQU2Gl8os=; b=Lx13q24CUeBD/Dkzp43tyTss6LUmG6P0iEOnj//rASDg2uo+ec9LSvf4SnpZ06N+Zs gfPTg86eI+7Gh9kOyySB3mCKLCwbL0vbENh+sGpvXh65VEHsuIOqQIl60u3fjLOaWdG4 iQda3JlGmJe3lqU45xRsbG48+oaEvFvvBihdiSuOV3gUcrzlehHw/irKHfMg7gAuvVek M1OfjETg/JOKWw93WmuKeeRMW9PKfbKc5ws7AvYbNryuvKmm0ZpT6O3YAARU5/UxUpXI Lg7qUPN6p+9MOqRltOEzJYsALibJ0cZlFSuLnhdlkaG9z4jCwY6o9HEbhz4P50tjqQCn 657Q== X-Forwarded-Encrypted: i=1; AJvYcCUJVeAIk2wxH2fegaUEGavkvGrTOamFRfKvrlKKpNuemCb/ClZMNf8pwJ7XOZrEYg/1obru+PSrZ8lGR5A=@vger.kernel.org X-Gm-Message-State: AOJu0Ywb9UxRzKwwrMRrZMhdo1MjZNx6ZF+mDlX6vMiTdd/xLCpJCBfd 5SNEr6NeAndiE1ekkMf98Dm0591Iz/qcqpp8gHSDEFZlcADj35VI76yxe701JItUpUXVIhB7nsH GbjCSMB3EoqZk3xZMQ90v7jjOEd/LycdeAbd9HTmE0Tkn64x9oIIHkjEAZg2mquOIzL0= X-Gm-Gg: AY/fxX4ogTsLpxwc1KY5xu+pCbYzodC73Go3x68zMFcVg0CbfOC/6qihtmJq4vk8FBc wkVZlZLXbIylyJhpxKq+9F8t8gVLFzYDDEDTzyKkjHiFCqn1hH417thnFEjm+O91oSoM1Lh4kdT 3TCC4RPSQ2XAzxJCyT7Xs0ynluXZY3QFaQVL3yGc0kWxFkx7cenQkx1ofP8zmb1M85hfeQekWUC 9ui3h7bRvFyfSGzhoik/3YLN3wRhWJoBf6wM1EKqlsKwyAWlEIk4PfQ1dbdmHSjdzJCQGxz121r P9Jfg4tdR3KbjZ8zN9yz+hRcgJ/411GuhXQRCoG2GijGLSZ0GPdJXlDKAHDBn4R5W37xfwI61iX upUBIkFL+Kc5/EuLw8APue+OSi1+hNr6VQUh3 X-Received: by 2002:a05:6a00:3286:b0:7ee:f5d7:cd9a with SMTP id d2e1a72fcca58-7ff6725628cmr36269409b3a.46.1767619432206; Mon, 05 Jan 2026 05:23:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IE2XG3XjN5QeNn1sM3zpPqePFCmYcJHIrLCz+qQAstP8Q2dqozx8LgASDzhYYNzS05njEATcA== X-Received: by 2002:a05:6a00:3286:b0:7ee:f5d7:cd9a with SMTP id d2e1a72fcca58-7ff6725628cmr36269384b3a.46.1767619431344; Mon, 05 Jan 2026 05:23:51 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:51 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:57 +0530 Subject: [PATCH v10 09/14] firmware: qcom_scm: Refactor qcom_scm_pas_init_image() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-9-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Bryan O'Donoghue , Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=3096; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=2DBhRl0IrbEGORjCMRdcnMv1YwAZ0EWa5bKeuKqAi0Y=; b=Lyd/uSQ6N0rBu5eNzSv3yVQuuAHRJmikgJvMdfs4glMVU9KhN8K6xQu0RIj4ymj7pkx7/V4L8 R65ryurv6zbCCumT5DbWMcX71/4ATIOOVgwIcjv8/tbLRapWzlRAdbH X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-GUID: f2Ajupa47m_bYqyo73hIldOiA1y36eRE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfXzhrvCfC+mq0e t5I3epZxKC+9ftsbQAECyUMCAhRGVIysu065DzjStdsXO0J0oVV8uXzvPjlP3Xf3yBbf1rOxh48 u9BmggasKJlCH2jfJ121RZbLDgoL8q3oV4Df4pYvuCLwwkAGtKTtJZnQbVYC6RC+tRsH9H37TD2 T6Mi1h9kC6U23AvVu9mipPwthVrKOFMHqiVGMp/jeUE9ybhKt1DtHNIjdXTfquYeaXsT1GETy5/ SB71xQd6BhrSaykgVjy0URkLAGHZS36fwXfCScfvDLOiTDnbx4JvdYPppoMwmzdvBvupVi/MeRM CsboxauBJ1Sm04iN7bw3/KXMJb65JJ8rCymw8t2SKnLeEY2m54dhVwDNKoDYuIp14VYzw8EwHas oK8BGZZS26ByFNoLOQ5+dB1vGBAEFm5FXCUSD61YiqN44BzKagOV7qV5a4p16//H+Jc8uKFVPol cMCbgEQ/Ps3otpZ6PVg== X-Authority-Analysis: v=2.4 cv=RKK+3oi+ c=1 sm=1 tr=0 ts=695bbb69 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=EGCBOWN0xxkO3F07DQYA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: f2Ajupa47m_bYqyo73hIldOiA1y36eRE 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 bulkscore=0 adultscore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 Refactor qcom_scm_pas_init_image() by moving the memory allocation, copy, and free operations to a higher-level function, and isolate the actual SMC call in a separate function. The main intention is to allow flexibility for different allocators and to respect any constraints that the allocator API may impose before invoking the actual SCM function. Reviewed-by: Bryan O'Donoghue Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 58 +++++++++++++++++++++++-------------= ---- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index de71536ef591..75a57fbea74b 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -592,6 +592,37 @@ struct qcom_scm_pas_context *devm_qcom_scm_pas_context= _alloc(struct device *dev, } EXPORT_SYMBOL_GPL(devm_qcom_scm_pas_context_alloc); =20 +static int __qcom_scm_pas_init_image(u32 pas_id, dma_addr_t mdata_phys, + struct qcom_scm_res *res) +{ + struct qcom_scm_desc desc =3D { + .svc =3D QCOM_SCM_SVC_PIL, + .cmd =3D QCOM_SCM_PIL_PAS_INIT_IMAGE, + .arginfo =3D QCOM_SCM_ARGS(2, QCOM_SCM_VAL, QCOM_SCM_RW), + .args[0] =3D pas_id, + .owner =3D ARM_SMCCC_OWNER_SIP, + }; + int ret; + + ret =3D qcom_scm_clk_enable(); + if (ret) + return ret; + + ret =3D qcom_scm_bw_enable(); + if (ret) + goto disable_clk; + + desc.args[1] =3D mdata_phys; + + ret =3D qcom_scm_call(__scm->dev, &desc, res); + qcom_scm_bw_disable(); + +disable_clk: + qcom_scm_clk_disable(); + + return ret; +} + /** * qcom_scm_pas_init_image() - Initialize peripheral authentication service * state machine for a given peripheral, using the @@ -612,17 +643,10 @@ EXPORT_SYMBOL_GPL(devm_qcom_scm_pas_context_alloc); int qcom_scm_pas_init_image(u32 pas_id, const void *metadata, size_t size, struct qcom_scm_pas_context *ctx) { + struct qcom_scm_res res; dma_addr_t mdata_phys; void *mdata_buf; int ret; - struct qcom_scm_desc desc =3D { - .svc =3D QCOM_SCM_SVC_PIL, - .cmd =3D QCOM_SCM_PIL_PAS_INIT_IMAGE, - .arginfo =3D QCOM_SCM_ARGS(2, QCOM_SCM_VAL, QCOM_SCM_RW), - .args[0] =3D pas_id, - .owner =3D ARM_SMCCC_OWNER_SIP, - }; - struct qcom_scm_res res; =20 /* * During the scm call memory protection will be enabled for the meta @@ -643,23 +667,7 @@ int qcom_scm_pas_init_image(u32 pas_id, const void *me= tadata, size_t size, =20 memcpy(mdata_buf, metadata, size); =20 - ret =3D qcom_scm_clk_enable(); - if (ret) - goto out; - - ret =3D qcom_scm_bw_enable(); - if (ret) - goto disable_clk; - - desc.args[1] =3D mdata_phys; - - ret =3D qcom_scm_call(__scm->dev, &desc, &res); - qcom_scm_bw_disable(); - -disable_clk: - qcom_scm_clk_disable(); - -out: + ret =3D __qcom_scm_pas_init_image(pas_id, mdata_phys, &res); if (ret < 0 || !ctx) { dma_free_coherent(__scm->dev, size, mdata_buf, mdata_phys); } else if (ctx) { --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 B8CC933D6FD for ; Mon, 5 Jan 2026 13:23:57 +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=1767619439; cv=none; b=EaSNUIeE20ZFfoh/lRzjVhZ5BPcCIAYsizgL/C+OAnbmHSeGNjkwziwm+XiL/3ihmviiHEv9I+sb9ItDzo/Gv/U3XuhizPlcqWzvAqxziHe5C7oHNpuMX6Kks5njdNrrltYhuLD7cIx6zFIpzEt3aMLbcnCDBpaxfkYqy1yW04s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619439; c=relaxed/simple; bh=JHAyLsFhkDEAcfYluzFEJIJb2NWskgIjsHullCrZs8A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mzN4okAg46vMitKAqaM9mK28vP14coFtmHcqUV63Y2Q6bPypASlPO01G97lIzNReb9hmyzzcVneWXNW/LSlsTTE9/2lL5coHR8z4vpwZH2DnBMyfP/ELuB0D4F60aJtkRMzVBNFYh1+m5pNzJm695/unu5w83wglsnGp6R/oz6c= 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=caMLtLHO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=EIu2Wi/5; 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="caMLtLHO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="EIu2Wi/5" 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 6059ckli610319 for ; Mon, 5 Jan 2026 13:23:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= XRXEzbpmZoLWVEC17zlGvTcHTCfFUbZ+n7JXj3Kr3u8=; b=caMLtLHOTNpKuUfJ D9cwyhYWq9VFd3HNwBqVa8jAHof3kTK+/zGYWzvHl63pRqVBTHmAWtjdBV7fsssQ slCoUQ1IlKYJaKr7ZFuYlRHiK4Q9yCZ8ivSN9jtSjalc6SkD8e06WRo4FIy+Iw7n Vjb5cAmvjikp/Lq7sr1UDSxYXuadcEytuOvlm5dQdQnaV9HHRfCVkKnfIeAZh0zi JkeZOEcvkkWWwIKcRTn3og1OCp+KudfF8/Mby/w5HLOJKdI+kZxRXHsGbElyiOQQ vnTE5sfTLkkIQhnDL+Xbt0+gib9mtqXvRLCN88nLm56oqBoY9gGmWDckSexXNggZ JKgZyw== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bgaus0hkc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:23:57 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7b90740249dso24888757b3a.0 for ; Mon, 05 Jan 2026 05:23:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619436; x=1768224236; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XRXEzbpmZoLWVEC17zlGvTcHTCfFUbZ+n7JXj3Kr3u8=; b=EIu2Wi/5M/zCKcVkVTXYGtaA2dwBSAmH0KOPqNAY46uKNZLqOq4I6JMQixGbHcrxR1 QDXT0hQVEmqhSeW7FUeZIF7bluZPCUxrB5XTbA2VdbnE5oQ+68DamvxDxg/glljy4xed vD2iYbo1r0hc3mwVZ+JtNLzn2Tf35eO4Nmyl++lYhLK888enwl9orjcAeLOch9kaH1pH 8nAG5ON9DF22/w8F1qcJnqza1YyuvDrH5QPDrLBM93O3qDkndr8rm7b1dwKeXCDh4v/I abJYw0R+3lHTjJmonau67nixnOyOhlacZqeZwCUAPPOZporfItVqt/TOi9p3a+nIw/tj B6OA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619436; x=1768224236; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=XRXEzbpmZoLWVEC17zlGvTcHTCfFUbZ+n7JXj3Kr3u8=; b=FvEqObTpYT6lTjFkiu1o1N+6YbAVBZatLqrfgY8NccoVUMVnsxuLQEmgc3VcrDdFdZ 8yYMw66wG4q88MzS2v9WoVg/MDIzsnCLIV4Wnujjr+kLNhOZgbmUX/7FeLIvX3NUTWpV 0FQoLPVlI94s4qLqrTNDhjcP6Ng4dmWpFhy9pl6WlRMdhAB/d8NPWr7TNe8JIdwps4im TWg3e5K+AY1Ot0RKixRiJsz+ZvPGUFwLb9QmgGZxNM+p9V78JA09Vilw4YaMRL4vfj1e gHq/LwAUxAvCsIeo7p9X0oerdimqn0OhnC4g2I5EG/3wcKMrteuYuZJqQ8YgJZu+Rp4J dGiw== X-Forwarded-Encrypted: i=1; AJvYcCXcbOlmHXLHieyKzJcoHx9fMFLlmN7ca1r/8NoNjtYa2lVXUpPhlEtyGw+Vs0UCgpg8ogO+5aupQrpEJRc=@vger.kernel.org X-Gm-Message-State: AOJu0YwBGwD4RLD6C9yMbNCLTtybBKT0bNCmPpj+cV61ReQGYzUS1fwj fEYF0oia0AY4OFVdlDZoahSGWmOUz83sHzai8rFUkugV5g1JlllwdBNbH5Xn0mXQD2e1OD5cs20 7aHLJhtwRaeUrkQ2wfhS3hrk5a4ZOLvZCCLi+tyIRImpMi5zypzDK00Cf4MtQdQTfjlI= X-Gm-Gg: AY/fxX5KwAWQ34LVresRl/M1ihubGQlFNqxKyEYk4rRXLhjyEWDmAWm9ZS1RBy3+R7f cgZAuyRAKYlzEmEV9wfD4NDTCXpMU3qkMfAqOZ/BCGPufVWZnChQcEaHUn9O3z9fp1q/qFj+G9L YkjxdZma90f0ZbrJFS7UTWVlQAPg9DfyHBwV86bt+rsd4WwkN6wN7F0T3cB1dQs6x54BdPG7c4R ZQfqOrSpGm1tXfwadmK/YFRFJDM9pthoGpBUNURszP/sj6NFCb9MhIFo9DOKfunHWYWYo7OyLDI 40DP3kRTLJ8O0UOs9YoG94/V6Yeirgek5V6TMW5tMNus4yQup4qTVcQteH4soigFYMVEsZnHdbF wAMjP/VC+hTmKJ/qhfP+WP44971AlD75hfdP4 X-Received: by 2002:a05:6a00:2a0c:b0:7e8:450c:61b9 with SMTP id d2e1a72fcca58-7ff6607bcfemr39160875b3a.41.1767619435821; Mon, 05 Jan 2026 05:23:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IE9QSNQ45E6pm9WIqKpv7s+2aGOeq3jGRXUnf8Z4LGYwWh16ZrKpdKTPzYTLY4yPkjlXQ2rXQ== X-Received: by 2002:a05:6a00:2a0c:b0:7e8:450c:61b9 with SMTP id d2e1a72fcca58-7ff6607bcfemr39160856b3a.41.1767619435221; Mon, 05 Jan 2026 05:23:55 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:54 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:58 +0530 Subject: [PATCH v10 10/14] firmware: qcom_scm: Add SHM bridge handling for PAS when running without QHEE Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-10-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=2509; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=JHAyLsFhkDEAcfYluzFEJIJb2NWskgIjsHullCrZs8A=; b=kWlzfyRrhgtOfbGUFcndw/B5jXC3d47Y3XmyPjHijUUFyBFDx8qnq7TRIeVSXRxf5NkAzWSPt F+XObqnslRaA8EqSIrb0Aj/e/EmFnAg+fqbWiuRAl35ttcAuIBoPCUi X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-ORIG-GUID: VsaDc8Zs1TBvgi36WmsQmvoTu8wz4_gZ X-Authority-Analysis: v=2.4 cv=DP6CIiNb c=1 sm=1 tr=0 ts=695bbb6d cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=08WIqK_J-xaQODWVIAIA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: VsaDc8Zs1TBvgi36WmsQmvoTu8wz4_gZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX7dHcZT/66JUw htm3s+Ue909eWuYQUbziSu5FiGQ/HQ1AL0oVCjoxyabO68uPR8pybHcXn6l2133xt6EESyttu4u gH5b4rxilqH94lbnAUb4gMrU3eWBaSDjli5Q7REcUTQL2qq4jyB6OqmNDGgp16mhHPrF3+Vlfuh P89XdbBN4qNBWxn9FZOLpVdjbI4KG0TIvVv+D3dg6NYzKCCKm4bHpy9FtKXoU/fu8LfCZ228T/P unAXAz21YsEzuL3enZXdFu3kD0IWhtVmJHIXfKl0QRxnVLzhmd+UWtk2DWJLeJ+sCTlV7GKmFpW BkuyVmo0hdEAjralP2e5+8nwH3RN8iGXNTmkPMmomKAt1T/XYYZAuvVZ9CCaTuQJsVoHxXcySgn JebYx4IdmO95es1o7M6Jw5GV8j/e8z24TL7pFLGBhHDc45DMwr1n13ZKSXnZMpOoKRa25IbrajS ize0PkG1/g9gIOM+22A== 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 impostorscore=0 malwarescore=0 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 On SoCs running with a non-Gunyah-based hypervisor, Linux must take responsibility for creating the SHM bridge both for metadata (before calling qcom_scm_pas_init_image()) and for remoteproc memory (before calling qcom_scm_pas_auth_and_reset()). We have taken care the things required for qcom_scm_pas_auth_and_reset(). Lets put these awareness of above conditions into qcom_scm_pas_init_image() and qcom_scm_pas_metadata_release(). Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 75a57fbea74b..9ee673193301 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -623,6 +623,30 @@ static int __qcom_scm_pas_init_image(u32 pas_id, dma_a= ddr_t mdata_phys, return ret; } =20 +static int qcom_scm_pas_prep_and_init_image(struct qcom_scm_pas_context *c= tx, + const void *metadata, size_t size) +{ + struct qcom_scm_res res; + phys_addr_t mdata_phys; + void *mdata_buf; + int ret; + + mdata_buf =3D qcom_tzmem_alloc(__scm->mempool, size, GFP_KERNEL); + if (!mdata_buf) + return -ENOMEM; + + memcpy(mdata_buf, metadata, size); + mdata_phys =3D qcom_tzmem_to_phys(mdata_buf); + + ret =3D __qcom_scm_pas_init_image(ctx->pas_id, mdata_phys, &res); + if (ret < 0) + qcom_tzmem_free(mdata_buf); + else + ctx->ptr =3D mdata_buf; + + return ret ? : res.result[0]; +} + /** * qcom_scm_pas_init_image() - Initialize peripheral authentication service * state machine for a given peripheral, using the @@ -648,6 +672,9 @@ int qcom_scm_pas_init_image(u32 pas_id, const void *met= adata, size_t size, void *mdata_buf; int ret; =20 + if (ctx && ctx->use_tzmem) + return qcom_scm_pas_prep_and_init_image(ctx, metadata, size); + /* * During the scm call memory protection will be enabled for the meta * data blob, so make sure it's physically contiguous, 4K aligned and @@ -689,7 +716,10 @@ void qcom_scm_pas_metadata_release(struct qcom_scm_pas= _context *ctx) if (!ctx->ptr) return; =20 - dma_free_coherent(__scm->dev, ctx->size, ctx->ptr, ctx->phys); + if (ctx->use_tzmem) + qcom_tzmem_free(ctx->ptr); + else + dma_free_coherent(__scm->dev, ctx->size, ctx->ptr, ctx->phys); =20 ctx->ptr =3D NULL; } --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 0B45B33DECD for ; Mon, 5 Jan 2026 13:24:01 +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=1767619444; cv=none; b=JCwxXBJzWrVORfbiZC21mWKsfSJhGcjQR9JgvEgM50P/xbVPOEiDy3X0bZU3PTWYMbCICUiatz9zFP/a2yu2SrW36GBQTCbMSeba5PdgPtNuthwNc5oAJaKzh0GD84ONVR2tvNlHdA4/bEq0QZsxiMU0AgSRXduOKm5aWA0FE8k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619444; c=relaxed/simple; bh=OBUteaRyPxiyz5zA0egTZoNR3ABp8TcImRV39mtF4ZA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y/yf2UBQmhAN1uHjbaXYMcfgyTZC0MhJ4/ysLf6Blb3u2b0jEB9C5p4k0pmiV122XnlB4S2Zm+gLOBAannxHkVbnTMtj/pSxwssHbsrhiC83/v8ktPI+gLW+Nq9eYmtHmfXKzqWB+cH2CgDMAh3W87I8ZDnakoTdNMwBC8pY9Mg= 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=CtXNVYPF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=efg4XRAu; 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=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="CtXNVYPF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="efg4XRAu" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 605854hJ978754 for ; Mon, 5 Jan 2026 13:24:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= m2M4jUuN4/aAv+qodILi/HaluXH+zF8KwR+gKrgh72o=; b=CtXNVYPFJAxMBs/7 Ky/snMNA5K/cLdTjiVH1GmjwcZin6UK5oE5/6Y3E5BBNJP+HaNi/S4P7q50PkBLB +kRGENXkqMh1scc4LJBz2EblMk9s3tXXd2hFKS2CdPrVKMl89aEdP70VC4Yhz07Y 5mtGy5cqueSQTd3AhD3PVepQGirjPyPuVfrV+rkzvY1VTduYgiP54Oj9N5Gmo+5s Kkc+fG/tzbA/imz8V+pqTybScUtuHvkCr7IdULLO3TAv4rWDeSAPC9AYkKhGpbAl LbEXXyrPx7T4Em8SSmwH1DVYbOHucZFv6wsStoaDd9dK2qbA2zpEWQhhEaiJvl6w q9ye8A== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bg9ftguyj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:24:00 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7b9321b9312so30793028b3a.1 for ; Mon, 05 Jan 2026 05:24:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619440; x=1768224240; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=m2M4jUuN4/aAv+qodILi/HaluXH+zF8KwR+gKrgh72o=; b=efg4XRAuocfned+Te6SeMx4+DVebeRsT0A5YA48GQ5MvY1QZoAtxHX5GdoYoW2CBku 8JhtoDoTxmsRQtKo8Pp862bV00gXAj8tbyRvcTeexVRwo4RFwnhO8IuUwR6HkR9DeBiU rRtIW6YdL930xrhWUM3Leho5wrSg775vzGu0LhBsdwkrPDF7IxWcF1nSsHxVg11VDtNy e0xfkUP/JoZO29cvccNImOGuExvN8nqrX0MlKRTyd7/2QJxlwzjZU8cbS8g1hrVCPv9z upey76S7sqhQgKjTgSYhEqD+RlravS1iDsCIJ4SqNmbeoIwrPRPXt9zwFEd7hPYNOfoA GK6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619440; x=1768224240; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=m2M4jUuN4/aAv+qodILi/HaluXH+zF8KwR+gKrgh72o=; b=B3IJjrluucAVvY1cvlC5zl0xKmzir14qZhU/q7dnLR+423uANtAboqU6r4pUj0IxAm tdUNqTepLYt32ldW+cUtMJryl+8uESEcD8H7CccgeJpStcyUODOYxylhRZVS7iA+ddh7 2SZylbrprcN0P58r4dZg3xRmDpiUWdEDiJ1oqOCy5WADe4QZdK1hYnTnHxxYefTAPFv3 Nmqwgr+80tVU+2BbRNfoBcq0wPFP/gj10ygJ5vE0P3Wk3CzTV0G2xDekY2FyW5UDoGVj oHVhNW1vQHoxrKR7I4k2HogqfX5YI4JsZoTTvZQi62xAkTaCtMvEschX9449oCSOCTFv lMKg== X-Forwarded-Encrypted: i=1; AJvYcCXoBt3q0Oky1FodDJqZB/DDrbHU4kbA/XBESfZCQU8cOBKrPXrG0XPWSJKyV15xLPeGpgHacdfZPjFwcUo=@vger.kernel.org X-Gm-Message-State: AOJu0Yx/O4kNSulcLYv+WkG3537ZjELeopcn3xs1pne1vS2G4+ohXlq2 972jlvtekCnVyL0B7D3HtvRCIKtQekb3QESYkxIkSq5mwys630doHRWgUmiHfD5XKARXNcBtqVg WeCbEgQX8Sht3cw1Juc4pG7W75gHFcmHKIODP7xWIaTaEI8zfxrxzjn5pyYKjg0L9BD4= X-Gm-Gg: AY/fxX6MaQknjU7XeojKQC2J2hnlcusfnjEW0an5rKjxmxEw/Vl39YiWDGeSinvAEGK iZTz/27VUgpnvCAa3RTXX0JVop44BuSVM5VAVncIVN3UBeCJKvE3yQBvBtUv3woD7WZAM6Z6xEt 9Ml3Q3MYCPP5ZMlAaBEki59JUBvFzWdXWyxC7gluysvZPJpgVc1stB7O+oVjnm8XQo+9OlXFGzh cagyb9rwj3cjPVBNuWqILITlF2azyemMpM5eyzyTKYtB7zCN9Kmb/dQmvjyFQWJdCjP4qx0cZJ6 ISmKYNds2GRIFU+NiHkrSe/jksy1sRZ8ts5fMHbgZOvXL85QfnTvqzAWnN02wUMAwEX1hXSfefr oFufa9CleclGeTuygK2vsO97v7X33DDyrfofR X-Received: by 2002:a05:6a00:e11:b0:7fc:da5:f84e with SMTP id d2e1a72fcca58-7ff66f59172mr36913658b3a.41.1767619439633; Mon, 05 Jan 2026 05:23:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IHqYEqG6C7YeFEavmhDhLM+ZitOoPa8qtbLHxXs9L9GS3aRGo/ND9arNZL+rGcVL7BqrCZDCw== X-Received: by 2002:a05:6a00:e11:b0:7fc:da5:f84e with SMTP id d2e1a72fcca58-7ff66f59172mr36913645b3a.41.1767619438868; Mon, 05 Jan 2026 05:23:58 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:23:58 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:52:59 +0530 Subject: [PATCH v10 11/14] firmware: qcom_scm: Add qcom_scm_pas_get_rsc_table() to get resource table Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-11-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=9696; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=OBUteaRyPxiyz5zA0egTZoNR3ABp8TcImRV39mtF4ZA=; b=20GaNRcm24bff4ssRPmodYB1cRDZCDRj5x81jGOqe+poITs9nti2DBFtvlnPbPC2qwyjwVfH0 c6b8NYsF51tDxctpGg+sIdEBDSvpydhBIgBTKeRptL7JCHp4k+oxsTE X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-GUID: kSW8eTuCYCx444PDxBYnbTVvhERwnL_o X-Authority-Analysis: v=2.4 cv=GboaXAXL c=1 sm=1 tr=0 ts=695bbb70 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=EfaUOOzmSyh7LFfZ1SoA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-ORIG-GUID: kSW8eTuCYCx444PDxBYnbTVvhERwnL_o X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX7jsMxH+eIcCh jU7b1YXOQx4TIIaXKSAosaxzzJVbyR+VAYVXH4+efE9SlNHOnVAO8+Rn5XAZr11Ip1B5yGfMTTf ocjqyy4LW+AygDmqlo1izDrV5hNaS+82ymtP0JbQxNvFYpbyNlnBnb3LmH7/pBn+FX3uGhKM2JS P+ys8fniksezcf3xZCFWeQPyqmLop2AGFa+j2gWUg1XrXNqr8t9ATx9gU2fHP9E/PcnvhPxKFz4 CdoWwbtoCo1wiGXsNP5IQpr6bd2qZ7RlAEcLL+6pS6yq1hU7r9PHSlaUUNfcjElvze8tyNu9HUC CRqEE+CiY6ogrtg2ya8OefA8zqH7BfdozvM/amBstwEyjyaMACbw0B2LnueeItLQhIXCKtu1OTT pGarO5O7Y14cByprAfJbwMKZLjxRDn7sJkeTAB27mM3bgQh5dNS/flATh+bVkgRW/SEE8FL/iM9 NnIExm8GXjOB9pD1HFQ== 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 phishscore=0 bulkscore=0 lowpriorityscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 spamscore=0 malwarescore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 Qualcomm remote processor may rely on Static and Dynamic resources for it to be functional. Static resources are fixed like for example, memory-mapped addresses required by the subsystem and dynamic resources, such as shared memory in DDR etc., are determined at runtime during the boot process. For most of the Qualcomm SoCs, when run with Gunyah or older QHEE hypervisor, all the resources whether it is static or dynamic, is managed by the hypervisor. Dynamic resources if it is present for a remote processor will always be coming from secure world via SMC call while static resources may be present in remote processor firmware binary or it may be coming qcom_scm_pas_get_rsc_table() SMC call along with dynamic resources. Some of the remote processor drivers, such as video, GPU, IPA, etc., do not check whether resources are present in their remote processor firmware binary. In such cases, the caller of this function should set input_rt and input_rt_size as NULL and zero respectively. Remoteproc framework has method to check whether firmware binary contain resources or not and they should be pass resource table pointer to input_rt and resource table size to input_rt_size and this will be forwarded to TrustZone for authentication. TrustZone will then append the dynamic resources and return the complete resource table in the passed output buffer. More about documentation on resource table format can be found in include/linux/remoteproc.h Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 171 +++++++++++++++++++++++++++++= ++++ drivers/firmware/qcom/qcom_scm.h | 1 + include/linux/firmware/qcom/qcom_scm.h | 4 + 3 files changed, 176 insertions(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 9ee673193301..723bd7fcd9c9 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include =20 @@ -111,6 +112,8 @@ enum qcom_scm_qseecom_tz_cmd_info { QSEECOM_TZ_CMD_INFO_VERSION =3D 3, }; =20 +#define RSCTABLE_BUFFER_NOT_SUFFICIENT 20 + #define QSEECOM_MAX_APP_NAME_SIZE 64 #define SHMBRIDGE_RESULT_NOTSUPP 4 =20 @@ -766,6 +769,174 @@ int qcom_scm_pas_mem_setup(u32 pas_id, phys_addr_t ad= dr, phys_addr_t size) } EXPORT_SYMBOL_GPL(qcom_scm_pas_mem_setup); =20 +static void *__qcom_scm_pas_get_rsc_table(u32 pas_id, void *input_rt_tzm, + size_t input_rt_size, + size_t *output_rt_size) +{ + struct qcom_scm_desc desc =3D { + .svc =3D QCOM_SCM_SVC_PIL, + .cmd =3D QCOM_SCM_PIL_PAS_GET_RSCTABLE, + .arginfo =3D QCOM_SCM_ARGS(5, QCOM_SCM_VAL, QCOM_SCM_RO, QCOM_SCM_VAL, + QCOM_SCM_RW, QCOM_SCM_VAL), + .args[0] =3D pas_id, + .owner =3D ARM_SMCCC_OWNER_SIP, + }; + struct qcom_scm_res res; + void *output_rt_tzm; + int ret; + + output_rt_tzm =3D qcom_tzmem_alloc(__scm->mempool, *output_rt_size, GFP_K= ERNEL); + if (!output_rt_tzm) + return ERR_PTR(-ENOMEM); + + desc.args[1] =3D qcom_tzmem_to_phys(input_rt_tzm); + desc.args[2] =3D input_rt_size; + desc.args[3] =3D qcom_tzmem_to_phys(output_rt_tzm); + desc.args[4] =3D *output_rt_size; + + /* + * Whether SMC fail or pass, res.result[2] will hold actual resource table + * size. + * + * If passed 'output_rt_size' buffer size is not sufficient to hold the + * resource table TrustZone sends, response code in res.result[1] as + * RSCTABLE_BUFFER_NOT_SUFFICIENT so that caller can retry this SMC call + * with output_rt_tzm buffer with res.result[2] size however, It should n= ot + * be of unresonable size. + */ + ret =3D qcom_scm_call(__scm->dev, &desc, &res); + if (!ret && res.result[2] > SZ_1G) { + ret =3D -E2BIG; + goto free_output_rt; + } + + *output_rt_size =3D res.result[2]; + if (ret && res.result[1] =3D=3D RSCTABLE_BUFFER_NOT_SUFFICIENT) + ret =3D -EOVERFLOW; + +free_output_rt: + if (ret) + qcom_tzmem_free(output_rt_tzm); + + return ret ? ERR_PTR(ret) : output_rt_tzm; +} + +/** + * qcom_scm_pas_get_rsc_table() - Retrieve the resource table in passed ou= tput buffer + * for a given peripheral. + * + * Qualcomm remote processor may rely on both static and dynamic resources= for + * its functionality. Static resources typically refer to memory-mapped ad= dresses + * required by the subsystem and are often embedded within the firmware bi= nary + * and dynamic resources, such as shared memory in DDR etc., are determine= d at + * runtime during the boot process. + * + * On Qualcomm Technologies devices, it's possible that static resources a= re not + * embedded in the firmware binary and instead are provided by TrustZone H= owever, + * dynamic resources are always expected to come from TrustZone. This indi= cates + * that for Qualcomm devices, all resources (static and dynamic) will be p= rovided + * by TrustZone via the SMC call. + * + * If the remote processor firmware binary does contain static resources, = they + * should be passed in input_rt. These will be forwarded to TrustZone for + * authentication. TrustZone will then append the dynamic resources and re= turn + * the complete resource table in output_rt_tzm. + * + * If the remote processor firmware binary does not include a resource tab= le, + * the caller of this function should set input_rt as NULL and input_rt_si= ze + * as zero respectively. + * + * More about documentation on resource table data structures can be found= in + * include/linux/remoteproc.h + * + * @ctx: PAS context + * @pas_id: peripheral authentication service id + * @input_rt: resource table buffer which is present in firmware bin= ary + * @input_rt_size: size of the resource table present in firmware binary + * @output_rt_size: TrustZone expects caller should pass worst case size f= or + * the output_rt_tzm. + * + * Return: + * On success, returns a pointer to the allocated buffer containing the f= inal + * resource table and output_rt_size will have actual resource table size= from + * TrustZone. The caller is responsible for freeing the buffer. On failur= e, + * returns ERR_PTR(-errno). + */ +struct resource_table *qcom_scm_pas_get_rsc_table(struct qcom_scm_pas_cont= ext *ctx, + void *input_rt, + size_t input_rt_size, + size_t *output_rt_size) +{ + struct resource_table empty_rsc =3D {}; + size_t size =3D SZ_16K; + void *output_rt_tzm; + void *input_rt_tzm; + void *tbl_ptr; + int ret; + + ret =3D qcom_scm_clk_enable(); + if (ret) + return ERR_PTR(ret); + + ret =3D qcom_scm_bw_enable(); + if (ret) + goto disable_clk; + + /* + * TrustZone can not accept buffer as NULL value as argument hence, + * we need to pass a input buffer indicating that subsystem firmware + * does not have resource table by filling resource table structure. + */ + if (!input_rt) { + input_rt =3D &empty_rsc; + input_rt_size =3D sizeof(empty_rsc); + } + + input_rt_tzm =3D qcom_tzmem_alloc(__scm->mempool, input_rt_size, GFP_KERN= EL); + if (!input_rt_tzm) { + ret =3D -ENOMEM; + goto disable_scm_bw; + } + + memcpy(input_rt_tzm, input_rt, input_rt_size); + + output_rt_tzm =3D __qcom_scm_pas_get_rsc_table(ctx->pas_id, input_rt_tzm, + input_rt_size, &size); + if (PTR_ERR(output_rt_tzm) =3D=3D -EOVERFLOW) + /* Try again with the size requested by the TZ */ + output_rt_tzm =3D __qcom_scm_pas_get_rsc_table(ctx->pas_id, + input_rt_tzm, + input_rt_size, + &size); + if (IS_ERR(output_rt_tzm)) { + ret =3D PTR_ERR(output_rt_tzm); + goto free_input_rt; + } + + tbl_ptr =3D kzalloc(size, GFP_KERNEL); + if (!tbl_ptr) { + qcom_tzmem_free(output_rt_tzm); + ret =3D -ENOMEM; + goto free_input_rt; + } + + memcpy(tbl_ptr, output_rt_tzm, size); + *output_rt_size =3D size; + qcom_tzmem_free(output_rt_tzm); + +free_input_rt: + qcom_tzmem_free(input_rt_tzm); + +disable_scm_bw: + qcom_scm_bw_disable(); + +disable_clk: + qcom_scm_clk_disable(); + + return ret ? ERR_PTR(ret) : tbl_ptr; +} +EXPORT_SYMBOL_GPL(qcom_scm_pas_get_rsc_table); + /** * qcom_scm_pas_auth_and_reset() - Authenticate the given peripheral firmw= are * and reset the remote processor diff --git a/drivers/firmware/qcom/qcom_scm.h b/drivers/firmware/qcom/qcom_= scm.h index a56c8212cc0c..50d87c628d78 100644 --- a/drivers/firmware/qcom/qcom_scm.h +++ b/drivers/firmware/qcom/qcom_scm.h @@ -105,6 +105,7 @@ int qcom_scm_shm_bridge_enable(struct device *scm_dev); #define QCOM_SCM_PIL_PAS_SHUTDOWN 0x06 #define QCOM_SCM_PIL_PAS_IS_SUPPORTED 0x07 #define QCOM_SCM_PIL_PAS_MSS_RESET 0x0a +#define QCOM_SCM_PIL_PAS_GET_RSCTABLE 0x21 =20 #define QCOM_SCM_SVC_IO 0x05 #define QCOM_SCM_IO_READ 0x01 diff --git a/include/linux/firmware/qcom/qcom_scm.h b/include/linux/firmwar= e/qcom/qcom_scm.h index d6d83888bb75..5747bd191bf1 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -88,6 +88,10 @@ int qcom_scm_pas_mem_setup(u32 pas_id, phys_addr_t addr,= phys_addr_t size); int qcom_scm_pas_auth_and_reset(u32 pas_id); int qcom_scm_pas_shutdown(u32 pas_id); bool qcom_scm_pas_supported(u32 pas_id); +struct resource_table *qcom_scm_pas_get_rsc_table(struct qcom_scm_pas_cont= ext *ctx, + void *input_rt, size_t input_rt_size, + size_t *output_rt_size); + int qcom_scm_pas_prepare_and_auth_reset(struct qcom_scm_pas_context *ctx); =20 int qcom_scm_io_readl(phys_addr_t addr, unsigned int *val); --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 3AF9533DEE7 for ; Mon, 5 Jan 2026 13:24:05 +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=1767619446; cv=none; b=CZHdk1DNDsRs0rNTXcZ79Y/hOy9jxXMhGd9r/lnWCCqQd+pA0mFqMThM9xrWLXCNA4dzjhGWE5kPwE8K/JaTDMj+96oH85Rx3nMi1iknUG7qIqjFA2f5VTn0SJw9JxywB0KhBNWAE+dPTy2vj2eSiYEyAtYLZK63/Hww94paU8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619446; c=relaxed/simple; bh=m+YAA/mlyrayWpYlu2DW6FhqLXxGfoQH2bEiKAJCyR8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QkcGpWKAvV8PqPHv53GrErpLYiSGrhp5MgR85ZQsq+OQHnWOMqNsXoAqJbBH/fN7LxRCughQACKC3pQUsOLGI5eSdQD4gozcovezryChhrB/8CDFgRya98qnPNFP3TO9uTb39mAq1AtEFDv65P/pTNZAhImsebyPo/02hs26dhA= 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=YiGHyrck; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Q6SXGtro; 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="YiGHyrck"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Q6SXGtro" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6058OC031213919 for ; Mon, 5 Jan 2026 13:24:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= X0h6ucEALCph7uDH9PI/I+8bZyfrAXR/0NCw42yTCYY=; b=YiGHyrcke/l66AhQ 4z6AB1GbTK24Ays5qGJvBo2Zkx2tXllsMV6FNb+dn8XNnoVDFlD6q9rfpyICsfhI r/NdkFG9vpin7pcikIjAzRzScbL3gf4yb0AgtPbZ7yylm9zlPBt1wDvEaUOVTOEV Xwr9bDQE96GNJU5KXILVjWbsQoWKRBwiHVoCfZkYGqIZN8XQGge0MArAQXiw+VcO 2X5wwevTl513q4MBRP6SK30AedZ0LjW1Zv//6ygj13312C0k3F9EafXdzQx41epj TbfxOFgNgL3z9z8HodYR98orAzDzA6ciShNIDw/kGgcAXYa2dCQk+wmsn0KKgrlO dapf8A== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bev9hch8j-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:24:04 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-7bf5cdef41dso24255417b3a.0 for ; Mon, 05 Jan 2026 05:24:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619444; x=1768224244; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=X0h6ucEALCph7uDH9PI/I+8bZyfrAXR/0NCw42yTCYY=; b=Q6SXGtro0Efyci0XmMnraw/NdVR66P7l3setUzVAGSwCpdq+H0YBVgHVqcE9S0xxq0 onVBiM9y5qdj5DN8JGJnXua5+2nf4s2Q9eJ2KmH3kxb90mOOEawYPjA2g4ZyER+praX+ 1VD7MWZu5WsGf2GhsByUYQO1cMZp2aUd7T0R2H9wxvMgVEbLfUlcI6pAI/VFEWHv4n/m aKqGLrZPSBvOTqxbS4fGKrBd/U1ovBvi+HFoW5sj/ymzCTuw6QiQ6kSy/YUmgD6CJ/6J jMGpst1INhZ7spjb2gnm0HBDJfL0hRR4CXvF71Hl1sy6EWqxT+ls4VzlQ0fHNTvWA8Ao eBJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619444; x=1768224244; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=X0h6ucEALCph7uDH9PI/I+8bZyfrAXR/0NCw42yTCYY=; b=T72k6sQAbtlPX5Wfl/o9EF6jb3rffFAcpewD8astS9W1e7UMwVTgE6K/dUBhp9W9TK yRrDmoCev/zThmI3FpJF0+/ZTmrehDL+fLiVo8XjASg18WsmaIszCsrawjIIie899UgR Ks11gUM4KRoeV9QzTpEgWwsH0IeNfPsB4KeK1VZb+K0FWIBPvq1FD/+RrryQ35UGZsUx ep57F0TL0sxqZBKpkK9RIpo/Z3ixyWqX+fqjMFP6C6vFfxIaHB7cFJDsYY+GdYv6gP0G N3JitlIVV0RsKf002cJDmf+IvZ2gAZhMvG9HQtRetkZu1SamZJ5EiqQ/KSK82qJqTIvk RQ8w== X-Forwarded-Encrypted: i=1; AJvYcCVFBK/rHR3iTe8923eeUjLkW4JezLE7JHlNJUFwKH1eauG46n3fBx6a40RHRrY6KwfYCTbXPO5gypRulmc=@vger.kernel.org X-Gm-Message-State: AOJu0YykOgeDDTSyjhHPPWiL90wi0eix2KIbDFQuJUWSUcOXNdBYKSax QDL1ZcR+375FMNXhwihwcbSLPWnVQ418TtyR45S0os1912EmtAn7+EyIzh+jKSYnKhjqHyjhVfi SMszNlLyPL+srfHtBRRAsvqktF/tItQbepwUGYWT2ZeOjqjfNavMPYYFyyuMIADx5TV4= X-Gm-Gg: AY/fxX6kLRjFcurGL6XhO1NqJlQjSsojKZ9xJJ4QV8NVPiLxIsikrwZqNxJuhpEdWRb fS0QnSOI2cQNEZUZHB+q3HNuNuaxCUSclYpMPUmYMOmByVheWl2obJHLmhTC/hQ06KcmLvjow3z kmkLSDJRCRbTyT8fJeSeXS8++PaudJSkvXwtWwbSHb8ggbwmirK+bZlgG0fkRiNp0vzuk2Yv81U 8xhRXm/FC+JXvBzPT9WTNvkKrobsrwAIukJskcI1IzTb6BgyExhPVKa+nJnUjZXU9Cw9VBqxUEq xnWchpm9WgqbAxs88vAMMlrJm1iqPG6cP9UXIxuEp9YojukH33zPEsPUdDlGdLtNKMYrYFlHvl9 agjokVMOreWhbLIhnPwcLrVC9FOjgfss7YZp2 X-Received: by 2002:a05:6a00:e17:b0:7b9:ef46:ec70 with SMTP id d2e1a72fcca58-7ff65d7cdadmr40585487b3a.23.1767619443472; Mon, 05 Jan 2026 05:24:03 -0800 (PST) X-Google-Smtp-Source: AGHT+IFgyuCBGFHPb5OCLOWNDiAiIe7lRrT0NppIzDPvEtIcDi6hUXdhDMAjeHScMUcfWBz1kzxqLg== X-Received: by 2002:a05:6a00:e17:b0:7b9:ef46:ec70 with SMTP id d2e1a72fcca58-7ff65d7cdadmr40585456b3a.23.1767619442722; Mon, 05 Jan 2026 05:24:02 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.23.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:24:02 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:53:00 +0530 Subject: [PATCH v10 12/14] remoteproc: pas: Extend parse_fw callback to fetch resources via SMC call Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-12-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Konrad Dybcio , Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=4556; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=m+YAA/mlyrayWpYlu2DW6FhqLXxGfoQH2bEiKAJCyR8=; b=MzmGh2T6Nx00u74BzgfyD5XBhQEncY2uP8O4v3wVTkmjs59o55xNazzdXVnqdm3WNBNyJaDF/ lclaohDbYlgCM/ooIu9zryAvbluvENSn0L1rgrG5JFyt5VbxurunQNe X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX0MtnOaTONTXk xpXVncBAMTNO1QTaCewy8tjPoZbT/mUStwXRIfvpmGCdyXQkYNce2ABBncZEZ9PkKoBKdYnmo8Z 6IvUw2KPab2rUBXUk0VeqceXzhYRZKKLEH+11aReJnCQFqJYUNMEYEpHPV3vKncH/odk4c82lG8 55utgX5mxC55SBVoNOnJKwEuHjEiuBB++tk1Q2iCm7ZnBjOWZKmc7r7QgejSk2rHKwHGxMjmhd7 mBKEFJ3XzhVMznYHJmTY3FvXE9sS+lEPutWTE6coiDUa701zXswi4cbLx+rfWlk4W7xnXUAFrov RyJO/Qe0n9OxDfFt9o0EZpXxiuzOG4tm682uRN1mONkuVoYcr8pXQ4tkrSbqMh6cHIO169nZIH8 OgDglcTy/6QFaQ11xpjqttavm/UBvAUDnVFGHKTgzzFhzZt47k+xjkAY32flChbnKRhqT2KMKfm P+SLRgfCBEXnnVbwlgg== X-Proofpoint-GUID: 040imoa-UHpdofa0UteYIx1CnGBMYru5 X-Authority-Analysis: v=2.4 cv=RrbI7SmK c=1 sm=1 tr=0 ts=695bbb74 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=KMz1R6K7GWUeRkMKapkA:9 a=QEXdDO2ut3YA:10 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-ORIG-GUID: 040imoa-UHpdofa0UteYIx1CnGBMYru5 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 clxscore=1015 spamscore=0 impostorscore=0 malwarescore=0 suspectscore=0 adultscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 Qualcomm remote processor may rely on static and dynamic resources for it to be functional. For most of the Qualcomm SoCs, when run with Gunyah or older QHEE hypervisor, all the resources whether it is static or dynamic, is managed by the hypervisor. Dynamic resources if it is present for a remote processor will always be coming from secure world via SMC call while static resources may be present in remote processor firmware binary or it may be coming from SMC call along with dynamic resources. Remoteproc already has method like rproc_elf_load_rsc_table() to check firmware binary has resources or not and if it is not having then we pass NULL and zero as input resource table and its size argument respectively to qcom_scm_pas_get_rsc_table() and while it has resource present then it should pass the present resources to Trustzone(TZ) so that it could authenticate the present resources and append dynamic resource to return in output_rt argument along with authenticated resources. Extend parse_fw callback to include SMC call to get resources from Trustzone and to leverage resource table parsing and mapping and unmapping code from the remoteproc framework. Reviewed-by: Konrad Dybcio Signed-off-by: Mukesh Ojha --- drivers/remoteproc/qcom_q6v5_pas.c | 59 ++++++++++++++++++++++++++++++++++= ++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index f746d2f39a1d..e0c7bf94bfc6 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -413,6 +413,61 @@ static void *qcom_pas_da_to_va(struct rproc *rproc, u6= 4 da, size_t len, bool *is return pas->mem_region + offset; } =20 +static int qcom_pas_parse_firmware(struct rproc *rproc, const struct firmw= are *fw) +{ + struct qcom_pas *pas =3D rproc->priv; + struct resource_table *table =3D NULL; + size_t output_rt_size; + void *output_rt; + size_t table_sz; + int ret; + + ret =3D qcom_register_dump_segments(rproc, fw); + if (ret) { + dev_err(pas->dev, "Error in registering dump segments\n"); + return ret; + } + + if (!rproc->has_iommu) + return 0; + + ret =3D rproc_elf_load_rsc_table(rproc, fw); + if (ret) + dev_dbg(&rproc->dev, "Failed to load resource table from firmware\n"); + + table =3D rproc->table_ptr; + table_sz =3D rproc->table_sz; + + /* + * The resources consumed by Qualcomm remote processors fall into two cat= egories: + * static (such as the memory carveouts for the rproc firmware) and dynam= ic (like + * shared memory pools). Both are managed by a Qualcomm hypervisor (such = as QHEE + * or Gunyah), if one is present. Otherwise, a resource table must be ret= rieved + * via an SCM call. That table will list all dynamic resources (if any) a= nd possibly + * the static ones. The static resources may also come from a resource ta= ble embedded + * in the rproc firmware instead. + * + * Here, we call rproc_elf_load_rsc_table() to check firmware binary has = resources + * or not and if it is not having then we pass NULL and zero as input res= ource + * table pointer and size respectively to the argument of qcom_scm_pas_ge= t_rsc_table() + * and this is even true for Qualcomm remote processor who does follow re= moteproc + * framework. + */ + output_rt =3D qcom_scm_pas_get_rsc_table(pas->pas_ctx, table, table_sz, &= output_rt_size); + ret =3D IS_ERR(output_rt) ? PTR_ERR(output_rt) : 0; + if (ret) { + dev_err(pas->dev, "Error in getting resource table: %d\n", ret); + return ret; + } + + kfree(rproc->cached_table); + rproc->cached_table =3D output_rt; + rproc->table_ptr =3D rproc->cached_table; + rproc->table_sz =3D output_rt_size; + + return ret; +} + static unsigned long qcom_pas_panic(struct rproc *rproc) { struct qcom_pas *pas =3D rproc->priv; @@ -425,7 +480,7 @@ static const struct rproc_ops qcom_pas_ops =3D { .start =3D qcom_pas_start, .stop =3D qcom_pas_stop, .da_to_va =3D qcom_pas_da_to_va, - .parse_fw =3D qcom_register_dump_segments, + .parse_fw =3D qcom_pas_parse_firmware, .load =3D qcom_pas_load, .panic =3D qcom_pas_panic, }; @@ -435,7 +490,7 @@ static const struct rproc_ops qcom_pas_minidump_ops =3D= { .start =3D qcom_pas_start, .stop =3D qcom_pas_stop, .da_to_va =3D qcom_pas_da_to_va, - .parse_fw =3D qcom_register_dump_segments, + .parse_fw =3D qcom_pas_parse_firmware, .load =3D qcom_pas_load, .panic =3D qcom_pas_panic, .coredump =3D qcom_pas_minidump, --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 D8CA433E356 for ; Mon, 5 Jan 2026 13:24:08 +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=1767619451; cv=none; b=AD3tAz7lA7A75pJ9yZQ/W8OK1FkDEGklG+kA5T2NPjk6NIH6bE7pz2/zmuYKWEl8k6WIrRCF3uTMHwmQcM0S4ILMInxjT0Y1IBv7Ltk61Ujv7yp7+OSBU0kwyPAuPje6x39zhYZ5AfBmfqqGAgsjYM6KRsRR8+dcsat+4mUX21E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619451; c=relaxed/simple; bh=SZMLL6envtkRQd8eBea0TMuWbkm/UcC4Ymddh/OwcXs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ECbyGO38FYRH6w5vs924YVOivm0dQVwWGXJmQOTdTyofMqkbJNg/3N2KYCacVdeQiHRKqeeUWa2UTu1FQRFGQyWQ705+MyH0w/yYlHuCt0yuTq88E7pVJqnMVvmXkDKiQeZtJP013GuwYJ6ph8lyiyLQfZhtfUeQxE2AuC4Kx9w= 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=LYV8BK36; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ShiETfgf; 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="LYV8BK36"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ShiETfgf" 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 6058w4Su593833 for ; Mon, 5 Jan 2026 13:24:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= ohQiEFekNMtUiDlK7Tte7+x0/iQw7PLc7Lalx3fyAvQ=; b=LYV8BK36KzzLFhFb nKD2UD28f5/C3C93p4RokgXGJ9Eu9TvazGYLHrezeuHHv/A2mIIv4gpoius4pM/a I85WVK9Cb8lw/SLvzbp2NoQqd0xCEOaiDTobCrnSohSSuUOtlV23N2FhYhYLFZvU TxNIj7TVmij6ota1WCC8rytIWm+oKWjIKVFpodvJvZfjfeEdddtvLKFYG6rUuhgl WcQjXCyN0p7eCyVD5DjRr3mTuL9XsjzKXG9mXCfkhNEaPz3gfzLKEBE39klebghf qcvONpp8Fbiy08pdyE3jqjJLMsCVWPU+xPUzeou1QuVlY+R4W5CrTwQZhi9NS3DF wbC9pQ== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bga8pgnpd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:24:08 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7b9321b9312so30793131b3a.1 for ; Mon, 05 Jan 2026 05:24:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619448; x=1768224248; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ohQiEFekNMtUiDlK7Tte7+x0/iQw7PLc7Lalx3fyAvQ=; b=ShiETfgfZIWNtivbNAN5oYVfl0kE8h9kMWh9M2yZPvLUARbIhGqO4SmyY4x0nGDU97 4QHVXEm0QWSC2rwtToq4iY0jglPIgTrpDbGdJeBeeIj/PWigmMIj1DKHidgAuwZ0z03D 97UaKKmlBzIeQpI4CT8WqyKsu7xwzPWQZ7etIZYorSvhzPt1nmnj0DA5YtclUcjXbp79 O4W9lUW10g/Yzq9A4qGT19eT0czGDyhmsr8cWYUKTbxkdlVA6guJaf3mwPd4S5WPjPlE JDZDoxiuKt/EiHrw5APFxcS7q3wXYnGVqs2YnxvIF0AyGIwOoFuG6hVoZTrsgwQwQBa3 S+2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619448; x=1768224248; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ohQiEFekNMtUiDlK7Tte7+x0/iQw7PLc7Lalx3fyAvQ=; b=ulIHIvI5RmnezGZSeiB/fKpo8hY3a3JsYpjN3kPJ/19dMdn03tw1CLEWe94WR4rTyR s2qQTi2ixVKCEJHFNPaBhoIueydAivfa9topu4TDV5eVQJNhvNRM3cQtThKUeoRU20fe DtPOjlGt72/9231BdA6zvd7bXVaIAw5/L7WH06tHKnFlIQ5ZQ8rLWmDadV4LDw2JqDFI wZCZg24y5tMyVVbWgy6nsmv015cNxjEGTbglQ67mfgPBgVuJgitWH6uVsj0lcKN22dAX ky3TOJGlSOWBI0R8fM+j+iT+7tuWx/Reb5cwOZljsbDxDo+b7epZ2G+nSx70qJiIbSVL 27Bw== X-Forwarded-Encrypted: i=1; AJvYcCXSSuCwg16rIhtKw1EcuSeioRHQR8sNwlotNv/HOFC5L5ClfiMOKIkRzyWzLdtl2QHhn949mhGsSSYMNBo=@vger.kernel.org X-Gm-Message-State: AOJu0YwUvX2S2FJIYo5pntC83hNGUJg9XEAP8JaSXvZNlYwjcTfSPg5r wBZA1UH97K3GhfynVhjOGScuhqLjTErlgjX8kmHQLOjkTxO4QQCm2WadrkTz5gmpDj/WawY6zFl Dq/+stAsuMd9vO3LwwhNsy7MeMHnZTnWEFUp3Rsrg64rw2Bf7ZdQWRGDCgDqa0AMPImk= X-Gm-Gg: AY/fxX5YG6Ttp7twIKZcu7TmtTHiz9rH6HLL+2rpRRiNOb0ieJjqv3BcC4gxTU3qEDc Q1bowX+F9QHnOCLFaSgMoHRWXxRCCmX7EJzd6fmPBQZtqtinmvCcbU8ofO1RRp5NXYKz+XtdX7E TJxEw82PcSS3+s4vRSe6NGCKsZSCQUy1sCeOSANiOuT70/+NJhyXOJiB9YmyARuj7MufsJhJZjP 7k1Kh//4R1G14tQsGYpTphol3NL+MhiXlwr0nwHpU3b5d6Ohm1ZfsbPOpmDXBk3n+OPK6ysECd0 JKR63uoEU1RnT4ZN/cNI/fSKnkcVQrMZAVQWM+9zUqUDWP0frVOI8ylHATerc5ygmk0DG3Iy7X7 rX5kWxHxmY9IJsiC//Yk13L7E1MH4syGt6HPc X-Received: by 2002:a05:6a00:9089:b0:772:8101:870c with SMTP id d2e1a72fcca58-7ff650c7d82mr39707458b3a.11.1767619447215; Mon, 05 Jan 2026 05:24:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IHrSy24RdLkJ6c7CQbabVzL9tb4PirLfLaJUXj19u3EireiiMIr6CF9FlfGlVHkbSwBXnGaTA== X-Received: by 2002:a05:6a00:9089:b0:772:8101:870c with SMTP id d2e1a72fcca58-7ff650c7d82mr39707429b3a.11.1767619446460; Mon, 05 Jan 2026 05:24:06 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.24.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:24:06 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:53:01 +0530 Subject: [PATCH v10 13/14] remoteproc: qcom: pas: Enable Secure PAS support with IOMMU managed by Linux Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-13-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=5426; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=SZMLL6envtkRQd8eBea0TMuWbkm/UcC4Ymddh/OwcXs=; b=/PPUDyUEow1Rl+NErMQSnDwMeIczmC1juCIWdIM2NZuQ4gc3m8I8jBR+sTXRaPvsUGBZSJSkf UYSWUTmynAVBWFtQ5WLdILE0NTpp3YFZi1Pc6ftLYKNa4xro0m9Qy8w X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX1L+d3olP8edP zPTKQAJxMzGRQJR0A3XHALQHhaqPhY9AJKMgRVFXumlvKNblkYS+MnqWkm+bruclZoMUO4aE6TJ 70gdgOVKnxfexniCoeqsfolKRmAJeeUCafu88GHOL2fhLxB7uzpqeNEJmRKCzf0a2Dbtnl38EXj e3P9r3D82bRcvoFetVjpHl/aodjUL+DHZkt/kp2tdK5bMiuCXwYoSPAY1RE0ub91kJxsClqpd5T q4nOUURm8CLmkiyolUZCVA4VdCmy0foubUeYMiwTAcsjhLy+g0iIZOLBdepZjBAyjCNvUS7PW+a p5NlFbhB0wN3GTGA1ZC0Xfq+0lycfXdR55ntm51a1UZxFPMgl2UavW3UuPImc+5PObbmknFGVBD i+X5E7sW44tWEo+3puS8ojlre0DEdgsTSYViYadRViehUCG/LNiosbk0gbybrXpf5Oif9pNo2vl hFmk76ckQexYtu0jOSg== X-Authority-Analysis: v=2.4 cv=JfWxbEKV c=1 sm=1 tr=0 ts=695bbb78 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=58pnfTnN0ARRJNaB1lkA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-ORIG-GUID: Rv_B7NJlXiIHKdXG-YTIRuG0yXwGxqCK X-Proofpoint-GUID: Rv_B7NJlXiIHKdXG-YTIRuG0yXwGxqCK 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 Most Qualcomm platforms feature Gunyah hypervisor, which typically handles IOMMU configuration. This includes mapping memory regions and device memory resources for remote processors by intercepting qcom_scm_pas_auth_and_reset() calls. These mappings are later removed during teardown. Additionally, SHM bridge setup is required to enable memory protection for both remoteproc metadata and its memory regions. When the aforementioned hypervisor is absent, the operating system must perform these configurations instead. When Linux runs as the hypervisor (@ EL2) on a SoC, it will have its own device tree overlay file that specifies the firmware stream ID now managed by Linux for a particular remote processor. If the iommus property is specified in the remoteproc device tree node, it indicates that IOMMU configuration must be handled by Linux. In this case, the has_iommu flag is set for the remote processor, which ensures that the resource table, carveouts, and SHM bridge are properly configured before memory is passed to TrustZone for authentication. Otherwise, the has_iommu flag remains unset, which indicates default behavior. Enables Secure PAS support for remote processors when IOMMU configuration is managed by Linux. Signed-off-by: Mukesh Ojha --- drivers/remoteproc/qcom_q6v5_pas.c | 48 ++++++++++++++++++++++++++++++++++= ---- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index e0c7bf94bfc6..46204da046fa 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -255,6 +256,22 @@ static int qcom_pas_load(struct rproc *rproc, const st= ruct firmware *fw) return ret; } =20 +static void qcom_pas_unmap_carveout(struct rproc *rproc, phys_addr_t mem_p= hys, size_t size) +{ + if (rproc->has_iommu) + iommu_unmap(rproc->domain, mem_phys, size); +} + +static int qcom_pas_map_carveout(struct rproc *rproc, phys_addr_t mem_phys= , size_t size) +{ + int ret =3D 0; + + if (rproc->has_iommu) + ret =3D iommu_map(rproc->domain, mem_phys, mem_phys, size, + IOMMU_READ | IOMMU_WRITE, GFP_KERNEL); + return ret; +} + static int qcom_pas_start(struct rproc *rproc) { struct qcom_pas *pas =3D rproc->priv; @@ -289,11 +306,15 @@ static int qcom_pas_start(struct rproc *rproc) } =20 if (pas->dtb_pas_id) { - ret =3D qcom_scm_pas_auth_and_reset(pas->dtb_pas_id); + ret =3D qcom_pas_map_carveout(rproc, pas->dtb_mem_phys, pas->dtb_mem_siz= e); + if (ret) + goto disable_px_supply; + + ret =3D qcom_scm_pas_prepare_and_auth_reset(pas->dtb_pas_ctx); if (ret) { dev_err(pas->dev, "failed to authenticate dtb image and release reset\n"); - goto disable_px_supply; + goto unmap_dtb_carveout; } } =20 @@ -304,18 +325,22 @@ static int qcom_pas_start(struct rproc *rproc) =20 qcom_pil_info_store(pas->info_name, pas->mem_phys, pas->mem_size); =20 - ret =3D qcom_scm_pas_auth_and_reset(pas->pas_id); + ret =3D qcom_pas_map_carveout(rproc, pas->mem_phys, pas->mem_size); + if (ret) + goto release_pas_metadata; + + ret =3D qcom_scm_pas_prepare_and_auth_reset(pas->pas_ctx); if (ret) { dev_err(pas->dev, "failed to authenticate image and release reset\n"); - goto release_pas_metadata; + goto unmap_carveout; } =20 ret =3D qcom_q6v5_wait_for_start(&pas->q6v5, msecs_to_jiffies(5000)); if (ret =3D=3D -ETIMEDOUT) { dev_err(pas->dev, "start timed out\n"); qcom_scm_pas_shutdown(pas->pas_id); - goto release_pas_metadata; + goto unmap_carveout; } =20 qcom_scm_pas_metadata_release(pas->pas_ctx); @@ -327,10 +352,16 @@ static int qcom_pas_start(struct rproc *rproc) =20 return 0; =20 +unmap_carveout: + qcom_pas_unmap_carveout(rproc, pas->mem_phys, pas->mem_size); release_pas_metadata: qcom_scm_pas_metadata_release(pas->pas_ctx); if (pas->dtb_pas_id) qcom_scm_pas_metadata_release(pas->dtb_pas_ctx); + +unmap_dtb_carveout: + if (pas->dtb_pas_id) + qcom_pas_unmap_carveout(rproc, pas->dtb_mem_phys, pas->dtb_mem_size); disable_px_supply: if (pas->px_supply) regulator_disable(pas->px_supply); @@ -386,8 +417,12 @@ static int qcom_pas_stop(struct rproc *rproc) ret =3D qcom_scm_pas_shutdown(pas->dtb_pas_id); if (ret) dev_err(pas->dev, "failed to shutdown dtb: %d\n", ret); + + qcom_pas_unmap_carveout(rproc, pas->dtb_mem_phys, pas->dtb_mem_size); } =20 + qcom_pas_unmap_carveout(rproc, pas->mem_phys, pas->mem_size); + handover =3D qcom_q6v5_unprepare(&pas->q6v5); if (handover) qcom_pas_handover(&pas->q6v5); @@ -738,6 +773,7 @@ static int qcom_pas_probe(struct platform_device *pdev) return -ENOMEM; } =20 + rproc->has_iommu =3D of_property_present(pdev->dev.of_node, "iommus"); rproc->auto_boot =3D desc->auto_boot; rproc_coredump_set_elf_info(rproc, ELFCLASS32, EM_NONE); =20 @@ -817,6 +853,8 @@ static int qcom_pas_probe(struct platform_device *pdev) goto remove_ssr_sysmon; } =20 + pas->pas_ctx->use_tzmem =3D rproc->has_iommu; + pas->dtb_pas_ctx->use_tzmem =3D rproc->has_iommu; ret =3D rproc_add(rproc); if (ret) goto remove_ssr_sysmon; --=20 2.50.1 From nobody Sat Feb 7 09:29:34 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 6310E33E345 for ; Mon, 5 Jan 2026 13:24:13 +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=1767619455; cv=none; b=q4in6QDN1JdR3tZElvr8K9uUFCczJB7l165Kzhw17nLZ1sKlf+BZs8sHgp9umK5y+PnDOpRfAzByIMSIapBQD8vMdv2Ihdo9uvChOCegH3kSXC/7d9hMI4LYPfDajgGYQVb3jn8uLglbM2VsTVrEPqyRgTj72+M1DuVr15RVRDg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767619455; c=relaxed/simple; bh=hVruzQlgdHdjQ5OuxF50jHVIPoW3+xPAjhmK2sqqKSU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TLdHwqzetkVNWVvHnnWI2V/yhRhrn9BTavhn/CJva9UkMpm53jj9mLWIqtNZ8Ymrb9Qhuw9Sa8jTb1Jxq1g9qZtrWv7i6PnwibvnOlP4XUdZOntVCAGhq1mff6jlbnvAVXNDpNijDLZUI9AHCzzK0fsv6HIWgSnnja9Q2ccw/Wo= 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=HzM9zAqy; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CvRebB7j; 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=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HzM9zAqy"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CvRebB7j" 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 6058Q9TZ3874886 for ; Mon, 5 Jan 2026 13:24:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= UA93deZRnndDjRzALR0KX/sfEJyUyvlslIGZIsSaPvI=; b=HzM9zAqyZ/cFSRNm XmIsbzBjesB1mJ7Yqx3/bXd1Hd2ZCMJ2ptV5Fnp7AujiJ7I8VEvnEP06p8BBnDw5 wsqcyWN2EAB6g3+2W9xBjoI5SjN4trPtZuXKmytYd6Ho7NBR2E2xdxQSTS+1sN/u hQaKQ5E9/9GeO72ndnbtpy0VPVxn99MJ+tz6GCZ77LbvoU4PJSyRGNTdMa3ZROS8 nOVOVy74X0JTq5di6C2F97Z2uwIfHBs/9VWWssX18SoaDAZRv/qLzDjbZ/2cQ/p2 9P4xcSj+3jj5/TRx3xR9b9iZe+K4NNv8rpRhxR5IeuuulpRUZV6HSslMNlurBx0I P5HaSg== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bfyx0j291-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 05 Jan 2026 13:24:12 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-7b90740249dso24889031b3a.0 for ; Mon, 05 Jan 2026 05:24:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1767619451; x=1768224251; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=UA93deZRnndDjRzALR0KX/sfEJyUyvlslIGZIsSaPvI=; b=CvRebB7jWBGdf6Gp685VYGTNB9GQTa+wYDhU1vRI6z1REHekGfmqA998vdSPHDKeFt QQ9cnM8UachquK7wMMIYyAzgMDUDNdtLcxY3vwZ6005TWEfBepU4vTf7cF2EnlvsYo6Y Z7gTiS4BMVl7QJaCE4rhVxwujyaaQDoUIra03K1N6WVlskQZAKKe6NSCthSd1jKQuqys 5tNfE8k4vcUZUM5rMCA7L55KSRROJQGJ96JChextRZzQsAOaaSAEoGtbeVcN2PHRXiUl V4YmEr177is9oEtdSy964c8t6exobLhrytuYbi4cYZpbv9J1jtOMglUmqOGoZ9r+JEbK OU4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767619451; x=1768224251; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=UA93deZRnndDjRzALR0KX/sfEJyUyvlslIGZIsSaPvI=; b=jrvBtIdJwTZT+2S7MnSsmmQCBYpWAjgnaXu3+HGJ4/zyij/L3/d4oXKBdxMmV0CyRo W0bO2jhQ0s4QH/wHMxdF+5obO7IlRlKLnEfLlgibjsDMwkb6TlDytGvoYmGBb1gj1t5l m6+xoYJNH8hz5gn+UHqJLaly82G3VEQKdkp1wu5+/12BEaW8moARXUauOqJTOlCzYlyA Sv6LJUT+Z2PR9+r72ab9ZkmY0Kj9tb3aU4zCGMorthjDx0whudPEe+FCPcywLCM37nkW uV0JBlc48t3RHj4/evBPLPLGSBU+a8KR4QytS8+MUBpcmbYGhENb7u2mTwQ/9BWPhq6i cA3A== X-Forwarded-Encrypted: i=1; AJvYcCVVref31+h5+0BPQHJJj6J4WfvmSFZE3bAi5zKkc3PLNofpdw28c/iHNcKYhvOzd2s222KkUtQZW8659B8=@vger.kernel.org X-Gm-Message-State: AOJu0Yyrfc/cUALlcSbjlEHfqKPUSaC0CnABJY+ssVmNEfj2inewwFoY OeOf3BTii68f0Zbd2ec0cEGL+3khn+KhHvdqqnwzhc/sddTWrB+gsfkqD3OpmPgCSwBmMAPmLwj jSagCCB9zx/YA/Idu4DDw0nQ/zrfmeECNtFwOelJDl5r3Spd+GeGDysSwG3uFXRJrX8k= X-Gm-Gg: AY/fxX5/1pn89IqS7+mlUstFyN7tOmOvcquPZLThE8zAxOk1DxXHPlvAeuoke9WK9Xp viQkviVWYZKpItCnYRZo9U4MjIBrdwP2GgbZ9N/v9ak3vt0HBcjwOsh8094roGOVbApdOZ8ggzm gzFnByJUPjqJ+GqktxhvM1AaR41AQ37Q57cnL1/ODLTfLC0ZyWhmOnFOa9vxUTDch3k2jnRL8uq vpjYiqUjEvSriEr972GMD1WnVqsinKTQWp1yTAdf2P5ITN6nGwusz5NZMRqcf9LQlPdLwavQCRk p7+SFkykhqkAzsL2dmIIH4093NBe0wBqEOMqFvnPsLNrxF6lJAr3U9zneaKh6FEs/1DPRizCGC/ 1/eYyYs69ugoz+vMhQmkY7Q2F5wvRO/FMrkSZ X-Received: by 2002:a05:6a00:9156:b0:7ff:8346:7357 with SMTP id d2e1a72fcca58-7ff834675d7mr36204591b3a.0.1767619450801; Mon, 05 Jan 2026 05:24:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IE9JExeJ05vZzubae1xybrU3aOxwYJajTf1lt/sbnoAiVpbIVrbU8FxGMaTuoyMc7l6x46k1A== X-Received: by 2002:a05:6a00:9156:b0:7ff:8346:7357 with SMTP id d2e1a72fcca58-7ff834675d7mr36204574b3a.0.1767619450240; Mon, 05 Jan 2026 05:24:10 -0800 (PST) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b127b00sm48426542b3a.21.2026.01.05.05.24.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 05:24:09 -0800 (PST) From: Mukesh Ojha Date: Mon, 05 Jan 2026 18:53:02 +0530 Subject: [PATCH v10 14/14] arm64: dts: qcom: Add EL2 overlay for Lemans Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260105-kvmrprocv10-v10-14-022e96815380@oss.qualcomm.com> References: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> In-Reply-To: <20260105-kvmrprocv10-v10-0-022e96815380@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Mukesh Ojha X-Mailer: b4 0.14-dev-f7c49 X-Developer-Signature: v=1; a=ed25519-sha256; t=1767619390; l=3099; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=hVruzQlgdHdjQ5OuxF50jHVIPoW3+xPAjhmK2sqqKSU=; b=eT8U2rJZOrf7bF5JddHHgc+6KF0cAGVdravLhiOm++r+7EL9qtiGTDVrHvjTrUCXQgjyFnp4n gG4r1kccBZmCrjKjbSxDtmo5cLV/The9uP39atLdTGYQuHZUi4g3cPA X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Authority-Analysis: v=2.4 cv=CZYFJbrl c=1 sm=1 tr=0 ts=695bbb7c cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=OUqdy03oI2q1KQI58CwA:9 a=QEXdDO2ut3YA:10 a=eSe6kog-UzkA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTA1MDExNyBTYWx0ZWRfX6fvRl1STStBU ksVEBTJdrSQzCBWADza4WbiewN1GZewRizAD1HUMmFVsYVAjg51Ha0cNiPnyqmTB0qbGuIG0qv2 hRutjHumGon8veYQt+hhRiFWDU0k3qTRLIb2JPWpUrWKxw8uipwBXed3a5dvsf0MW2Ki3XMUuRQ MK4yxE4NcIZiKUXm66wpNSp3axFlf35pcAXGApN/Swo1BzwV+DJ4RuBY+xAlDn+wZqtwvbM2Vc3 SA1pLs9rWoPz4Qzjst43wDCV03G0ZLz5OuxgP9yHUnyqqKWg25AIRvSrkg5sCSrWuNnPpZsBpJ9 GQjQlyqk4rhF6TFQx/iAfRdA6aH+oyzExLwatWiYRe8SMBxX9wWnejDjl/SeesyZBgnT958rWhj m+OQ1l/WDwxqi9lmxXVBRx6Txy3WAYbRgBSReXcpe4Ryma7o/NCGNnsGJI9abWFlwa4kaiDAcon yo2M9dt0X390bWdR1Ag== X-Proofpoint-GUID: RhzTiFJzTlyqenunarzY0Yi-2HM_Wpd0 X-Proofpoint-ORIG-GUID: RhzTiFJzTlyqenunarzY0Yi-2HM_Wpd0 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=2026-01-05_01,2025-12-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 spamscore=0 bulkscore=0 lowpriorityscore=0 impostorscore=0 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601050117 All the Lemans IOT variants boards are using Gunyah hypervisor which means that, so far, Linux-based OS could only boot in EL1 on those devices. However, it is possible for us to boot Linux at EL2 on these devices [1]. When running under Gunyah, the remote processor firmware IOMMU streams are controlled by Gunyah. However, without Gunyah, the IOMMU is managed by the consumer of this DeviceTree. Therefore, describe the firmware streams for each remote processor. Add a EL2-specific DT overlay and apply it to Lemans IOT variant devices to create -el2.dtb for each of them alongside "normal" dtb. [1] https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-4/boot-deve= loper-touchpoints.html#uefi Signed-off-by: Mukesh Ojha --- arch/arm64/boot/dts/qcom/Makefile | 10 +++++++++ arch/arm64/boot/dts/qcom/lemans-el2.dtso | 35 ++++++++++++++++++++++++++++= ++++ 2 files changed, 45 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index 565e9b317a37..f9a2cfab5a8f 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -39,6 +39,10 @@ lemans-evk-camera-dtbs :=3D lemans-evk.dtb lemans-evk-ca= mera.dtbo =20 dtb-$(CONFIG_ARCH_QCOM) +=3D lemans-evk-camera-csi1-imx577.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D lemans-evk-camera.dtb + +lemans-evk-el2-dtbs :=3D lemans-evk.dtb lemans-el2.dtbo + +dtb-$(CONFIG_ARCH_QCOM) +=3D lemans-evk-el2.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D monaco-evk.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8216-samsung-fortuna3g.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8916-acer-a1-724.dtb @@ -144,6 +148,12 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D qcs8300-ride.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qcs8550-aim300-aiot.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qcs9100-ride.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qcs9100-ride-r3.dtb + +qcs9100-ride-el2-dtbs :=3D qcs9100-ride.dtb lemans-el2.dtbo +qcs9100-ride-r3-el2-dtbs :=3D qcs9100-ride-r3.dtb lemans-el2.dtbo + +dtb-$(CONFIG_ARCH_QCOM) +=3D qcs9100-ride-el2.dtb +dtb-$(CONFIG_ARCH_QCOM) +=3D qcs9100-ride-r3-el2.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qdu1000-idp.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qrb2210-rb1.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D qrb4210-rb2.dtb diff --git a/arch/arm64/boot/dts/qcom/lemans-el2.dtso b/arch/arm64/boot/dts= /qcom/lemans-el2.dtso new file mode 100644 index 000000000000..ed615dce6c78 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/lemans-el2.dtso @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +/* + * Lemans specific modifications required to boot in EL2. + */ + +/dts-v1/; +/plugin/; + +&iris { + status =3D "disabled"; +}; + +&remoteproc_adsp { + iommus =3D <&apps_smmu 0x3000 0x0>; +}; + +&remoteproc_cdsp0 { + iommus =3D <&apps_smmu 0x21c0 0x0400>; +}; + +&remoteproc_cdsp1 { + iommus =3D <&apps_smmu 0x29c0 0x0400>; +}; + +&remoteproc_gpdsp0 { + iommus =3D <&apps_smmu 0x38a0 0x0>; +}; + +&remoteproc_gpdsp1 { + iommus =3D <&apps_smmu 0x38c0 0x0>; +}; --=20 2.50.1