From nobody Sun Feb 8 23:42:36 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 349B02FE06F for ; Mon, 13 Oct 2025 10:03:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349831; cv=none; b=r0RBUFIiW6Imcne1Ci7mI6hHJxjL0RAtszah+PAZAVzn9OgZf/+9dP77HVRiCmMcMg56Z0JnWfoLpzf7YQBeI75JZ6CP2yEy/lk/J/3cJ6gOPHwqsmgkdMk8MbgA9LYtmTnIi2FQl2/i9Wa/Ps93PtWPybRRuec54Nb/fSXDM7g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349831; c=relaxed/simple; bh=5S7bewqa2P4aC46GNTPc3Wfn3h92qyoaFLzlTIsn9fM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sPSxhO0acE1HtzYH0iO2G3+fCVkpZMov5jbhPRSsIpOoTJyOipeoGOpwzPq5RhjAiD/rTfD6DFt0iBqqkvDjsbPjkM2cjfZZxYJjTUcIhBDuHZYWcQFACtSAngCMR65o94ulMKmuD11gVMwePO/1lavVP8mawdl0PK3zIa6PGHg= 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=LpT0O9Cr; 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="LpT0O9Cr" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2n6CY000856 for ; Mon, 13 Oct 2025 10:03: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= PFM8hA0K00Qfpbxy4GnLDAkU4MBb9gQY5AMWZmJe2JE=; b=LpT0O9CrPnTcFYzj 8MbWgTkgPBtL0IbGY4HUZOsmlSYkjD3PYjqbe7GlAF8E7SuRVg5EZi0U4etnqVRu EdS0nRYbMSeSP144N5YZQix+HAxYv4w7boXYndPT+gihSqhSQLdVrAEytnjh+i4v CELYvkaSly6H6NqnS0cCg2XITSL1oWiGR7qoAqMWHuKySmbnIb+8Ai/b69LftVj9 hlBXnWsyLnAaBQaDOvxQbsewIaTF59d/+h0knD1kM5aJxaFvanzEsom+nDJaF9if ALdtlbWMX3YBAFf2/dackKeF/qOhj+Lh8K0s/7s2MJwwxSw+ZkczcI78hX6tycwb eqmZXg== 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 49qfd8v6dw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:03:48 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-781171fe1c5so7238838b3a.0 for ; Mon, 13 Oct 2025 03:03:48 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349827; x=1760954627; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PFM8hA0K00Qfpbxy4GnLDAkU4MBb9gQY5AMWZmJe2JE=; b=WB2bvGcNwl9DeqEuEnbFpWjZHu1ZyGV0zdeiB6TDrRTYEIiONZQQ9M962+AZD76NHB 0BjHtqSpcO4RpFgoxLtDIROK3nJB9+PcGHxCYcB0XJ1lGmwrQ4zInEV49uqaC64upAQ3 X9QuuZiv55WSAbjZAzLc3azFLxxQr4hu5fWFsFS+pK4FI0YcQKJZMUgaVT0iojbwrn3S gShqkzxm0I0h97qVOp1t923zkb5ZOJX0giB7xrLMgyu1UkREUq27YIF6iKj4tf5jXqKu PfXFSPMxoBXGiJwMB8jPgqUzRxSXSIp6mzuJP7EsexsXvr18R4C++l+ZkNrsTEXbWcHg rqCw== X-Forwarded-Encrypted: i=1; AJvYcCW6T/7sAiEItq8p6JbYfT/xqG1W5/9MKiNn6/k1gKWByjhT6Nt4KVQTiIW4o+po3z9XZEiifXrn88g84K4=@vger.kernel.org X-Gm-Message-State: AOJu0Yz099723XaX7jpbBv4S0+t7LWOoAj9ThotjE7bWSMzmBgjbWFj5 tA6DQkA31mtCkdp3nzIOYDYDcqqPa4AKh67PAYHvWkUQbgbmK91QUsYl2ekyk0/74r39dVKO5j1 VtVMEjwnu4GiVWtIuZtD42h4gxy987pYIqKUf5d0n5ph88nYVlcrplP6bjcgf8GV/4lU= X-Gm-Gg: ASbGncuABBcwhV0aFUa3tOxrKGiYAN1p5d+4t6zvpxwnH6fZA7EcRPHzW6Rqi2fY0Te ya89LzppOBj5B4V6dQ0TpMeUU6igJ+z9sZYuWzth99997rL1ThFFXCP6Ba1Z4nneXyGCwWCn1ok 4hNohxgeoq9ft0FD4HMN9xxs8DJIQAIa26jK5BC8MOp+qmDReb5sn6pUQ5Qjw2NH5FpI2Pr8PxG fj43bORKHddjnHtDBGm9tLKsxcjlLs2MOihL4tdR7EXp4pqfiZo/WDKcnf9RRteMEuY5/xq/Pvj iZr/M16WuwvV1Bt/5ih/QwIoR9CqZduo50N4gW1tGQPZOuTn3KH6JapC9M3TXjpFwbs= X-Received: by 2002:a05:6a00:194d:b0:76b:d869:43fd with SMTP id d2e1a72fcca58-7938743fc00mr27742303b3a.18.1760349827326; Mon, 13 Oct 2025 03:03:47 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEYhj8mqzvfx+Gmm8tmdtXN1K43jbXhwEsbYRoGFXxfSqXL1HtAguoQA9+KufJW5UnX9e4VnA== X-Received: by 2002:a05:6a00:194d:b0:76b:d869:43fd with SMTP id d2e1a72fcca58-7938743fc00mr27742259b3a.18.1760349826760; Mon, 13 Oct 2025 03:03:46 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.03.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:03:46 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:05 +0530 Subject: [PATCH v5 01/13] 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: <20251013-kvm_rprocv5-v5-1-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=1163; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=5S7bewqa2P4aC46GNTPc3Wfn3h92qyoaFLzlTIsn9fM=; b=fjwKLRv6UEHiLGsia3ENpOQwDD/Zvg1ps7kKLeEGJYX81++6k8WJg8nxjIF1Z9+vVUXDs3/qI fai2B1PgWs5CMbdbTLtJ7yGde6RfpDrovbb5w4N0tqOFiNerbKTmY3R X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-ORIG-GUID: oYeZ_S8zpxjcGE-dvRfbE_xOPL4hWOmQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxOCBTYWx0ZWRfX91mSfxOy2c/y oa3G5vVLIH/KQa4w/8wnvn9tIYy6mHOk5Ul3Js3xnhsEec8hXm7J8TVlkdQScQfa/i6Rjf8Vdxa ioPE4WvhRGyhOHbk5TBIXR75hJoIwatopzUtp9P5vo1rFuEFMJrBsQn+oTwyMPUwHOyHD+AhNuC r6U0kZO4le7b9UQGE3xlt1mqJIplYVw+GbkkWbkK2XryWMUzW/hEvafdJL8MYC8L76+Xz82djuJ qXiT7aGU0u9+VO2JNi5HrXdxT5Q34RakinxZ0d6R7vvsGmdFh7c5236T3aw3cMI7f6dRr9z9Ypn 9DkD6ZY6Z2mzicZCANEOLOHs9ZLAXwEz7MrhXkX4uRN0LlVtyqeTe67WNYD3VVc8cQgDZgh7Lak CxgwW8W6VTXUxy/rpCsyPpxQT6gHlw== X-Proofpoint-GUID: oYeZ_S8zpxjcGE-dvRfbE_xOPL4hWOmQ X-Authority-Analysis: v=2.4 cv=PdTyRyhd c=1 sm=1 tr=0 ts=68ecce84 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VwQbUJbxAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=vdhzk_XxDewY554Buq8A:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 bulkscore=0 clxscore=1015 adultscore=0 lowpriorityscore=0 impostorscore=0 priorityscore=1501 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110018 Most Qualcomm platforms feature Gunyah hypervisor which handles IOMMU configuration for remote processor and when it is not present, the operating system must perform these configurations instead and for that firmware stream should be presented to the operating system. Hence, add iommus property as 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 Sun Feb 8 23:42:36 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 4F6DF2FE591 for ; Mon, 13 Oct 2025 10:03: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=1760349835; cv=none; b=rbdYZ1zfC01kSoF2IbvX/LwU2QbYV0E2i5vs1yRoxFTSrhic5TZHkZzTcCm5LBU/T8K9Z1lh56C9sSCeeIzW6IKN/G8S3AO6fxYYGTniZ3JJMQjsshuKRG7OXMmVgNHm26vTdnBDQDZO/1qEddAmo0eRY0qD1FoSQbsN+7MDWIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349835; c=relaxed/simple; bh=rtvm3+Ddz+f+13iqQLmokYM0aY2hnbKT1DANmSnuV5Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JuwsG0+Qmmj/7QjSbo6V6S026VmSeRSTabeRMTR5becxZUPrlrx5Uj4onH/7YRrvT0OGS2LLj7+GZDBPBpAPglGOwIh2pye61eq/D1nEaB7zWX7Gm9wn0jfNibKzhsXVRVjdNQcm+fOxg8lH6Dpkp64q5NKy//jNPvhYeBtmw7Q= 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=lsBzpj09; 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="lsBzpj09" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2nVqD029778 for ; Mon, 13 Oct 2025 10:03:52 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= 8vz/gQycZaJGjMl9k5XINZTrvGlzn+yuEewtwO6TWbs=; b=lsBzpj09pZHpyKa7 z1hQpuLl9qdxJdvUObtRy2uXDdreQszQ3B/cZ3ufQmxWYzRi5fcPMud2tJYenfLG 7NCexwFQ8kD5dI9eSY4RrVpzakuE0HAR/kP8ZFqYqWxgbma5WsukMVxrjcrLmdCH OUVdbDri70vWChQrysIF6G+PrIaP+/DqdrVuBeVVcE3mHDub1Kq2Q4ZAziWz+Hhc FEPVdAccYcpzs7ZgRC5R93jxpw5XBfMY5W+qZlb2uX4ExBzGBwZEkmA31tB7X1zk xrU04ubg5ZksnO5F46Cc/FQXwettybTOn2fjteWhIOKYBNnahpDc+mfvPAF4H0yO PpgE2w== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49qff0m55j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:03:52 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-798920399a6so6407111b3a.0 for ; Mon, 13 Oct 2025 03:03:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349831; x=1760954631; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8vz/gQycZaJGjMl9k5XINZTrvGlzn+yuEewtwO6TWbs=; b=TCUIhrDVe5pm2SzlsP+iTNcxht6vahW9fGpaNAehTrpA+c5BYqL0uelfryeKgm/h7t 8DvI/j1sgzVL/6EHZNmTXUuB6IvH1cGqiyFE9V+nRzQtG/o9q9T13DO/z+N89taIUdtx JOg9xUKfglM8fYZW9WPP1av8Q4XKMEjS2J3Ct53HfinRsq/3DisdIYEEm8HZPwFUxcSt 4Y2Wl2m4IQa4fVv1Ec0UrpmEjW2WVoXf2kW9x8bgO9t7dMQDhRkR47fIfnehE5CqVkwx WKAy6Y5KdjsMSaGYpfoXFEJbUpUDM70YnF3hitmOUP0HvJcFpyA1vtmIVcctwQWLfcaB 59YQ== X-Forwarded-Encrypted: i=1; AJvYcCXOco/taUoSE+L2Fs9MS8Op2ibc4kbmSmSAa8oim/xQQe6WdfsRCKCaWwgV1oDohDIe0Ton0+T8TmjHeXc=@vger.kernel.org X-Gm-Message-State: AOJu0Yyv7FNFnmat19MK0mno6XpSRDXpGJT4yqwvRZ08bWxXAw5YcoiD hY3dkA4sLkBpjeIYo6txG2OTSopJxzDSJd72hBjwX8VYvSr0xmpJ9PHcrW7R0/m7Rgi8lfexieK JPTdek1BQw/PO7V8rPIS7/OsuylJIsm7Wtitu8ecRvTGULKiQYc25LE1XIcvyvJoqXMw= X-Gm-Gg: ASbGncu+4rZH/b45g+k2ftCHpM/M+eOe0vRYGyHs1ZTk2smgsL68JklNWNDHqnYqhW/ TnBxXiaa3YP0jejx+jJJji5t2YeN+DdIXoR2ZRBLy4iSStl9BgbG6d63y7Jaf0pkwvca8N6U4s1 nUMrQfsliwVUpSS5X4xKPd/gvrv+rAtazKEWY/Jw2DiYe9EoF+3FIEToE6xF+mDPpyBmISUyCRX pu52+Mkcp9W0dnuM45N7UEBMbQe9ig61Ip7TKs/pCIs98c52Y7OFeMWdZ2vLRGWkX6GQuw0zYmP lRmJAmHnUF44ap66DyHgAMXdSbwsRQt+uj6SRdx58pR9CLk6Kc4q4kFuCR2HaxhF9GY= X-Received: by 2002:a05:6a00:1887:b0:772:6856:e663 with SMTP id d2e1a72fcca58-79397c125e2mr23205749b3a.8.1760349831260; Mon, 13 Oct 2025 03:03:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGQ56tNmUbfI+6FrrVFlt5eaBpSXVaEhZpOJiyyBlYZ9eBoH502M3NXc5BwJCaMjpSWq4sC2A== X-Received: by 2002:a05:6a00:1887:b0:772:6856:e663 with SMTP id d2e1a72fcca58-79397c125e2mr23205703b3a.8.1760349830613; Mon, 13 Oct 2025 03:03:50 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.03.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:03:50 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:06 +0530 Subject: [PATCH v5 02/13] 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: <20251013-kvm_rprocv5-v5-2-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=6055; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=rtvm3+Ddz+f+13iqQLmokYM0aY2hnbKT1DANmSnuV5Q=; b=kfxQQn8d9CB6W4m+hiW5FjEowCO5eq9TVcHrr9vrjh1aantkqHtV9n+anIN7UAvpPAH9uVzNB B6s/GdC6J+5AKtqgVsWhIMJ3OP8hjO4zoNByttnLSATqDSvuiAA34x+ X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxOCBTYWx0ZWRfX8HB054dDv+Z9 Y5lUFpwFZ4dx/bY9qUBp72Tbmhq1YudU+QHqiXiiVs4izF3lkcDFhFcXelhn2FOqHsSduFj17Ew 0leAF1ry0jjlp6BVlAzlQPueoQcHOcx+2J5iNY22xs7fb1uhK8tLB9gU0XSC9wvaninpK4TjCQD nmfLVcUmdG2jlaBl+PEJ/252exzvvsOAkZQKfDJwM4YlPFjCqYbKWYlMpdn+wtXNnJAePs5KWJE nazp+bLfzxslt2bMQ3G1pT+fLANwI6lFJNENg/9QgOjruEgSAQoJQALEhTtOXmomPrF7ziyaEe/ VkGFWjf9DG1r2zFwMYOX7LZLQLalQ0yiIEO5HkOy413ZdDDuvW0frXX6orKnpjDSGI3nvaJncgr IssN18CJvAgUgA44pwd3Im/MTaL6Gg== X-Proofpoint-GUID: zt-eRqjruNdTkxlQQc8o5e01Bs9iyBG- X-Authority-Analysis: v=2.4 cv=PriergM3 c=1 sm=1 tr=0 ts=68ecce88 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=bcWw3dkznkfw-y6_B5AA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: zt-eRqjruNdTkxlQQc8o5e01Bs9iyBG- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 clxscore=1015 bulkscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 impostorscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110018 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 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 e777b7cb9b12..3379607eaf94 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; @@ -658,20 +658,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, @@ -699,18 +699,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; @@ -735,18 +735,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; @@ -772,18 +772,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 Sun Feb 8 23:42:36 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 EE2782FE570 for ; Mon, 13 Oct 2025 10:03:56 +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=1760349838; cv=none; b=ra2eCX4YRr7GsnxS77O+2zupwtfozFcmM+xPa6FrJRue/GobzRwuxkaBaoFnA0zUhPCN3o5Q7OYCmOuOkYCTDYrzJUQEQS+IJ8fFBMWIjf4/9Xg4hwfuxgvBExBUdH8Vy7hId4Zi7kgezyYtsXVdm2X7fQrKrrrkMtN+tIMclr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349838; c=relaxed/simple; bh=qlnKQpR9XMkuIHU7jVRAkxWNeLEevdVEEOE7IsDKmdQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MaX4Q1PF8Nzod1u5s1sYXFq5sPP2cyALTI3JCkm5qYJqfr8/SRTaIld57HdFxxUC3WMDbPRdmb3Rl99hCNdoFLK22ZI0Pw6PP2alTWsU/avXPO+kMVx0wLWNllKbrv6UbNxD+CCK+BKXVh9hyCFFTtm4uBJLylzmJZ4gugwTT7o= 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=BGx9o1i2; 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="BGx9o1i2" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2n5cI021339 for ; Mon, 13 Oct 2025 10:03:56 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= YdqLvZzp+hfRMVruwUYM4SO9FfOBaWkR9O/GPpEbBMQ=; b=BGx9o1i2WF52Lbef zFpw8y+Smlfx/MWRlDU/0T0+/63hbUy/tDFP/z5OgeAjFpUlvUyXoncvoiF+EGqx k0BxqEQq2DDGQOb/8rz8oRu8+9+DiUvlqXv+qPdbwgPQ5urwQM/I/m9Qm/RbJJHn ftiaFxqUHcz1EnY2uontTSS90yntI8f8drohWsdPgKgtpsKYVG9OdIGPGRDfohnW y7vnka5STvUO9ZvQ/+3oGYB5mCvY6HDYXrwrtLHe6Vv39i9XRNr7XSbHK+lp9a0+ yWhc5GJvxOOe4atjowWKjSdIsuQFDol6nGFtYHNKMo9WxIg2TkYTcKGLjDm+MNEH 5NYsFw== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49qgh642wv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:03:56 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b62ebb4e7c7so7567701a12.3 for ; Mon, 13 Oct 2025 03:03:55 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349835; x=1760954635; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YdqLvZzp+hfRMVruwUYM4SO9FfOBaWkR9O/GPpEbBMQ=; b=LOtnSLkRNMjitQARsoYYtzB85X00Fyn9MGtwNyxinPoJWkRM7OPUIUFoGdy+lwetjn DlMd+9mLzB3WFV2EX5Ru5Xbf+TxjlWI7kE+2we/R5glUkxUK0ZZW6gaJtUwEOjkY5Usv lSb4imdnnlMFPvwT5cfdeOCJBSmHUxYpPQ7ZzEeF10lM4epJVD2Svhs51ufFSu/h1MHe Bb7GNXnmKts4BJTPAGTBp5qtd0uveSKTZba9LPiiV/Ug03Ql0j/UrHwUtZafhKtRgIL9 H6f3szX/5uE5VwYde6ll0/x1P33+w6juGytGLWciCFXgNwe6rHwfa7Azb6fErib/nr9j mAgQ== X-Forwarded-Encrypted: i=1; AJvYcCW6xyNsOP0Rvii2jIdCwwfo4uetW0RgQ72owet6bwpDFaQROOeRy/7L6tBiJUUn7I5mkTnK/4bGdDQ8+H4=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0ieS3JwLo1JyGlxqBVMLA4w5j/3wE8lHEPkRSOGQ5dNZcQk0a nnXyiuVqDv9kxZjQl4pFBdNhBkfanZo5+AZ4EKcA1sG+CumsB0upqTBlZWGl+I0IFobt2sc8/k8 vKJiPKQHQoOtWtG6N848mHghgS6DWkQwTaqf1/2k2BMIXUYl2f+7np1E4zvj4uQzmIgk= X-Gm-Gg: ASbGncvo1O8uMsS9VdFmvYVebPuWOiduwcRT6kCsVSk/rHHu7lMbWL9vdIrrWSMLasw TYWCWKCR3x1pCXaKKyebHxxwRAQrps+9UgOhDKKhWnxXl1h0srVjC9J/tiBxlxoh7GjEqxd6nLw buQFfRcH5sqdzAN9luw7aXoQlZQ6FHTU4IHyGvY2cwaSGIPqRFQ04Tul5JnYo4a/GnhR9uzhwps ybirejlo69Cbfa0wMM46/mOmFlWpZxUl6/eMsrKXtJKpOQEnFu7GSr3Q+bz9GWF59PKhhMKdZsH 5XBBfXbecjHWgmwsGI2xPMSYZQCfK4fVbE2QoSMxCTh3bgDNjD1Jp67F0QkaYstvHU4= X-Received: by 2002:a05:6a20:a123:b0:243:d1bd:fbc9 with SMTP id adf61e73a8af0-32da8462b41mr28759311637.56.1760349835067; Mon, 13 Oct 2025 03:03:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHKgu+FemSBu8RrZ1WtJ87I/o9LoZ8OD0IjWwcaAZ3GUBHLjS5ZeGD/3Xc2aayoi1D19MMPEQ== X-Received: by 2002:a05:6a20:a123:b0:243:d1bd:fbc9 with SMTP id adf61e73a8af0-32da8462b41mr28759265637.56.1760349834457; Mon, 13 Oct 2025 03:03:54 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.03.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:03:54 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:07 +0530 Subject: [PATCH v5 03/13] firmware: qcom_scm: Introduce PAS context initialization 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: <20251013-kvm_rprocv5-v5-3-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=3912; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=qlnKQpR9XMkuIHU7jVRAkxWNeLEevdVEEOE7IsDKmdQ=; b=p8eHK1Ps27H1LZV7UpUYLGH266ZyVCCgakB7mn+oVap3QY8lQWVqmGAAnF8ZT/CkdHn6McgXP XS1UgPLGspiDmncTzFFxbkMgQuMJo+GUV+3jSWplu20TPPAjmYiMyBX 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=H/zWAuYi c=1 sm=1 tr=0 ts=68ecce8c cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=bwjbfaRo76XlwD4G3ScA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAyNiBTYWx0ZWRfX82qSxIdWDq5Z +Y+jPnHCexhVevkPQEvk0VxEdsyJXgU0TK23y6MAtF+j4NgnKdIZeV8Gy0x5Jwmnpm5IinIOPLB hMjf0O+DJt4dKMAg3URxBdboe4Di1FK0JtbHtY9Jaa/OAEX0rIlildjh9tI/mWMHrJ2ZD/78pPg y38hnEN/RY1hMjricNwZyeV+/lIqcrhQoNEBc/Y5I3S8XMEro7LMkwaVuNrWqWasIcCZLOz8aip fm3tkNiK7GbasdEkf/MFeUOmzP6EZBfRPCzBx3xREKv8s+wPSH/erm22ZYCLpl1Jh5rdisluMrn 4lVZBuf6KhBwczGRHTXJgQXzCZZ6xOOJNQuoiW3Zynev+rSkg9crrb6VDF+aNqZ89lWHFLOrSSe ZNMZCKtyX5CaeKK2mZpKlEduSiZgBQ== X-Proofpoint-ORIG-GUID: uORSaS_Os8TnoKi6ztCLu3wQ8XeuvgyF X-Proofpoint-GUID: uORSaS_Os8TnoKi6ztCLu3wQ8XeuvgyF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 adultscore=0 priorityscore=1501 bulkscore=0 malwarescore=0 clxscore=1015 impostorscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110026 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 and initialization helper function. Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 33 ++++++++++++++++++++++++++++++= +++ include/linux/firmware/qcom/qcom_scm.h | 10 ++++++++++ 2 files changed, 43 insertions(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 3379607eaf94..6d22b2ac7880 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -558,6 +558,39 @@ static void qcom_scm_set_download_mode(u32 dload_mode) dev_err(__scm->dev, "failed to set download mode: %d\n", ret); } =20 +/** + * qcom_scm_pas_context_init() - Initialize peripheral authentication serv= ice + * context for a given peripheral + * + * @dev: PAS firmware device + * @pas_id: peripheral authentication service id + * @mem_phys: Subsystem reserve memory start address + * @mem_size: Subsystem reserve memory size + * + * Upon successful, returns the PAS context or ERR_PTR() of the error othe= rwise. + */ +void *qcom_scm_pas_context_init(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; + + ctx->metadata =3D devm_kzalloc(dev, sizeof(*ctx->metadata), GFP_KERNEL); + if (!ctx->metadata) + return ERR_PTR(-ENOMEM); + + return ctx; +} +EXPORT_SYMBOL_GPL(qcom_scm_pas_context_init); + /** * 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..75dec515c5d2 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -72,6 +72,16 @@ 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; + struct qcom_scm_pas_metadata *metadata; +}; + +void *qcom_scm_pas_context_init(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 Sun Feb 8 23:42:36 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 A94792FF15B for ; Mon, 13 Oct 2025 10:04:00 +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=1760349842; cv=none; b=SWjwO7TsKJRGW8hv+s+5wLw+McW6WaDGIoq9gmI8rjiJAZWkGRyBvl0btI7BKUM+Kqa5pk4xLvccs1+Wxr7GpCvzX6Np8x8bPEoAFs/27uVXUBBQH+8cS3dSqLoncdaz9jPLDfoXk/ANnRjTyoFOEfp+Kwg1MeXIHQfvGk2nhWQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349842; c=relaxed/simple; bh=5KoG+dkUELQlDZk6P3BBcb4jRFDD1QWvO/OpVUzmvwM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AmVxcSkIB1YkJfmOMx/XfptdRmQGcqLH0Yv4Ci44548jX3Tl6dlHq7lW7vyXkkRPrzR7dZSYstdFwucyPoXRNk9aOMxzQ92m+gKNHdtR+DBwVfGcYmMPEWwZOZruZ0I5G0M2oV6p/Y91EhvVUJotnFHpeMnDxD0qWZ/ofbN1x2I= 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=oEMU56+o; 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="oEMU56+o" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2n6Ln028596 for ; Mon, 13 Oct 2025 10:04:00 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= V7TcqOGoNmgpd52A0AuGqeG0xr2IjV9chnJIDX3LcS8=; b=oEMU56+oD4G+3LBe sp41+eHS7sbRxfJZRwrjyhAwn5rIWKO1B95t9Xp4cuovMkcjTNYN3M6sSeG3ieom 5MIGPv+mQhBuIKm2iPMg0AYOy9mCdPxJ6+sVmET8AtjY9XGfBrP2dwsgdPc2a9a9 Mku9ANO1Ry5C5QPk7dWPu4SAMZApNDdj1+BUHWi54VYL8HPSQeCHtWow0NteIcJP /ZUIG+p+Ds2OHQo/hpHl6VvmCvwVn+mrLtErGl+0ZJiqQgC7Onbu4e/sw2CJ86mM ryjGqqXy4v+Jc+haawBLEcOZR7Yz5DTCNKgJ4DGYC9Dlly5fPnEY40KV0xPOOlnB AM/Qrg== 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 49qff0m56s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:00 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-76e2eb787f2so6745322b3a.3 for ; Mon, 13 Oct 2025 03:04:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349839; x=1760954639; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V7TcqOGoNmgpd52A0AuGqeG0xr2IjV9chnJIDX3LcS8=; b=kZbdgLXibw6Xo1QA5X2PQUIPe/Vql31P2yVpiKLt1X5IiwbS9xDSBdueyDc/a2XRVC vN9D6cF1VK1+dxP4VXHjKFlUOCgfZi9/ezsKBh+UqICF5YzlYmi8flTpISMNTuYx3Nzg fS1xgcOuWdFFsBknnHZre8Ll5M0SsfssAjv2E5s8VdwCP6RTDbyGS4eVa/9MrH3Y3vcb H7mF4N9lfzQ9Tjb7Yp/VcQQrjFf44JtV9YLX6THHlKAb9hETjl2cB8eeQHmiBpguvxA9 Mhr7SkjRXQkUgnxNTOVJr8sIQdGTqBC+ewd/R++yBzDvZxmyedOECuP1uh3xotT6xVRB Gj3Q== X-Forwarded-Encrypted: i=1; AJvYcCUOFf1e6+uioY5YRrN9AgBoBPPTRPhdadK9FfxUMHhy+hfZcj8hV1DzB0ZoF3gbyZueFKXZw970j3IZqeQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzLItWLNa5DUxCdRX6ShOIMBuKpyonesuxnv4PyjojaIDzukPHk mFHHQIYNjooysmYLk7E9ayvDjUL+okXR3/8UVb2ApUhgM5KWWuCydd6vx3157jAZmpwWqtYuPl6 U+gktlrYCEk90acr0/CtmshnRaOmNSNBUufW+NIqLGdtBNne8U0vW6ukAamviduC9rKE= X-Gm-Gg: ASbGncskPMaCvhQIVFHmPRQ1WFFXPA+E03392mT1O6A4hKAmbpYYQ+2RaUJy/L4hisa ppgJUxqVq9qm6ZrfAylzNz7CgJOuul8ASE4qES9WnAlSSK+m56g4yz2kaWjS5SYVPatcau00pOP /YneUJQYJUXZDRVmG+hQGeTb3vXYMqy5AhXrwa5GzGSa2hQzlkvRgQZI27L0ItzA2J4nlYBU05j wRCBinxGHA4ucsCtJk3QxOa3+9pvTrQX02OguSMC4D5JGisFh5w5gR+LBGK+8nzs8x9s1NQg77y jMbowfNpFeAx9RU19diDvN6l7qPEbvJVaJVfX70LlF1X4BzzTJ0/FM39YGoJL9T037w= X-Received: by 2002:a05:6a00:2e13:b0:774:1be4:dced with SMTP id d2e1a72fcca58-793858fb776mr22200929b3a.9.1760349838955; Mon, 13 Oct 2025 03:03:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEqhO0z+/H9ATjzdQFVJY6Jrb5f2E9gB74dg3m1b7ZMPRBS1YHHfuT36FgYAg1okySxBYpqWg== X-Received: by 2002:a05:6a00:2e13:b0:774:1be4:dced with SMTP id d2e1a72fcca58-793858fb776mr22200881b3a.9.1760349838288; Mon, 13 Oct 2025 03:03:58 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.03.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:03:58 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:08 +0530 Subject: [PATCH v5 04/13] 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: <20251013-kvm_rprocv5-v5-4-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=9419; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=5KoG+dkUELQlDZk6P3BBcb4jRFDD1QWvO/OpVUzmvwM=; b=VtxTUiphMR/gybvzLwKZNOiVX49pNdQqEdP7/+ssZw6SMKJ9R46cidR7PUxnSc8BAfx/3pmWr a6Ee36IxdtxB0Wpl+zSuOTBCzVA2jdTuXXiVdTt6gNaALBLwBGDBG5Y X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxOCBTYWx0ZWRfXzPX2rRSP6VRE b7TarLZfCFnlsq8PAkc++vn/YiNjYGnfPbLUt5O73yrEqyejTrT4/WB286nF/bGHsUl8dJbLZ8j AQVGlaxGdC8w7Dv+UMegc0/60LdHBuLBihjAARgdhRNQOFUhg+JkNlPTYMSxMuNRoZIhqaSJTLr LaQtOlBclS6o3Om48u6ZDEzSuqnZqcvrwh54pNGJp73zQbeU53tlGhvwZMbZTmvB25/T1ynYM4B 4BDZ2ZB3fdXhuucL3e5EEDuY87Bct73oKrecAGnA73f2jKrUOD5YA/CDGxm0VcUIhRqIJMrABLb atfqjaYULaRxd2Ow0EGlfoll/hy5p/P6yQSIzKR7IYJnZCl0cQysXGJ1rlgLvxfd7RHYHs1IYJh e4tFvVoUc4hGN89KLrlugbLD8+7xzA== X-Proofpoint-GUID: AyvagkdS8EPaOmxWR-zkwfCtFk8OEVKK X-Authority-Analysis: v=2.4 cv=PriergM3 c=1 sm=1 tr=0 ts=68ecce90 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=XYYdV5bl36wkJkLlMoYA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: AyvagkdS8EPaOmxWR-zkwfCtFk8OEVKK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 clxscore=1015 bulkscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 impostorscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110018 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. Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 32 ++++++++++++++++------------- drivers/remoteproc/qcom_q6v5_pas.c | 37 ++++++++++++++++++++++++------= ---- drivers/soc/qcom/mdt_loader.c | 4 ++-- include/linux/firmware/qcom/qcom_scm.h | 4 ++-- include/linux/soc/qcom/mdt_loader.h | 6 +++--- 5 files changed, 51 insertions(+), 32 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 6d22b2ac7880..b11a21797d46 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -600,7 +600,7 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_context_init); * 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. * @@ -609,8 +609,9 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_context_init); * 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) { + struct qcom_scm_pas_metadata *mdt_ctx; dma_addr_t mdata_phys; void *mdata_buf; int ret; @@ -661,10 +662,11 @@ int qcom_scm_pas_init_image(u32 pas_id, const void *m= etadata, size_t size, out: if (ret < 0 || !ctx) { dma_free_coherent(__scm->dev, size, mdata_buf, mdata_phys); - } else if (ctx) { - ctx->ptr =3D mdata_buf; - ctx->phys =3D mdata_phys; - ctx->size =3D size; + } else if (ctx && ctx->metadata) { + mdt_ctx =3D ctx->metadata; + mdt_ctx->ptr =3D mdata_buf; + mdt_ctx->phys =3D mdata_phys; + mdt_ctx->size =3D size; } =20 return ret ? : res.result[0]; @@ -673,18 +675,20 @@ 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; + struct qcom_scm_pas_metadata *mdt_ctx; =20 - dma_free_coherent(__scm->dev, ctx->size, ctx->ptr, ctx->phys); + mdt_ctx =3D ctx->metadata; + if (!mdt_ctx->ptr) + return; =20 - ctx->ptr =3D NULL; - ctx->phys =3D 0; - ctx->size =3D 0; + dma_free_coherent(__scm->dev, mdt_ctx->size, mdt_ctx->ptr, mdt_ctx->phys); + mdt_ctx->ptr =3D NULL; + mdt_ctx->phys =3D 0; + mdt_ctx->size =3D 0; } EXPORT_SYMBOL_GPL(qcom_scm_pas_metadata_release); =20 diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index 158bcd6cc85c..e9dcab94ea0c 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); @@ -779,6 +779,21 @@ 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 qcom_scm_pas_context_init(pas->dev, pas->pas_id, pas->me= m_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 qcom_scm_pas_context_init(pas->dev, pas->dtb_pas_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 a5c80d4fcc36..fe35038c5342 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 75dec515c5d2..7c58d26ede24 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -83,8 +83,8 @@ struct qcom_scm_pas_context { void *qcom_scm_pas_context_init(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); + 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 Sun Feb 8 23:42:36 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 9E2DF2FF65D for ; Mon, 13 Oct 2025 10:04:05 +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=1760349847; cv=none; b=K4LtgEGEvmARPx+9PhdC0KWLI7+wuO6alb0qS/eIwBSAtm7vqR05O/w5FaDBeOSg8unks+bWBREG8UEjvSdBYQ48R8XRUA3Cr6/v0snqhvslxJvPoknypSOrmZV9xtT3NYs50qahyaoHf9mfTe+4Sn14CMbgITucrOdeaFyjtK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349847; c=relaxed/simple; bh=Icpkan34cU9+IqUCWwoIEvjWttbgIEHHCj+zspriR4Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gj9LEkd7VEi/iYA6tc1OVQbOppwxKB5EDpovOWOkEqG4DOmE46hNi80emMeGRmGFUUR9X++/StAErWpdbMxZX3Ry/qCGd35Siafffq/vjmbTHRmEm2WLAXSqXFaKCfdt4yAv4dQj7FOGRGSWs8BpjxQdzK8V1zBGct3Bf34QKJg= 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=OyCPyBRf; 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="OyCPyBRf" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2n603016551 for ; Mon, 13 Oct 2025 10:04: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= D+eo4qyKVLGcgAWX38pSnEzJgrOcwP93t2BBwbeh4iI=; b=OyCPyBRf3F4TLU+C N2J9E7p7v9OnfG0oaAOkjvq9exyL+Uk97CTRk7/ph3fL8Jy7SlOmK4FaMcQJ2Tr/ wV9VlR0PYL+PsowC6nseLoEFaIr7iNZRdyWswAQqWVdiTHtNoWD3Wq4qeYaTeCxL jS4H9LtEf/He6lj36mtfGAXjyX6LGZ20wnckXrXAwt2y5+LMxTRolNGbNKB26ZHz MSRcJJNNM2tFyfRSrb02KmYFuwDI9c61JmXBx9bVqQfR7yH1NCq1c3Z5/VQ3L3VH RY3R8sERuspdXzZIdnOViB4MUOMTMsPMFHN/bomRE9d+pr/aSxpfJ7Lo6yhfgphm tnKN6w== 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 49qfbhv66v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:04 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-78105c10afdso6957950b3a.1 for ; Mon, 13 Oct 2025 03:04:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349843; x=1760954643; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=D+eo4qyKVLGcgAWX38pSnEzJgrOcwP93t2BBwbeh4iI=; b=tM3wgK8SAkJqib5X9H2eDakkhW/VTm62CUAQFXPLtqQ70gOG1Oq74LXjuk2f1qh1b0 Zi5fGbgP/yxJ8OZwdreqymtptuOXPc03rhvya77l7rlxpiFIJLI7HzLk80R7+oVxX0JX WxgvuG5XW4RL9fRq1UQk0Ri5iIZTxrkkaJMafrTRCgusfZX4AmzN8i0R8Uder/7gbNfC gZ9id6aJ7bj+OidCix8fQOxSoUWA8XXXU6TcEiy1Kzy84U54VmIraAHW8lZYeh6UCprx Wtppf0onVrpyvN8rMC6w5PD0fg81HIsUdUOZ9GHL6H9AGQ8BnKMfAakksUwyfWpkxbet 1IgQ== X-Forwarded-Encrypted: i=1; AJvYcCUOWjIeXI4cbmbVOMCPNdfoh9SX5fcMAT8bPB/zHfLRM2pn1axL9jZ0q1CyQie9tNrMpXM411rfhA6IWsg=@vger.kernel.org X-Gm-Message-State: AOJu0YzdBu2UfbE7qmbVvQPcL8bJ6JMb+ocVv8NtKId/iDrk2R8ISmcj ly/yum5PZIY/1/5b7WbZT6wAZmhWVW4meyJH3iAtjcD7WvuB28DwC+OZqUKJVo1By/Ti8s6CFml c+nESLMDbkiQLcd3aP3of/Rf5pN7X3tZbsf/qIaUSXDrlNS22bIKbCAhozYJx2fUEUNE= X-Gm-Gg: ASbGnctxvBoPWnjuAjxaUWh+4gXpngLS/P5BNvraEIszqW5pbpYJ8jVQjdBxwrOYwxj nCl/J4zQvR03xrYQnm5z6JOQetDmfeNks6uFl344nBjFNBWiPupPNl3+uoqMVHJMh6ha00/V+w0 V4SYRSHXJAVcUwm83UgvyiYuVoJyx3TSS2lwUGVdHc+mult6j3BSGxZVzTUSevZIFg4UaBTpZeC UaSK/ndcwwSzN7HO69XZMi2H3kdazfAMNmCE1d3RF9YBJrtlQzhK6aSonL1btuMtoIMbZEqqt/9 MV5j3G6vM+FiEiE/9LLSS8YrXjTjpBDBbimt664ZNnjLtaNwSmwgV9DoiL2TjO/s7bk= X-Received: by 2002:a05:6a00:2ea1:b0:781:2272:b704 with SMTP id d2e1a72fcca58-793853260damr25668158b3a.5.1760349842774; Mon, 13 Oct 2025 03:04:02 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH6i6nuGn+P1BIm9lbVj7yDxa2McgSYNKD7vdGfdIn/WKRA32N3oYYdTDrYQP/v1UbanNveRQ== X-Received: by 2002:a05:6a00:2ea1:b0:781:2272:b704 with SMTP id d2e1a72fcca58-793853260damr25668110b3a.5.1760349842149; Mon, 13 Oct 2025 03:04:02 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.03.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:01 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:09 +0530 Subject: [PATCH v5 05/13] 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: <20251013-kvm_rprocv5-v5-5-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=5658; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=Icpkan34cU9+IqUCWwoIEvjWttbgIEHHCj+zspriR4Q=; b=ZtKuOgxV5LquwO4E4dWmMzbw3ZqqnB4suE2tk30MOgMLrAucjqhXcqN4uQ7N+12+ZpOAkDRhv xXyFebE4QvVD85a0bQPdltgLlDGEM29ANWqNzN+iHdeNMwZQyXe8DiL X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxOCBTYWx0ZWRfX9VlK87D/FqON ZF2uegKAIaObTA3EsyKH2uiN5u/5dBh+eBbVOdCMZLHEvBjH5NncoyOK0FvYcU4oi4bDKMjXaJF by8nxXYPVAbe4SRpo5c4ulOf3wAkBMbN9dmHcEgESyI7KEznKZAsfp+vUiejKfUcE45UzwLUlKZ Doyfi05Q+i4mM6qmBNZgRKerf0c7TWbqofXMzBl54eUgAczJoN7U5Jo88OWtL0yjEm732M27Y5w ZgExZTzH8sS3sSRyuq52D0SG+Qv9um4rKpb3SkY5KM20dsVbSjfJUrFe0wZoz+RJL5Gx1/qG/p6 AY/RMtpsEr6+JgF4vGhgoqm927rqxzoXCfSyZJ7wL4rLPiHuH7vzN0H7g8FtfGTDwaOi1C4jaNk 8CWFF1zKuz1jHljcPg67M8TuJ5jhyw== X-Proofpoint-ORIG-GUID: 8mfAsDDxP8TPtxlShH6Kx4j_2L9kDflA X-Authority-Analysis: v=2.4 cv=bodBxUai c=1 sm=1 tr=0 ts=68ecce94 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=tZ3jCLSBV7jl1JjQXpgA:9 a=QEXdDO2ut3YA:10 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-GUID: 8mfAsDDxP8TPtxlShH6Kx4j_2L9kDflA X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 adultscore=0 impostorscore=0 suspectscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110018 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(). Signed-off-by: Mukesh Ojha --- drivers/remoteproc/qcom_q6v5_pas.c | 24 +++++------------------- drivers/soc/qcom/mdt_loader.c | 32 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/mdt_loader.h | 10 ++++++++++ 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index e9dcab94ea0c..ee0ea35803c6 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 fe35038c5342..52de8adcc4f2 100644 --- a/drivers/soc/qcom/mdt_loader.c +++ b/drivers/soc/qcom/mdt_loader.c @@ -486,5 +486,37 @@ int qcom_mdt_load_no_init(struct device *dev, const st= ruct firmware *fw, } EXPORT_SYMBOL_GPL(qcom_mdt_load_no_init); =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->metadata); + if (ret) + return ret; + + return __qcom_mdt_load(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 Sun Feb 8 23:42:36 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 9C2B32FF670 for ; Mon, 13 Oct 2025 10:04: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=1760349851; cv=none; b=VAHpC/DPb2ZNQWsHiWYyI3KWHsTIjLRRaozs9OGUIlOcXoEWqae93nVhyNQNyUxoUz+9GLEPlZwVBqHmtlBkhtOdaLyezz04PDypeFZEDpABcccrbkjlmygJxn+EItEqKbnyTYJ+O8ALwJRoGTTjPu4ajVO4FAP/dI6TUGxfDTc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349851; c=relaxed/simple; bh=bHcT9eRVWhvFNTu4y4V8eqKAF9VAGKEmNZy+vNLhXZ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dOxnGj/Xx+f1IRiXXPy4zgII3Zz7djaUdm868OpX0PDIgNfNzueV96LzgrhSLC6nkhAV59P08U7ndci/qTh7Vn6txxUphEvSz5UK6TLwReSd+X4cBFcIpcp0XuS4gWxG2Rxx8TznBHEjtHev0iJHgQC9iJV3z0Zfl/yvOwZybpA= 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=DeJcbWNV; 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="DeJcbWNV" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2nE9o011037 for ; Mon, 13 Oct 2025 10:04: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= ACMa4Gr9K8Co2xpy9yKtrPi2uufT1PxmA4l9YsdDMic=; b=DeJcbWNVbhf30+Em RVsrkPfI8Ij7np41DV0R6VefhxjGyn0+mp8qz8Iw6ipri4s3v2fPBm3iv2OkNn4d HHqtKjHrKteXnPH+/w0no678FgTDB/N3spygLL6MRKcRivgIelGo9eBy2EGEjv98 GWG2QRp3evIaHvAT8Yz3xt+O/5ytx6KO5AzecTe9/OxfN/X0d78nwq9gJHuqXMI4 ShB9bDvPKbIMB8z1Efyjdy0kPX8BudjkYjrwIXZGItXiIMD65uATj0jh+h2AegJS c1SY9ARqim97RdzhsFUagCN+seC2SnunvV8ytUQ5Jq7KKFxvfcnb5DByvPWhiozz nfHhog== 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 49qg0bv47v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:07 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-780f9cc532bso6364682b3a.0 for ; Mon, 13 Oct 2025 03:04:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349847; x=1760954647; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ACMa4Gr9K8Co2xpy9yKtrPi2uufT1PxmA4l9YsdDMic=; b=Ief/YgUjpXT4vBJw3MZBPOL8F8MSrwUxmPCxfwM8ZCjfTz2U9OxxzmFXtcr+CgtliA A9RIaf2jrcODYE+SzZjTDN9jyNnjCzaatmFsZj4Qj6LMzglIDZ5ZdP9HUqiUzyY+dOH9 BQksAjz3m/+U9FuGutNWBLNpOZ+iFFzR/GEx1q6zj/NpdjzIMHlNx7r7VhyhULNx/Ghh egYYTzFVUWs+pghK6sm3VmHlN367YrTjRi/WeLPaqRFGskk92jkVLjwG3h9Tj4OFFeU0 0auxfl8fEdk26LjaFCmr+z0uNWdyHh83fyQBrgfaiTlM9rPaSZcaOifVV3c5j8VB15Og yJMw== X-Forwarded-Encrypted: i=1; AJvYcCUy0YDFXGw3rNlrqw519vmDGBTS2T4rdiiEy6a2395Hl4BUoSuOY7hDm7SlYeBg0ZeeyGdw6Guv2AqO7sQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzrSqAhzAWFzD0TfuMHk3tUfG4OU+IfH00u263HpjlBBpkeA24d Yt0vKP5ZgjMFDUNrkS+5HZYSI8fA6H65WSPsfXqbbMhFq7dPJF4B/AIz698hDSmLpYlEVyxH1bM zjuZ7zxloFY+0mGRgBfVMbJJNrrVg5Fw2u8f9QItapN0YOx5B4sBvvl/AGUpVbPVzmko= X-Gm-Gg: ASbGncuqNTgEfFpPv4DQlOUYpwuniZz6N8z1sQdD/C4Njw3iCdDm7zJ3aqZDS/3krhv 1fLINHgcaMvsUTLgkDsT3PnV/DgAUjhvnkPQ666L9wkbAz/wzaSFMtjO+u9GkQ0lF6+vOlayJ0i UiO163XDh8XP8nKJbwZHYvVkycIMRr4FaUNhhe9rKTR/vzK0ASKDy1Ln5FVsO0632qbBj7MKeSk NnYA5NYv7UehyWxU0Xr1szbAIVMpYYYL+0E4PsScM+y+BBeNY8Qy47NotbL6vIjHv8lW+BksGfs GCFCZ4rJsMW9I0ZpEkQIIFImKa/Lwx/gPpaoaZX9IorRV67JNJvF+bno95ANHdEz2T0= X-Received: by 2002:a05:6a00:4605:b0:772:397b:b270 with SMTP id d2e1a72fcca58-79398c97361mr24306128b3a.10.1760349846565; Mon, 13 Oct 2025 03:04:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHQHVDSMd1Jx4tzbSC+QOIfWvM7wKblLoUpWeftkBYmimkaMjy8d/eg3OUTDGQU0ANvi6uTPQ== X-Received: by 2002:a05:6a00:4605:b0:772:397b:b270 with SMTP id d2e1a72fcca58-79398c97361mr24306091b3a.10.1760349846002; Mon, 13 Oct 2025 03:04:06 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:05 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:10 +0530 Subject: [PATCH v5 06/13] 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: <20251013-kvm_rprocv5-v5-6-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=3482; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=bHcT9eRVWhvFNTu4y4V8eqKAF9VAGKEmNZy+vNLhXZ4=; b=5wliMXRBkU8Re9UF1QCQi+z3npZtlITSFh8/Q92wtlb6cttaOIU9voL9MpZDuKJggt46tAtq5 vYzQy3k0QzFApifmXrc3JmjfiN2XHxsTI3Efal8mJBtDi0CaZlTfcdK X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-GUID: PS86LdkUJTb6x0n5z8tINGYbOeP6rkU0 X-Proofpoint-ORIG-GUID: PS86LdkUJTb6x0n5z8tINGYbOeP6rkU0 X-Authority-Analysis: v=2.4 cv=eaIwvrEH c=1 sm=1 tr=0 ts=68ecce97 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=Z4Sw7GGoVt5sTUwIiKwA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAyMiBTYWx0ZWRfX+bIwPGg0jq6r Lnwz2mA+hFb8MGsROwHj+k7H4A8k040ThaGlz0NpsT7Y6wuErGIJJ8rY05n8u9IrXM1v8tP3rgr RngP+d2uI/P1xEO+hLLs+cj1XzROr/DLhjju+1r5jKQG0AwAqCgaBmmPeKpLBnsjdygFeDz2/9t AEqSR7m4IE5s/zaC3chBgJGcpyrQJzWGdumcLUtchAxzo7WA7XfXBJtdD4GS+CzQPXm0cqmDQoV 20RY1RSaE5iXtfNPe1JWb9ie8AP4LhJ5Nll7MfUb4TmhO63vHnqMHtlfc/GonneIURdIkJAGKhG 634ywgY25n7tF/KUR2j8vEWAZMeASe0mLJyOPzdwgM1MWoDjEHGD0lDCMpS7NGDk8mVZ6KGgvd0 NzU80Jrdp4Rp+qttNqLP+x1ufgjuPw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 spamscore=0 impostorscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110022 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. Signed-off-by: Mukesh Ojha --- drivers/soc/qcom/mdt_loader.c | 12 +++++------- include/linux/soc/qcom/mdt_loader.h | 10 ---------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/drivers/soc/qcom/mdt_loader.c b/drivers/soc/qcom/mdt_loader.c index 52de8adcc4f2..97e6d11b8926 100644 --- a/drivers/soc/qcom/mdt_loader.c +++ b/drivers/soc/qcom/mdt_loader.c @@ -238,9 +238,9 @@ EXPORT_SYMBOL_GPL(qcom_mdt_read_metadata); * * 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 +302,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) { @@ -456,7 +455,7 @@ int qcom_mdt_load(struct device *dev, const struct firm= ware *fw, { int ret; =20 - ret =3D qcom_mdt_pas_init(dev, fw, firmware, pas_id, mem_phys, NULL); + ret =3D __qcom_mdt_pas_init(dev, fw, firmware, pas_id, mem_phys, NULL); if (ret) return ret; =20 @@ -508,8 +507,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->metadata); + 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 Sun Feb 8 23:42:36 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 6F9BB2FFDCA for ; Mon, 13 Oct 2025 10:04: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=1760349855; cv=none; b=ESfFajDr93sqixZdstwZgELFdhisOXUDD9BhDKETSc0Ex0KFOVeqzci8TnhKGqEnIbVpge8MGkfFZaHiuEyFhXPVxO2ttBYWpCFI7LLzpgFHeAF9nl4O/DxSMNrvaxr8xZJcx9cFtS2zMPjAUbkcQENuYdcuyOs0/dq//L5cw+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349855; c=relaxed/simple; bh=8hZm30CWvb7JLW+d0khgV1UhhQZmzpIiZ5CwI+qm9/8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hwyGo0U1husYcqx1UL3XmMrrgGfwLloMb5mYqkpknmoCPgqUPIVTDIXCrQhkQMX8YhBy5AfK7THKeu8zDju8dI8rRmOUHKbTHF3Jw/wZi5uFT50QyHoqQMHId8JcBzyn0hw2OBo/ChkoMNdAaTPyUPLpChrWpZJEbupj2PfJzcE= 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=iTAn6d+a; 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="iTAn6d+a" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2n7PX024173 for ; Mon, 13 Oct 2025 10:04: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= Bn92h9RApZSfqikarJGJdkgvCyYOoKZC0dM4YRCgEQI=; b=iTAn6d+a7JxB4Jq8 a1/LlCuzuVZft7hCDhSYYQ+COLTT3C8u6I4RvHfJCevpLl3F0zW5rnEjJ6E1JIxq KRjsMiNQkCqZrDHvAICwbS4UcNDBe8coppD54iibRG3hEWi/T7AePvM1dZK7SApB cP9KTS6tBF+9v+mGteTmu81apaY9qM2A0vBRjvQGYw2a2E/5feaIyjjoveIcnN/F Iu/9JnJTPRRNH5JO+6dT45C6a3uVJh+fiZcAUjpTk5k4QN9EIkYUmAwVcqHwHO96 dkAqMWAL3/xeY9Jr+KfcwdS7oEtZwQ19MHcqt383WRNbUfZYJdDvDxfxeqrpFMQe TmrPXg== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49qfa846g0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:12 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b630b4d8d52so7445791a12.3 for ; Mon, 13 Oct 2025 03:04:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349851; x=1760954651; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bn92h9RApZSfqikarJGJdkgvCyYOoKZC0dM4YRCgEQI=; b=Bwyu4t3QgU72EFacQ8TJvIhmdd5nNE3tGUsio7bFucXdTBdXNTbze7kAoMnMfAnhQ/ 91qJZLREZMkURmyhYNGXX1KB3INw7Fho61suN15w6smWpm/yVvtvA8hRrijYvA7W9t0c qdh5ha5TGtQOJvibOWdgEuOQSAKTxFwZ54pMz8lWXPIzNFM4GCXLenzb7uHaXFZuZveg 4e2wp1tjwQJtttLrCS3Z+pSLy6XkU83mUI6e+ny8C31QZjF0E6STkMUrxeqEmIE6er1u DRfzjXyoWpv3U2lVA6LqL4a4IhmkdWuoPbDLAhd4voqUzNzinse4jX0DosK/iIAGuzY9 dwlA== X-Forwarded-Encrypted: i=1; AJvYcCUGIgyKmT/BxNEo47mkISqYHlTb9ZVHyltZY/yvrpbBAk3FwpD3OPtlauvH5mioobL2rp6gtd82M9u4s6M=@vger.kernel.org X-Gm-Message-State: AOJu0YxGaX3I+g1p2D0ea+5rNUPMx9+SMcOOoZTT46H4vo3l9R+OB0G/ 138t+6XwIuV7YOia8TnLAGJh60jONU+2njv72Ri8MZe5ihOyA/1lnqw1o+oSk/Un5vmhjrF5ug1 /ImlNshRcTyQ3iexYaoqxSSvnqsOkPvC67TxIRXUmSpCCPMGeCOQIskvkf+uDdDbvoqE= X-Gm-Gg: ASbGnctIoWC+eDqXE74345RBx+GHC/IyirrV47QvP3p21cENUoOYUJHkdwGwNzBBq7t 8xxMnkoKXH+8SkHy4cTGJhcOofyr0zpL7vXKSEwWM69BQ4IautFDKuPnRQ4ragy45ocM2j80gmu Xvba8oN7pPyLy5pdmwgT1kZjLAPvuDFnMGiEv9OJitoxygKLeEA2AvyL8uqTrKglnZOMxP9FnmV CcCZrTW8Dqhp4tRdCJ2HSKvqCVovG60IfA5Z1s/k5rbAQHvj2CPzaUCYEtpFhOUz8+WqhJOXpiu QOYSAz4m4C3OuXKEEqdvaQxRwoj56Td7dfmOodA6kN+sZtl3qTifxTQKdWmP/lidDmY= X-Received: by 2002:a05:6a20:9146:b0:2dd:5de9:537d with SMTP id adf61e73a8af0-32da7f1d974mr26039421637.0.1760349850566; Mon, 13 Oct 2025 03:04:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHkepsAd/sFmmzOQMnmuosORBwE0j45YLn3MYyiStu4O0jdvLq1kf45fEz/ncS3MkAY05DfHQ== X-Received: by 2002:a05:6a20:9146:b0:2dd:5de9:537d with SMTP id adf61e73a8af0-32da7f1d974mr26039370637.0.1760349849911; Mon, 13 Oct 2025 03:04:09 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:09 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:11 +0530 Subject: [PATCH v5 07/13] 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: <20251013-kvm_rprocv5-v5-7-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=4507; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=8hZm30CWvb7JLW+d0khgV1UhhQZmzpIiZ5CwI+qm9/8=; b=N85JGHOHG8LetyCjmUjV3FsTNYA/tv+mBZg0IQn7R0FYSTAHR31+Z7owFVcYXIrgd0alVgb6g Zn26aw8i5bSDHq0uuvCKt9IysJ/RKm+3sjjUuWF1CxO903ylwPBrYWE X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-GUID: kzUA1PV595al1qj7wLnwRjVuhGRrYWlN X-Proofpoint-ORIG-GUID: kzUA1PV595al1qj7wLnwRjVuhGRrYWlN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxNyBTYWx0ZWRfX5XP/yu2B7yf6 e06yLbFbHxHnJQydKpYj4MQ/2VPUE9WYWjPtNvYJLVBbrA9qF6g8YGmemu7CaPb+HAIzd2bL9PU aO7DhM5kGLUR4f0jJUk/SOoaW7xWCUSASnDyfQ7MI7quwOcEByXCSFGBSitllwO/WGP+4iGYGOv 3inGhDZOGq659jRXFmSaO6j2Bv3mmyLDkr9IUXVU713OwNBlLCqjCuPqZBu5qOxicqMBu55NOhi Lrvr83KWbqb0OhpONuG/tsK9b5Jo5UkhHF17QUvUwJdyTF2pKUIGYkYLcpqh/eac6Hbra2E7ihi iz6qljxaTjuFncKYfwHAH2er1dC7I2aougc1ZASC0ytF8Ml2PPHZkzC8eYR5uk6r+Vy9eHgM0gB JcSw5kwSadEPJ841shRtjT339rsrbg== X-Authority-Analysis: v=2.4 cv=JLw2csKb c=1 sm=1 tr=0 ts=68ecce9c cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=XGel9bHSJmg9pP0w-tEA:9 a=QEXdDO2ut3YA:10 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 phishscore=0 adultscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 malwarescore=0 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110017 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 | 48 ++++++++++++++++++++++++++++++= ++++ include/linux/firmware/qcom/qcom_scm.h | 2 ++ 2 files changed, 50 insertions(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index b11a21797d46..a66e782fdb68 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -770,6 +770,54 @@ 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; + + if (!ctx->has_iommu) + return qcom_scm_pas_auth_and_reset(ctx->pas_id); + + /* + * 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. + * 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) { + dev_err(__scm->dev, "Failed to create shmbridge for PAS ID (%u): %d\n", + ctx->pas_id, 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 7c58d26ede24..e1de3cf73451 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -78,6 +78,7 @@ struct qcom_scm_pas_context { phys_addr_t mem_phys; size_t mem_size; struct qcom_scm_pas_metadata *metadata; + bool has_iommu; }; =20 void *qcom_scm_pas_context_init(struct device *dev, u32 pas_id, phys_addr_= t mem_phys, @@ -89,6 +90,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 Sun Feb 8 23:42:36 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 2059C2FFDD6 for ; Mon, 13 Oct 2025 10:04:16 +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=1760349858; cv=none; b=KaDHG0fveMF1PjE8ZYQ50RpsQNwDOGTCuV5G1tfjKizA099WQpmGlXnvFEn5OSgu6J0+j967n2B7Y4/9X2Y5FGYz/t1TiiFyaRFzA1fYWfL5kMHe4NXxtjdlATIQN7KZEiKA6nb/HlFMAGZlxvbXNk5isZm08DGWDuCZV6aIOwU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349858; c=relaxed/simple; bh=mx+8fFZ5SgEiJcGilO58BFpsLap7iEGUEYxIj4lgzR4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cZExgrjTXaC5xGj8A482eBiDxZ8iS9C9nL/VEWPk0bcZfnchBe5ifWG/RT2ofRemQ9RIeIqAkuNa+MTi4f4U+r2v5qr1n/IGT7MKTjDIuqmgZ0k2gzPqGAvve8dllAvGV7tdQEkZXeSRKFVFKZF5/MxMTggroly1TdKc5ZTKTYg= 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=gk3QdRKH; 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="gk3QdRKH" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59DA4E0X000377 for ; Mon, 13 Oct 2025 10:04:16 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= SznCyvMyhwcUfIited6dpYaRgv3z3E+TYRFZM//iF9I=; b=gk3QdRKHFZ14GSLL 2By4+Z6e8qupS5+7wwH/3TYoxJZ0IO4VQ+EWd+VTyxIXwQzIid/5hCIcm7GFFShm qbMeboyZ1yNR1LJSM8X9thSTwo0ENhG6Ec3BnaEXloNQezYKtQC6RKqlQtV1a9c8 xsiy0qCgMmMVNlQ2CPYr2DGuWJVtaX3fOJRPC+6h73Ab+z4J6SBqTADw0Dmw5BVU Mcff7k3AURART9qDsFHgCPi3ciqu+0sQ4nI3PqMGER6Ph5wfGwrj1X452agW4nkQ pjLG/zXKVLsCf2zb1zVVU7tV3Dak9aPKqkhrD8GW+SAss12DSW/7cOxIUdWMTppZ oATpdA== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49qferv6cr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:15 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-7810912fc31so6989055b3a.3 for ; Mon, 13 Oct 2025 03:04:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349855; x=1760954655; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SznCyvMyhwcUfIited6dpYaRgv3z3E+TYRFZM//iF9I=; b=xJYWx+lZcMDSzg6vUao6D6sZ6l67+Qbu34T86uFimRKM2f3CCoMLA4/Ng1454gbMPf V2PEgauusCUmXpyvw9pbyyrwFaT8wlWJ7dLGUu5RfogEJcH09q8NL4/jUT4Kf9kB4snc eBrEw8V220VrnMDtCeuVjyKwtlBGqZMnHEOfVwAmOCwbyLIMuEC1bzp3C78nPMGnaioZ 8IEK4umBWoOOGJ7LRs1qhqX9V9xk9lYjeSO+TajPx9DQiEFn1pvS5R9yem6iYQWvWamu HqR+uIZFHM1ugCQAlcU6WGKSGKFB7xJIq67OjBObn8PtNKszFu3CSWWgDFtTE3ZikE3e NJQw== X-Forwarded-Encrypted: i=1; AJvYcCVKGgFMqaNbMyYZVv+ZJU7Ctw/8PEh2pPWDJKMkeFPNljAzcZHnl37IrkRhUChRLnTnI6ZhnvNlJr38GGE=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4UR1yuzT73vHQKLQSvUNp6hzvIM9AU0zMa8kiQtb9KuwgTaBo G8uYQENEuRJIotpsmHtzbtqwG7owkD7RJ+28hHxG/4EKvva9D8vSfLU97lwXc/kWYxii4cIM2dK RhxH84KlliqXmHgVogFNVP1ePL6O5Mz12DmoTU+gXrfRsAEgeja1bPLzkKj7h71Juj5M= X-Gm-Gg: ASbGncumDrYevnPS+T59xXjo6oKAQzJdesUmTbByjN4TR2/z6Ignr07r8IW8VGfAdNQ 3UW9Wt26nQlfrJteHeCFt8ntv83ARVwt62WLy75a26SOKE1CvoZo3Ev0lWyU6i08fwINwnECGZY W5Gh70m6TUkez02D0AzJlv+b03XCztxYhi7gtJ8KoEw3yOQMOAFDw31ncjZutjBkJsSQTQtk4ww HkOrd83Zo4633Qkir6fzgBzxhneJU4zBrj9DS7xqzGIz5EQztvG2nIftXs9MOcQTmLkrF//2iWr ZOuPzTRb/XcPj8LAvo1EUDBUO0aHcudoy8cm6CmtH99tXjx7M7/s+sb6SeRxvtF4H5Q= X-Received: by 2002:a05:6a00:198c:b0:781:1b5a:959b with SMTP id d2e1a72fcca58-79387ff6c75mr23603117b3a.30.1760349854468; Mon, 13 Oct 2025 03:04:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEpSRuZwIFsrr+kG3rfjyzZVQNlapZ69eTdIIxj3WusVLk9bzE0CEM/IEmM0jCUHWQCfztNag== X-Received: by 2002:a05:6a00:198c:b0:781:1b5a:959b with SMTP id d2e1a72fcca58-79387ff6c75mr23603064b3a.30.1760349853786; Mon, 13 Oct 2025 03:04:13 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:13 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:12 +0530 Subject: [PATCH v5 08/13] firmware: qcom_scm: Simplify 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: <20251013-kvm_rprocv5-v5-8-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=2873; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=mx+8fFZ5SgEiJcGilO58BFpsLap7iEGUEYxIj4lgzR4=; b=Omeioh9ujJZWgFZl1SDaFa+qeBQNnmegvgIdH256J8zjHcP025NXBjJnWK3xT5+HbMmdK8Q11 sSA6MMmp8gKAyLi0bFIsrrvxo18GWsfOzCxXoI4rS9NyOml24nkEGDg 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=R64O2NRX c=1 sm=1 tr=0 ts=68ecce9f cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=fj9IEy4R_8UuhkAraiMA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: rFx2Q8qgRALOFRvCVI79Yv5hrfS7baCX X-Proofpoint-ORIG-GUID: rFx2Q8qgRALOFRvCVI79Yv5hrfS7baCX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxOCBTYWx0ZWRfX8imRlQJ1ms2K jMDjSZe8VGY099aQAbJ34nVKXNDY7nTXhF8x3Mep93Yazh+qGjzZjrmTCoG8QbuidpsLR/Amf5S 7clDuPufSL6m87MWn1/6Var6ne99cvuEvF7sCz/JYikAE253jZOna5c+wdBTa2AmUBhw9nkP4qG KRfB1jycaLIP1e12NYedoMv8ltl/y9vzl6FRGxlczMjcJfiOmATFsspv4z7dRkLhyZ39XWnlaQt JZE6OF0sBB9QYYuUp1S0Zy/w9Wc1EP+PHtM5gUTs91EqIvCPsiW2Pw9LUAB+St0Y18bK7jF2FFm bGFnHWZ9L0JJLlYYQH7fIIuJLkvXeo/RC+wFGwakpaiWFhJK05fbTCM+uYeiXUDzoCvIxHGAS9G hDFNJIN3QUgy0kZBTx0ZbIXOGbBzdQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 adultscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110018 Simplify qcom_scm_pas_init_image() by making the memory allocation, copy and free operations done in a separate function than the actual SMC call. Reviewed-by: Bryan O'Donoghue 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 a66e782fdb68..eb79fceda92b 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -591,6 +591,37 @@ void *qcom_scm_pas_context_init(struct device *dev, u3= 2 pas_id, phys_addr_t mem_ } EXPORT_SYMBOL_GPL(qcom_scm_pas_context_init); =20 +static int __qcom_scm_pas_init_image(u32 pas_id, dma_addr_t mdata_phys, vo= id *metadata, + size_t size, 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 @@ int qcom_scm_pas_init_image(u32 pas_id, const void *m= etadata, size_t size, struct qcom_scm_pas_context *ctx) { struct qcom_scm_pas_metadata *mdt_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, mdata_buf, size, &r= es); if (ret < 0 || !ctx) { dma_free_coherent(__scm->dev, size, mdata_buf, mdata_phys); } else if (ctx && ctx->metadata) { --=20 2.50.1 From nobody Sun Feb 8 23:42:36 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 151762FF15A for ; Mon, 13 Oct 2025 10:04:21 +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=1760349862; cv=none; b=Jv2udTY7UujT4uLl0m5KHq4XvfN3YpWHoWAKvWj6hjctD6mDuELTTHvzbvEK6j7D17xoTEEmL/GDdOsAfoJxac1n4KHYYTxoCBMMiEzPUZjTNrTT2n3Yw1UEasoF/XtL4W4b+vp/T8zqQKjUJk9kixgOK/izFcDmDORuCwm3b58= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349862; c=relaxed/simple; bh=YDMPLpDHZzxufhKY3pUfh7AmMazlGytDUcCpJKo4orc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QKjJUjZyGY7lY6JpZRifzbwuDacdzDE8pc5SeAaTxOuWQE6lP/mdAbdhd5a3d898FYnQkJpVDv14c3tmEA7fyS0AUhsC3OiHLsRNWfC1haZMdSDvEYg58Ah26N/nzW8t2o8vJlNzlE6zf+YGuxnhO6aBNITjj3QC9ha9ULXyU4c= 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=EzFmC7Jk; 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="EzFmC7Jk" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2nYS1029679 for ; Mon, 13 Oct 2025 10:04: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= w4HFDfAUy/D7959GditzeNh9D7CWq+9RRUqsoHUE3ks=; b=EzFmC7Jk1vQuv9At XRxmDy4EyEqpMmUdNQuZneJwQ1J2B3rJYray/yZeOAWH9sSbNTeBX/8zig28CoRD DB1LR+o5wSoHhbzoW7A6lT7NZn8KR+VwJlaOEqO1ucUHz7tVy5as6ZaVWlanJoU3 /6QI2aUYF9gvv1fCzvhC6jTtmcw8oV8ErkpGHRHlF8H1qYlnccomOlv/0c32ZLwM zV7vo8V816TtUdhdiXZbI+UOe65Gn+Htyk7wYX6nTNWguIsnRyH6WYOxphjDJx4Y cF+1rbFRp6XVj5t9OW6lWmTbPmZNwbgV4Rvjls/rwOOQJL2Z6W1abV9YVZri8O0h I2xkEA== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49qfm5c5tg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:19 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-78105c10afdso6958092b3a.1 for ; Mon, 13 Oct 2025 03:04:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349858; x=1760954658; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=w4HFDfAUy/D7959GditzeNh9D7CWq+9RRUqsoHUE3ks=; b=VOcLhh8VeKDSGOBkOCdp030ZN2Bo7z/SqR9+1QHifNTTDVfuYoNvOcnLD1wBNvGmAq 0x1ZzRcWxxN9TX22oKJ7hSezVc8r+jZK+c3lkj0xo0+Khkd7ek12ed+c5ybKwWRHPPqS hCaAUzdCRjNP49N7PTtFbcx6RG7B+VJy1dPEUg0ZpM4Dne6QdgRpz6WOruzQjwmMnk4O yJWN9RoUTff3G/e2pQt6482aH6j9giVtBjJsiy+gmYyzHZdViYKQo60CunF8jXlVHg2z Yuk5bL92F8Wn8RH7KG0pmHLpfb+khf9omkWJpNYf2Z8M2HnAdyIo4gouqsexwR6S3CUe FY3Q== X-Forwarded-Encrypted: i=1; AJvYcCWLPecHEdIXxveIyPXmgojSxhNEye8BhdhYzKK6HzB7CRa32r48AaY8Qy7+W9a/oip290yKS7IpxF25TaM=@vger.kernel.org X-Gm-Message-State: AOJu0YwpbdhiyBDWp1nAKSMBdWhaE89KVaDjpsHErJ+rgpZibKpfxUh1 jMo1jOvSaw/xNIWp6Zk0Mv9Dl1i59CUAoCRZ6iVN4vRxieCcJf8W4IQ4vwE4xHU1SDubW8IW9yw +DJHzjImfZLZeU4gJDbxiFw58JPeOnF1bcgMXYPumu0kbJ7PevhUV7cvNHlmVpMdzMJc= X-Gm-Gg: ASbGncuIvV4TscviuPMYEZ3FXukD0w0GGLkEQwwLbskUEBtPWqN+QW0SaHmUcOuT1wW 9iZw6tBQblomcPAHD/iUBH1YSsXu2KV7DbYtkNZkegHPQUt9G8QyM00qfUB/u/tP3qz305aNg+3 XVatLgaw9wIvX4b2SwY79du1XxVuXx7ttbPJ2BaBuuPdq2wSpoh57HHWbT7/L1UyEZ+ZgTbXx7B au1VjiHAlJI58JhZFmqanfssJI+qAioV59MebCU3Ve2TOv9cf1HBZ03k2uzZufG0kRMptBVPq0d Q8CKS8Nao8JDH/RDlYYnlVGJlAfa6rQpCiJ9sJ7EOx9cUID+lIWFkJ0d6mRIjarxhbs= X-Received: by 2002:a05:6a00:4f88:b0:781:1b91:8e34 with SMTP id d2e1a72fcca58-7938772d557mr26761137b3a.28.1760349858126; Mon, 13 Oct 2025 03:04:18 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFX7SuPfaWBoBU1c61TDEE7y27KtJet+JBArrhJO0Y4AjsUqNpZKgNRIqFb8ueVqfS34JpgEw== X-Received: by 2002:a05:6a00:4f88:b0:781:1b91:8e34 with SMTP id d2e1a72fcca58-7938772d557mr26761083b3a.28.1760349857606; Mon, 13 Oct 2025 03:04:17 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:17 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:13 +0530 Subject: [PATCH v5 09/13] 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: <20251013-kvm_rprocv5-v5-9-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=3703; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=YDMPLpDHZzxufhKY3pUfh7AmMazlGytDUcCpJKo4orc=; b=aVCuv8HAN0gr7ZbEhd8LnvFa8JOylRRseCLxS6oLGwXqCZtbX9K/hXTP66B0nOyINvm8CUJgp /xDEu1o/NeyC1ursXhuyK5/uvbeX33M2i5A20NenEYUimaT+4/FM0zX X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-GUID: KbfaStrAup_kFDqRZ9v4SxkQPASRDY1R X-Proofpoint-ORIG-GUID: KbfaStrAup_kFDqRZ9v4SxkQPASRDY1R X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAyMCBTYWx0ZWRfXy12YX4WdOacX xAKNN08sWY2vVpPrVN72VNa+b2VUdnXHd4QxvvCeaDcdtSZYKvZ0pmrqItEmtB4yUw8VfhsFe5F n2f2JYvWKVPUbSp69N3TH54lpNyWu186AeWnGspIXbN/ER6YJjqIiMhg+wVK3K7jkFNgSrHtm6t 2TgtXBPO+DLz9JIWl58Ab4KvX/4TG0L6v6pjHfFYn27qD2M/fdchcLKPTUXJVaPQr92XhdQZKk8 JvZ+G8285eQQZOzcGo9/IzVOcp6GMJem+dWw71BihgI+Wtqj76Z44yv7r9I/EBi/Y6Ua7jgEEEg hcQqDDIKS1Tf4FHT4OGKeORukAB5gRP/MAuXl+V+Bj1qjU8Y20eCA7sPqQ7Bj+UKvzbJ1IWQuiH O4EtD5G62U9aBBUTWupkROZpPv5W5g== X-Authority-Analysis: v=2.4 cv=V71wEOni c=1 sm=1 tr=0 ts=68eccea4 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=foeKZLzp1bqqI__vITkA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 malwarescore=0 spamscore=0 adultscore=0 suspectscore=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110020 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(). Signed-off-by: Mukesh Ojha --- drivers/firmware/qcom/qcom_scm.c | 44 ++++++++++++++++++++++++++++++= +--- include/linux/firmware/qcom/qcom_scm.h | 5 +++- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index eb79fceda92b..c545f7114237 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -622,6 +622,35 @@ static int __qcom_scm_pas_init_image(u32 pas_id, dma_a= ddr_t mdata_phys, void *me 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_pas_metadata *mdt_ctx; + struct qcom_scm_res res; + phys_addr_t mdata_phys; + void *mdata_buf; + int ret; + + mdt_ctx =3D ctx->metadata; + 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, mdata_buf, siz= e, &res); + if (ret < 0 || !mdt_ctx) { + qcom_tzmem_free(mdata_buf); + } else if (mdt_ctx) { + mdt_ctx->ptr =3D mdata_buf; + mdt_ctx->addr.phys_addr =3D mdata_phys; + mdt_ctx->size =3D size; + } + + return ret ? : res.result[0]; +} + /** * qcom_scm_pas_init_image() - Initialize peripheral authentication service * state machine for a given peripheral, using the @@ -648,6 +677,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->has_iommu) + 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 @@ -673,7 +705,7 @@ int qcom_scm_pas_init_image(u32 pas_id, const void *met= adata, size_t size, } else if (ctx && ctx->metadata) { mdt_ctx =3D ctx->metadata; mdt_ctx->ptr =3D mdata_buf; - mdt_ctx->phys =3D mdata_phys; + mdt_ctx->addr.dma_addr =3D mdata_phys; mdt_ctx->size =3D size; } =20 @@ -693,9 +725,15 @@ void qcom_scm_pas_metadata_release(struct qcom_scm_pas= _context *ctx) if (!mdt_ctx->ptr) return; =20 - dma_free_coherent(__scm->dev, mdt_ctx->size, mdt_ctx->ptr, mdt_ctx->phys); + if (ctx->has_iommu) { + qcom_tzmem_free(mdt_ctx->ptr); + mdt_ctx->addr.phys_addr =3D 0; + } else { + dma_free_coherent(__scm->dev, mdt_ctx->size, mdt_ctx->ptr, + mdt_ctx->addr.dma_addr); + mdt_ctx->addr.dma_addr =3D 0; + } mdt_ctx->ptr =3D NULL; - mdt_ctx->phys =3D 0; mdt_ctx->size =3D 0; } EXPORT_SYMBOL_GPL(qcom_scm_pas_metadata_release); diff --git a/include/linux/firmware/qcom/qcom_scm.h b/include/linux/firmwar= e/qcom/qcom_scm.h index e1de3cf73451..583490bcd38b 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -68,7 +68,10 @@ int qcom_scm_set_remote_state(u32 state, u32 id); =20 struct qcom_scm_pas_metadata { void *ptr; - dma_addr_t phys; + union { + dma_addr_t dma_addr; + phys_addr_t phys_addr; + } addr; ssize_t size; }; =20 --=20 2.50.1 From nobody Sun Feb 8 23:42:36 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 DE7262FFF85 for ; Mon, 13 Oct 2025 10:04:24 +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=1760349866; cv=none; b=Y3Hpp5/F0GXXXdpHqMpG8OtQrkv/jfVe0Xn7x7WZ7c826+Ap8gXIFQBzUUxspjf7PZuTSyDsHdyAzbWYLcazryd+r22oH2NIuYgwt2gt1Z+xL7/TAhjxhMuuuClBJZWpOTft3a68ugwYRYvRPX9F0H/rwyddbgkc1H1JCj9uGic= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349866; c=relaxed/simple; bh=kjVtxPzOLRGso0vU4B54+Y59E8Vnf+0HG+doVeMZVso=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HKGWiqbW2isYwENJ2H4Ay//puSOV+QE7Gvoo2whtKlGuqsQXiqygufwYK8Mvurj03rIUG2VOnuFJFRnLs6ywhKaP/M2UEsfAgnGMi4kwdnTRlIs6/9vL3RviF05ZpoId4Dl+O1Pp6xxSAO9Hw+2MVJUaYSz0v/1iOdm43fmWllA= 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=Ye8wI1K0; 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="Ye8wI1K0" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2nDos017649 for ; Mon, 13 Oct 2025 10:04: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= 4vXzbLO78rcO3xwVrwxMmm/zZa8//7g8fOD3hfG1jyQ=; b=Ye8wI1K0LbtlQMSJ JYJjQMgwrQFXRMu3gjUiqXBhP8FKbIQmtTd6xV/5TpmeqvSEpRHLj0tSr2yZP4AR XgWnMOkm9Fxl5Ru6yu5UR5qFYrK2iJg/58GLB4LmhF3OzTfGyM9137EAFqWfw1x9 lM5CgFYhK34j2QsV/4eoKJv54WqPGSoBiR0KpVPNVFEm/3WMjElKFk+e6QVn/+MX uNF97QyeMRcTjIepxE5NSl9WgjCJhkSmWVddXmqKu8z46rX7Db5Ko1v5cRKQgPDV QSid46gdKAKZMq7son783JPHUbIRaIe+KNudUqdTvff0bHcMKw6I7ZLVfdHPnA16 AVJtlw== 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 49qfdk45g7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:23 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-b4c72281674so6033900a12.3 for ; Mon, 13 Oct 2025 03:04:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349862; x=1760954662; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4vXzbLO78rcO3xwVrwxMmm/zZa8//7g8fOD3hfG1jyQ=; b=VJuBRpt0KwA+ioSEj5njIhB4rKu3i6Cii8GUTUWEsCFG62QGFZ+vWN85qHXxi2XoMf EGn5AQRQJhfi7l24lmi7BVhQsoIuK+HtRUL9NmLAH27nIvd+kak4VYu0d1X/7QnPhfgj c4+gRfP5w1q1qVIrPNW31N4k3MDYX6lM1nXSq1aa8z1/CSK3XwnnGXlMDiChlIRQD56Q FuG7uqfvjXWp6vo5hfY4NPomGxaEtc4TLKBo20RIQ0D2s/rbfHXppwTzVM0yyi25G53J tJk8Lt4Xr31Pb3eC4a6GdmeK0XttfSpFCNNaMIWmtJl2vbUcl7No6SagWIHLgj8IBNse JKzw== X-Forwarded-Encrypted: i=1; AJvYcCWqFASXkYMJyHKPJRXfU3GUOtZlYzkkyQrdMW2dfN3x/wYMP1gB2t1vnTLjIb2zGyNizUXh3Drksi1aywI=@vger.kernel.org X-Gm-Message-State: AOJu0YzicmJ6WKsO55FVSv3M4/npfduWKlMHEaOSOcGccXj6AdBK7gLB +uLLJKWdvrAWhFVSWnzWm26xoXu0nLRSs3rFhLbu+NfNoYwCIzq25sVgXEaaJFmCdRxvZLwSwZd TLHEAPP2KyI1DI0KJmuVmKSVXykegt1m+lRgV8OhHgyT/4XCmFRCkd8Z/0G6koppIdX4= X-Gm-Gg: ASbGncs9AYFdaWbnIeijaRsVP00nga2QVSXBOYpCesm8LwwFknvtZRghlUCdVA9g7Ld Hb0ZCtwBmT1pkDEIL/rxfmHmdSFoZagZo/CZ5TH9rjqKU4IWelTrEz0zAUVujLhLBF1CgY16wtx zwM7TOyunLeP2IZ4Fx7drQeSLT7V9fxmNxJqisyLGfadNGws5StOPGDi0TrFx5YKqQJsVZUNODr helxXz9ctsRue0Sd+ts52Jt0Ht3kkU6KEXq27fyOB85I0Fu3w2aPnZwNNpYMim1KWcVTX0Z0UOw 30iaTswB/YmrquH0PvkVbYI5cqiVGGNohaveE7+I5Wu76lkByihVB0W5qMEe9kjNDgs= X-Received: by 2002:a05:6a20:728a:b0:2b5:9c2:c579 with SMTP id adf61e73a8af0-32da84ea53amr27494423637.54.1760349862086; Mon, 13 Oct 2025 03:04:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGHjKF39GTVChZps/+nFfoBBBYbtFiqNHuQe7t5jZYmEFE9ZSrhGho/Fw/lVhgCuP4Uk1rn0g== X-Received: by 2002:a05:6a20:728a:b0:2b5:9c2:c579 with SMTP id adf61e73a8af0-32da84ea53amr27494380637.54.1760349861449; Mon, 13 Oct 2025 03:04:21 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:21 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:14 +0530 Subject: [PATCH v5 10/13] 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: <20251013-kvm_rprocv5-v5-10-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=9173; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=kjVtxPzOLRGso0vU4B54+Y59E8Vnf+0HG+doVeMZVso=; b=G8rTMN9ab6p0tHEKyArmHAsG/LwzwO3BPVqDgiBygQBu/g8lpf/wXbPUBbiJKe4eu11FfHsgQ kEPdGMSHjDnDuiwEkarFQ48xWHCafBuUI9CfS6jKvB/rqDeNHC0jdpZ X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-ORIG-GUID: 6nQFjyQVomjiK9sg8Zyic8NUJKuhT0Uq X-Authority-Analysis: v=2.4 cv=MrNfKmae c=1 sm=1 tr=0 ts=68eccea7 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=KFEUUOXM5gBsW3BA6b4A:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-GUID: 6nQFjyQVomjiK9sg8Zyic8NUJKuhT0Uq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxOCBTYWx0ZWRfX9UE27qBhnaF/ lrm4+T3P2kpyg8NXi8Iu8kKQrmeRvh0meSfHq1bYXnFUfoIASOQykwj5Sm7Y16/B5pxGCVc2lkk ZN/JHobmC8GMQKimuqc5jdAt6r8CGUayPHOrEZ8s+QubUAfNnWaCY/Bf8rRhWq14VW+30U6uNpc EeDh9taF7pAHskIfV+ETzNLepY8htvJ1mX9qJeALvmp1pBxdZYf6AjFrMmUjk1jBNaHR0aykRBO 4KdA16IDSWqTaHdc/g9q/5BaXaxztdrP3zzJ8G5K17drF/GU4Rw0AomEswfd50AJ+IvH1fvggqp +8L9QwHeJx08soNHL60FSrBSndnbEbBLFcRZ23gdxpuVYrR+vSwfFdgYuETBPgE2x3wpiq7ylCn 06j0fRpHHq5Opc5QGkf2sSb893P0/A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 adultscore=0 phishscore=0 impostorscore=0 priorityscore=1501 malwarescore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110018 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 output_rt 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 | 157 +++++++++++++++++++++++++++++= ++++ drivers/firmware/qcom/qcom_scm.h | 1 + include/linux/firmware/qcom/qcom_scm.h | 4 + 3 files changed, 162 insertions(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index c545f7114237..3c554f3e8536 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,10 @@ enum qcom_scm_qseecom_tz_cmd_info { QSEECOM_TZ_CMD_INFO_VERSION =3D 3, }; =20 +enum qcom_scm_rsctable_resp_type { + RSCTABLE_BUFFER_NOT_SUFFICIENT =3D 20, +}; + #define QSEECOM_MAX_APP_NAME_SIZE 64 #define SHMBRIDGE_RESULT_NOTSUPP 4 =20 @@ -779,6 +784,158 @@ 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 int __qcom_scm_pas_get_rsc_table(u32 pas_id, void *input_rt, size_t= input_rt_size, + void **output_rt, 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, + }; + void *input_rt_buf, *output_rt_buf; + struct resource_table *rsc; + struct qcom_scm_res res; + int ret; + + ret =3D qcom_scm_clk_enable(); + if (ret) + return 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_size =3D sizeof(*rsc); + + input_rt_buf =3D qcom_tzmem_alloc(__scm->mempool, input_rt_size, GFP_KERN= EL); + if (!input_rt_buf) { + ret =3D -ENOMEM; + goto disable_scm_bw; + } + + if (!input_rt) { + rsc =3D input_rt_buf; + rsc->num =3D 0; + } else { + memcpy(input_rt_buf, input_rt, input_rt_size); + } + + output_rt_buf =3D qcom_tzmem_alloc(__scm->mempool, *output_rt_size, GFP_K= ERNEL); + if (!output_rt_buf) { + ret =3D -ENOMEM; + goto free_input_rt_buf; + } + + desc.args[1] =3D qcom_tzmem_to_phys(input_rt_buf); + desc.args[2] =3D input_rt_size; + desc.args[3] =3D qcom_tzmem_to_phys(output_rt_buf); + 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 buffer with res.result[2] size. + */ + ret =3D qcom_scm_call(__scm->dev, &desc, &res); + *output_rt_size =3D res.result[2]; + if (!ret) + memcpy(*output_rt, output_rt_buf, *output_rt_size); + + if (ret && res.result[1] =3D=3D RSCTABLE_BUFFER_NOT_SUFFICIENT) + ret =3D -EAGAIN; + + qcom_tzmem_free(output_rt_buf); + +free_input_rt_buf: + qcom_tzmem_free(input_rt_buf); + +disable_scm_bw: + qcom_scm_bw_disable(); + +disable_clk: + qcom_scm_clk_disable(); + + return ret ? : res.result[0]; +} + +/** + * 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. + * + * 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/rsc_table.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: buffer to which the both static and dynamic resources w= ill + * be returned. + * @output_rt_size: TrustZone expects caller should pass worst case size f= or + * the output_rt. + * + * Return: 0 on success and nonzero on failure. + * + * Upon successful return, output_rt will have the resource table and outp= ut_rt_size + * will have actual resource table size, + */ +int qcom_scm_pas_get_rsc_table(struct qcom_scm_pas_context *ctx, void *inp= ut_rt, + size_t input_rt_size, void **output_rt, + size_t *output_rt_size) +{ + int ret; + + do { + *output_rt =3D devm_kzalloc(ctx->dev, *output_rt_size, GFP_KERNEL); + if (!*output_rt) + return -ENOMEM; + + ret =3D __qcom_scm_pas_get_rsc_table(ctx->pas_id, input_rt, + input_rt_size, output_rt, + output_rt_size); + if (ret) + devm_kfree(ctx->dev, *output_rt); + + } while (ret =3D=3D -EAGAIN); + + return ret; +} +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 583490bcd38b..5cd9b2553cad 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -93,6 +93,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); +int qcom_scm_pas_get_rsc_table(struct qcom_scm_pas_context *ctx, void *inp= ut_rt, + size_t input_rt_size, void **output_rt, + 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 Sun Feb 8 23:42:36 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 054202FF17D for ; Mon, 13 Oct 2025 10:04:28 +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=1760349870; cv=none; b=nUQMdKhsNVBdjeTJZ0jHEnJ3jmYX1skZnY2yVjsfOETwwKNISWB3ECrxy0dCgzkBSPSYaq/cfOIMTyyTFsCoMqUg7vosh++Uln3O02VI1FuMaf/2b0uJ5YmTTfpu1pMC4JsBE780hd/YK6HPD+cZknXussbgh7G1/i6q4KNn47Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349870; c=relaxed/simple; bh=VNLUfg0VTMrMLAfssDOHBS/ywOaH/J6hWRjnKH7tG0A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QU/ELjTWfLFFgL2sarEW/GQMGTJ+9RxDwdnxUjFNpBEk6G40opYovz74pqR3QKOPSe60hYlpSmjA+C55xbY8OUszpZMDJCiDyWpeOZXbMVZtiWOf5rlhSNW7/Xg5XuR9iPzHssDqRHdFGFOmUpBCsZEeEb4Pf+c5mh7ClmP+bZ8= 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=SnNLzU+i; 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="SnNLzU+i" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2nDot017649 for ; Mon, 13 Oct 2025 10:04: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= KCuKX9XLPL59gzeynIkI5vcGYQyfxzjGKslvVQaoJJY=; b=SnNLzU+iaMBubhe/ dYgtEERFpo886G9lN+oHgvfDaCgWqQxx9xNdyu7RrlfXG0iqOhhcpMW1qx5EifAm sq+qAHTOlYhQF9JUSMcZ06DP3zquYqhXwfNJ0x2/w1ZKytBjoDpBe6NNLl7fUkIL s7/yzvtHgfZiIU/o4FwVRETUOvrAc33bmNq2K9usJbzXT5kudfKovfBUNNQSnXCJ NPBK9q8rd01lMk88WUbtaMOOob6cSTQAqizsMrDhSZPUJbY2/rBFrv00h6m2zc91 qTkRWpmJwkuErLH9jDik5L3cv1OENGzZWp0dBbmCm5COb0pGxMfoOTJad4eGiiC8 GUUTqw== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49qfdk45gb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:27 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-781171fe1c5so7239268b3a.0 for ; Mon, 13 Oct 2025 03:04:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349866; x=1760954666; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KCuKX9XLPL59gzeynIkI5vcGYQyfxzjGKslvVQaoJJY=; b=XcWjQaDkFB/JwWWq/bXkaUAhCc8YW5FqugQwA6HTKt5cTDMcH+75h0vikOoy0MnHCE hh0L7/seUtcM2n8CeVuXW6IzntgGfouTaUbDARaFUwuDh6hqbkNzr9fWPLMIesIWvbFk Sm9UlOq1FtOaeAHxwcLrtPV1PATNdFLBs7Gxg+u9zU7EJxYtA5OvBQ5sC6CzVjJ2UhQu DE4GheWKtiO0mi0TegZO9ROZYIxlNG6AT15KSJ8M48SJLRpDhyVHsoVqUrTgJYrmKAsz Q41KbarZDdd/P1rtFJo4X1OvLJig5klSYEXMixDvvtgXiwmetmrhlyUQNwj3ilz1hESL m2jg== X-Forwarded-Encrypted: i=1; AJvYcCWGgl9ufG5TS8PQSond9PM/jB0+kShA2E77Z/6pvwVRiR4CQRlhYoNUYLd6O+Ke9Z8j3qU8BMpDxwrAiXc=@vger.kernel.org X-Gm-Message-State: AOJu0YyUGfD9GPIqf55fRTTx0PFhARGmIQObsNDaC6e6nzVHTeHObi+/ i1EwHi/3TzHAVOd2/Zlr6K4201aypUNNNkhIb9eTskmJDjmmAleKCTcCT0SmKTg0Sk+hc30eFzH YC4p/Zmfy2gdC0cjGox+828WRA/nr+uoYmRBzsLSDq5coMXyq6/CkHm7AGkbkLhI2GKA= X-Gm-Gg: ASbGnctRtUA0B+U6Ot1O/9V360LEQMBYr3S7zDNB/uKwqAGc7OQ7XvXP01hiRioMj4V YJGss0Qz0KsavwV/Q3nZDTAdjH2Ca+6mWI/At9FtAs6HP6ArC8U9kN20uSNMMcbGUT07fj/+XPT acdhhq5sI0tetxwOnIcdKuTS7Mar2xg9H55JTu5dxGRuY23SPyPWxAe6I74wOrH0kfjt9gSbQTK 9/aTch8IbXC/B0NCAhIo4bfusupbQ/bgVCa7PeYlTTCwFz2htUsU4yiylBx5Dw7niCJWsn9g0dw 29q6rRuhD8f+TgQEr5Er1z9OWJszmk7E2kPB7xLmpB914f1cQCo6XW2XUFt5p3eAFfU= X-Received: by 2002:a05:6a00:cd3:b0:781:27f8:d2e7 with SMTP id d2e1a72fcca58-79385ce1171mr22405050b3a.10.1760349865992; Mon, 13 Oct 2025 03:04:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFwKFN5Yiqp2cQ01LwFms3qJjhy7wGHDj+GAyroqt4GpVGhRA0gNrqB6LOzar1OB3V2kYCqPA== X-Received: by 2002:a05:6a00:cd3:b0:781:27f8:d2e7 with SMTP id d2e1a72fcca58-79385ce1171mr22405006b3a.10.1760349865301; Mon, 13 Oct 2025 03:04:25 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:25 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:15 +0530 Subject: [PATCH v5 11/13] 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: <20251013-kvm_rprocv5-v5-11-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=4665; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=VNLUfg0VTMrMLAfssDOHBS/ywOaH/J6hWRjnKH7tG0A=; b=Hs0YWDva1dXdF1lXvU2TISdQhUfia8JQNTUeedOomuY7gru/DCU/Maw5FuqqO3Pt1lvS6bhxN hfHDTbHvu+ECLirErqtB9TiZKUyLcMkI1blaL5YCCjzckeOxPEDm6kJ X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-ORIG-GUID: dVN7A20Zbt2H1wppzo-9G_wlAeIDSfIe X-Authority-Analysis: v=2.4 cv=MrNfKmae c=1 sm=1 tr=0 ts=68ecceab cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=KMz1R6K7GWUeRkMKapkA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: dVN7A20Zbt2H1wppzo-9G_wlAeIDSfIe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAxOCBTYWx0ZWRfXx6hFfx89KPiD NmKV44xb03GEO6ZEAXjo2GQU3cxCqDXEAohg/bn+Ln9/yDHxXA50os6BQgdqqVdxUKarHYmr0Jt qaaNo5iy1DpNXkYCmyMKTJWcBvpzm81yfuOyid9H6DNm5F+1M/FduM42v8WQcIx5q7eeBI2Bw4l 4Ks5GEhgC5miUETquGCxKDkc3RuTN/SXyYhi5YVrgMOmshvWN5v811AsFsKqTBc1ANi+HUpJsra ELB7KkeayrHvFMkmNNgi2r/QCkpRwl+vFAg6LHdJvbS/SHYcycnbM3p5l06wPDvatQ4nx4Eni1b 7Ir5ZD0vegvTC+iI4lj7GanoFhsW0tYKPcwitL6+WZrs1NnW+6EA6kEwt5rhF3kkDxy8xoWBNHu V2AXDFgkawRO5QlfU4SEOPXZQx5Pnw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 adultscore=0 phishscore=0 impostorscore=0 priorityscore=1501 malwarescore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110018 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. Signed-off-by: Mukesh Ojha --- drivers/remoteproc/qcom_q6v5_pas.c | 60 ++++++++++++++++++++++++++++++++++= ++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index ee0ea35803c6..1944df49893f 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -34,6 +34,7 @@ #define QCOM_PAS_DECRYPT_SHUTDOWN_DELAY_MS 100 =20 #define MAX_ASSIGN_COUNT 3 +#define MAX_RSCTABLE_SIZE SZ_16K =20 struct qcom_pas_data { int crash_reason_smem; @@ -413,6 +414,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) +{ + size_t output_rt_size =3D MAX_RSCTABLE_SIZE; + struct qcom_pas *pas =3D rproc->priv; + struct resource_table *table =3D NULL; + 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 ret; + + ret =3D rproc_elf_load_rsc_table(rproc, fw); + if (ret) + dev_info(&rproc->dev, "Error in loading resource table from firmware\n"); + + table =3D rproc->table_ptr; + table_sz =3D rproc->table_sz; + + /* + * Qualcomm remote processor may rely on static and dynamic resources for + * it to be functional. For most of the Qualcomm SoCs, when run with Guny= ah + * or older QHEE hypervisor, all the resources whether it is static or dy= namic, + * is managed by present hypervisor. Dynamic resources if it is present f= or + * a remote processor will always be coming from secure world via SMC call + * while static resources may be present in remote processor firmware bin= ary + * or it may be coming from SMC call along with dynamic resources. + * + * 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. + */ + ret =3D qcom_scm_pas_get_rsc_table(pas->pas_ctx, table, table_sz, &output= _rt, + &output_rt_size); + 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 +481,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 +491,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 Sun Feb 8 23:42:36 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 879362FF143 for ; Mon, 13 Oct 2025 10:04:32 +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=1760349874; cv=none; b=S05E4aaTLgPCvAvuc1JRlivlYeP9snWuoTXAymYgJ5U3RXzi/kDk5crJc+UzXGilMIAf6psinYlVc+JRbdWhFeG+t5ZQO7Fwdakx75pST29n6SuAr4GUYJQBLUtfOvvWIz7LcJc1rdptC5zy9oJBYNDnY+THFMeky1MJPRE57yg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349874; c=relaxed/simple; bh=PcSsVEiFPVw9Hj0r3Zaw0afL6D0XfXjGyZQnPsqQL+Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GYnLI9hy4ACi71IFEXW2jLZEExBwhRl1HZ0dRNBK26GsISeFeu7Q0pLgNCzlL9XfIZiqBJzgIowEc0aPXBErxMz1lsVsIA/+4BoF6u3xz3ou0KnVTHeK/QU8TfbPShtzW9pXQEbe6YmyvQJxuVF76b38zXUTbF3x5dywSU4zBOQ= 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=MU/T3Qoq; 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="MU/T3Qoq" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D4pndc020626 for ; Mon, 13 Oct 2025 10:04:31 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= VW72Hhita1RvX2RpytT+dE+cfJmy3OUWo7tWQGrF+hw=; b=MU/T3QoqrCGdSodV PvHV3qzpsyviDxmMjAIXYkiK6KSDjc9FRZWcCruJyo76cQO1WR5XU5GnOWOOKhQG 7nYdoMK8NVVCJhspYe43D8FGGE+gfammT1iknpH06Ts9uStBFTlLEGhFv0q9+1f+ kHkxratoqFQVSD/4zMvdcGxFHTAT0jSlV+uWPatGV3xs2rSeZLSdWqvafvcn9Huk QsoLHy63xPduUD2b73F8umIxHjBffNRzRASmYAebvYWAgqoAcwE47xfVXBQ7G7AH TEOS9NvN7WvZypzcbSq1s8vPqEycJU+Coc7BIz9NeNOQMxvf6B732RC02lgMvYHc VD1iag== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49rtrt0x0g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:31 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-780f9cc532bso6364897b3a.0 for ; Mon, 13 Oct 2025 03:04:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349870; x=1760954670; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VW72Hhita1RvX2RpytT+dE+cfJmy3OUWo7tWQGrF+hw=; b=wLkGRW1YoVuvGnbCeuVikFm7YOELnD/4GJMblVz2mwjU8eyj4wLFfu8ktoho7pFoQU wBmDohFj4lLvv2JR/vMFqB9vDJGeyZl+EztaZC9CZ64c3FbiEDCjfeTzRKzo0PloKkhF QRFiGAC3vZKndzrD6j5GWP607TqRlIbVsisy66DpejgoGnrhilOZsPDJ9na+7ECT3Y8+ OmY2KcBagYL8Im82gPPakg6GQMukiqcSUJM9C3iXjzMWMGfuaX8q84YTVexLmFcr/XgZ B9jYBcp7md6QFyzv3csaWeER3jiuJBeUgnuTVYm4FsI0Obai1oJ6+uG0yTzdEpO6pnLx hifw== X-Forwarded-Encrypted: i=1; AJvYcCWps/DJ/7FOHWBSDtmlAJj7TeOHRmiMdv5VzuLYicyUHSC/15JpXQXS6vvyyiWmSyEccDeXMF/EYe2WJ8w=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6BaMt/m4aKtAZvZhi8xuCtas65etuLsDoP+bdlh62Llifsn/A BWnRFR6dMhFcZmfIXQ1kOOKgZl8cByPCD5kspjsEM2sMt97qWgm+DfSg9LnSAlsD/12lIOSJg1o 09syUuQxXvW0swJIyT1xGcr/HDskrQ+WMVl18wJtY7APp/B4Ni8Cs/39Eowj6o4DRZ/o= X-Gm-Gg: ASbGncv1bj04daI8UGRnQnpjOgl9R16I2KFvRpBg6XvMLqLj0UOMLotUqb+CntP3V/T 89X/c4dIkqkueqMJDalHOtwrUgt95woHxvOlyo3YFkIAxy+3GOwS6f9dTIN/X4974NUqjOuAFPq ahZnCPIGghR5KZpCKe0pTP05To0HXuhn4+xSa3cOITKj1WIE/4pN1b9G/ZSGcPoHTD8t4DInUiQ 1KI+QkOsbbSsO9tT402GfaoryDJcsg1F/YZQk4P8/wMGkjIOqebI5D3pjVOHWx3sHQTczZgViYZ U7mYfRJeAHqQrZQn9lKzlmYEKsVPRKA0seEzoSYa9lrafd8bn3lU65Ggg1utUOl3Ldc= X-Received: by 2002:a05:6a00:458e:b0:78a:f4e6:847f with SMTP id d2e1a72fcca58-79230180c61mr21203944b3a.6.1760349869874; Mon, 13 Oct 2025 03:04:29 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFad1TB12F2PhcVC27jV4wol0NLtuixAaJ/ctrcIrrqVLhF7KOFRVgYitTfFUThAa29ObwLcQ== X-Received: by 2002:a05:6a00:458e:b0:78a:f4e6:847f with SMTP id d2e1a72fcca58-79230180c61mr21203908b3a.6.1760349869201; Mon, 13 Oct 2025 03:04:29 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:28 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:16 +0530 Subject: [PATCH v5 12/13] 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: <20251013-kvm_rprocv5-v5-12-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=5426; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=PcSsVEiFPVw9Hj0r3Zaw0afL6D0XfXjGyZQnPsqQL+Y=; b=VEE2BYLcu8TbQxvGq4rWG6hMg3/oKG9lDgZ6MHss0sFuIf3J2sQb1DU4f6YFimwo3QaNKc80S GbSXZxNuaT/CVZ4N8daulAepHLLeokIgThxWbFfP+I2kGIBfVeyPwwN X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-ORIG-GUID: gnm-5zsNj5hRaQkW1HIF3l9z6FX3hGYR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDEzMDAyMiBTYWx0ZWRfX921SRW9W6mU/ cFfz7JVeZDkwrxVG9pB4hLVbjlAXEZsYMfG7otxZ0rqO4j6j6Hs2JojNZpQt5fp2b/iqzhXyaMn WB6KAXNlcfA8uPOYn1nFHg1Sd7CojkLLD3QHIunHTYEEeJVI1pSuNAk9Xg9HZ1gghmQWMln0Y5E SJsPs07G8eGlVMfWuSagkdEvgz5I051VIN8TtJSiL5J0lLjVxPwEbKVyR0NqlnAVYv9Ej56zIS/ TqbMDI6YRXb3o88vSjPkRO1QVAB8iQGv9HPFNmODYQNAvzns3k22uDdw9N6JwBHUifu9Rp+G/sp 9GAKWpe28cuzM0jFxfuv6X+VdmXPPG+FXkhgTP906LEUjBNLMM4PrbBZmjaXv98q+PbDnj1qTDr xOyD3BhtN1CCc0xibwjD+3TrLmHewQ== X-Authority-Analysis: v=2.4 cv=SfD6t/Ru c=1 sm=1 tr=0 ts=68ecceaf cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=58pnfTnN0ARRJNaB1lkA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: gnm-5zsNj5hRaQkW1HIF3l9z6FX3hGYR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 adultscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510130022 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 1944df49893f..8c44987733ca 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 @@ -256,6 +257,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; @@ -290,11 +307,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 @@ -305,18 +326,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); @@ -328,10 +353,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); @@ -387,8 +418,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); @@ -758,6 +793,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 @@ -836,6 +872,8 @@ static int qcom_pas_probe(struct platform_device *pdev) goto remove_ssr_sysmon; } =20 + pas->pas_ctx->has_iommu =3D rproc->has_iommu; + pas->dtb_pas_ctx->has_iommu =3D rproc->has_iommu; ret =3D rproc_add(rproc); if (ret) goto remove_ssr_sysmon; --=20 2.50.1 From nobody Sun Feb 8 23:42:36 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 180DB3002CE for ; Mon, 13 Oct 2025 10:04:39 +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=1760349880; cv=none; b=p07xY5Yf9xJaI3i62pzpfLTbxjmMqBlAUis6ljZG8Rp/4QiTgh3kptuNjuo/LTYv5Bpz+hRTLsZfRxJLQQkhv4pe8kfyiTik1ZgL4RxA2LfZ9D0kf+jYiTKzDzoc9moYWICuJuWfyGhkmxYzRwK5j3SCfCYVD1bNQXChrhuIEhI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760349880; c=relaxed/simple; bh=X8H9fFaRsPhpz9P3HuFYkIi/c1/WMaKEL12Al2lLqn0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dk5UY+K1ib81jHgoTj2qP61hdFb2OUttCJtJ25gj9WYziElECM5NlcRPHRzUk95jrty644bTVzOo8U70U/HVfWwdJQSo0sRx4iHNKAI2sZx+ttZRr+u6LNiZ0BVPpqhcszlScWyTB/hmmfbsDZfkSOCOxaYl3YGLVo/QySECg0c= 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=gxnGv5Bo; 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="gxnGv5Bo" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59D2nMm5011098 for ; Mon, 13 Oct 2025 10:04:38 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= GXyFql7Vsf8w6NStbJ4fPVmykU+7LPFNxNyrVzYIRqU=; b=gxnGv5BoU4nyZamk hHjL3XJxuX6rXEobBVD74aDBixIIX9IEyjiip5Iq5JWx0k/UZake+/BStgExdVNO 9+ccpt+L8m1V/6doE02aoEjaFhAYn/HMiU8u1+hxdFmVNQcT9RH1ieYWfLPBmVo8 6YQXi7iSYiQ7WXbbaI/dTLOPqDVw8PzNeqrcEb2VeSUa89q9pNN1y6rkivmoEDls uXASL4vMjzkWQ/5Tj5eA3STPhOPrQP6UnANpVcCt2e0YFbmR4AJLLMsO5stFMPAA hDUWqqVzbyDq/YaSi5aN2DH50+Ya1mNXDqsCTWyB2fv85w8+wSE6aAv4n+XM0e2l gm3Qkg== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49qg0bv49v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 13 Oct 2025 10:04:38 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-76e2ea9366aso6396906b3a.2 for ; Mon, 13 Oct 2025 03:04:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760349874; x=1760954674; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GXyFql7Vsf8w6NStbJ4fPVmykU+7LPFNxNyrVzYIRqU=; b=qilyTUB6WjAfu+uLoUhbWQyeMJSUhyFVmwhoi24YrajtcQZaZZIPvnlCUVYLYD/a38 kJhs6bhOXP79lziDNIJq078e/ZLX/+RaZIq28auQXVSRuaCDftHGcpJl5tIKbe6ti+Ya nVlgHfV/7drt4xooCQDmTlAJpMWNw5eqjClJVeWrrcMg4cJpT/dF2gBOEffpdGofHn/X XXnI7/z/YtQ/DYZL4UGWGai5fmrcdK7CvORbIC9Hj2WPS1TpSkNFjjytFhpqZBqr8loQ W8njyn+aqtFvmFiOgI1JppIUvpzAKYbKXhO/ee6m2s0yy5TZZ19Lk8M48StqhRkUMfFT 5Alw== X-Forwarded-Encrypted: i=1; AJvYcCWY1zdcOhodp61xxO2I+1tOLgZCArEGjMl+xOP09BYmzxpofybMGeMbMmIOkLdz/0Ciq1jUejMVnI9MLs8=@vger.kernel.org X-Gm-Message-State: AOJu0YxtGgie7xNpcEsKswiFe2m7szqq6r++zmMygKLABNKkbjpnm7xD QfnOSvgVXaCIuGSkShDf9Ixd23cTqSGKsJ9fu3Ozxb6o1NbQbXIZb0L5lRzKgisc7d6bw0C6C3p MJpwG6OvWp5QiL9Wj3eZEvXlmtAbQYA+qG2VUObPdUoA4j9fOS4vDJSg3lE5PnmVU/uo= X-Gm-Gg: ASbGncuZ5xCU4jspEvkNAkSJRDMYnz7OoaRKzl1zpiq+/q6JlPW4ess366SLbYKdY19 +7/g0xbH5jGtaLLfxMcG/pHXgyfXXVwxH926BO/1y63Z4WYwKIJqMQ68W4Wk7MOMahSySlx9RZf DQewm1Sg6evseYSc9nbXCEAftUtvujHH6508wtfiODROtB9lCZmWKgLKRuwYjR7y6TbThRHr7bV DrWOv/pCJoYFMfX/yN9IX8azvehmqTHWJe+ZL9DytlANMjZYG3Vb0WBNBWrf11Yv+bEvr+3OI7V +z1wEgw9Zl7lEz7X6jBCPAf7ZBCm2mqFolSjHE5cLnoujjNxEJbP9u02c2nd0ldWIUw= X-Received: by 2002:a05:6a00:9a6:b0:777:797b:7318 with SMTP id d2e1a72fcca58-79385709525mr23185189b3a.7.1760349873714; Mon, 13 Oct 2025 03:04:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFk14qu64ftjSRMW+hpD91y5/GM/5pJJ4AVMwHSK60e/YUg3Ls1E/Mz/JkNwC+/KshyXuyWzg== X-Received: by 2002:a05:6a00:9a6:b0:777:797b:7318 with SMTP id d2e1a72fcca58-79385709525mr23185146b3a.7.1760349873112; Mon, 13 Oct 2025 03:04:33 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7992d5b8672sm10981657b3a.69.2025.10.13.03.04.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Oct 2025 03:04:32 -0700 (PDT) From: Mukesh Ojha Date: Mon, 13 Oct 2025 15:33:17 +0530 Subject: [PATCH v5 13/13] 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: <20251013-kvm_rprocv5-v5-13-d609ed766061@oss.qualcomm.com> References: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> In-Reply-To: <20251013-kvm_rprocv5-v5-0-d609ed766061@oss.qualcomm.com> To: Bryan O'Donoghue , 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=1760349819; l=3372; i=mukesh.ojha@oss.qualcomm.com; s=20250708; h=from:subject:message-id; bh=X8H9fFaRsPhpz9P3HuFYkIi/c1/WMaKEL12Al2lLqn0=; b=gqjKdu3xbu3Gwv9MRIlItaFj4syW7otVyVQw46zSjsI7ZKvZQWxvTq3xDQ+kp7vyMpg35pQ6f Pu6W1eaoS4QBjoRd3rQQhGE1nB14ZwmvyVKxhWXN6SRk23d0jsoPv2q X-Developer-Key: i=mukesh.ojha@oss.qualcomm.com; a=ed25519; pk=eX8dr/7d4HJz/HEXZIpe3c+Ukopa/wZmxH+5YV3gdNc= X-Proofpoint-GUID: LHOxFAuQebTL_5l2M_VGgmjXywpqq2fS X-Proofpoint-ORIG-GUID: LHOxFAuQebTL_5l2M_VGgmjXywpqq2fS X-Authority-Analysis: v=2.4 cv=eaIwvrEH c=1 sm=1 tr=0 ts=68ecceb6 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=EUspDBNiAAAA:8 a=OUqdy03oI2q1KQI58CwA:9 a=QEXdDO2ut3YA:10 a=eSe6kog-UzkA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDExMDAyMiBTYWx0ZWRfX/5ETABrGJZ2G IRyNIrDl2NIgnSoUgRqaGnPEkHBZerBiPA02sWyBUYGfXrTJUcD29wMJDSmjHTSTwK9l+wzvevZ W1XT4YCUVfD58TDJbrSYPK9Mnfig2UX94V1egnNWLzD7itV3Ja7C+EGboGuZBCDKIhWKWrE7Jx/ 8spppzqmHQRyLIXXuWoWZM29uqwawLhonzbq23cdPRmAaBu4TfGXIRu824Wsv4SrakMVU8t3hNO fpbLGq44Wm4XlAJIp8KjI/TFZLmGLo3FkrBR1YtJyTG9v+1QW0Wvma7UD0uQdCovEHgt2uttEVX +RKxyyg4L67+ZSeWdPyxXKJvhTm6g90GVdPN5IffNSUEwWqaCZlcf3ArCinL5QaCPv2FtHlTYqQ O824BqqI2W5yk/DBa6px+icDY7WGAg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-13_03,2025-10-06_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 spamscore=0 impostorscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510110022 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, remote processor firmware IOMMU streams is controlled by the Gunyah however when Linux take ownership of it in EL2, It need to configure it properly to use 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 | 8 +++++++ arch/arm64/boot/dts/qcom/lemans-el2.dtso | 41 ++++++++++++++++++++++++++++= ++++ 2 files changed, 49 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index 296688f7cb26..e0791f987ff9 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -33,8 +33,10 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp454.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D lemans-evk.dtb =20 lemans-evk-camera-csi1-imx577-dtbs :=3D lemans-evk.dtb lemans-evk-camera-c= si1-imx577.dtbo +lemans-evk-el2-dtbs :=3D lemans-evk.dtb lemans-el2.dtbo =20 dtb-$(CONFIG_ARCH_QCOM) +=3D lemans-evk-camera-csi1-imx577.dtb +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 @@ -137,6 +139,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..af35039946e3 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/lemans-el2.dtso @@ -0,0 +1,41 @@ +// 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 { + /* More driver work is needed */ + status =3D "disabled"; +}; + +/* + * When running under Gunyah, remote processor firmware IOMMU streams is + * controlled by the Gunyah however when we take ownership of it in EL2, + * we need to configure it properly to use remote processor. + */ +&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