From nobody Fri Oct 2 03:37:52 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 E6DCE471430 for ; Wed, 5 Aug 2026 13:38:09 +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=1785937091; cv=none; b=jD2/GULBq5exxrqzVTEBNI7W4McTYFWFmrgshXZU8lUfvi3spP9TSUfaNU0FFBArkVhXwRyFniuxSWedXV/D7IVbiGplebqFPfPsA6iBLyzRS0js6PXUJDC6HSsXmucIP0PXaDXdB4GGFdTi6FEY5FFIPYar7iSWVdDTgWBpvPk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785937091; c=relaxed/simple; bh=OnRjT98dZqNSmeCRXSpJxFYaJQEhd3OrCpvIuT7vOV8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=N++wh8thABCqSg+fH/Yhp13fkuWGVQeEVLaKHIFpNjY8fCKlNULs5mYJeDKEY7zGb5K/F2sryPfjaZfS/YpuL0+ZuAjQ++f1cmcI7PH+AkrlFrs3nv4s7WC3w8d6qCqdCQVLrOG2yBBk9lpLo6yraImhjPDFZksuK40De3lA1Ow= 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=T/LvbqC3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=F/VkoCX2; 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="T/LvbqC3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="F/VkoCX2" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 675BvBTh2164912 for ; Wed, 5 Aug 2026 13:38:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=vw8PgTmZdhvQmzo6d6mfcJ lCGMwMbx7pkqiQSYNZivY=; b=T/LvbqC3MHGfXDO2q1cEZVNT14owJJlJWQQmdD dTIaZv/AdToNu/wi3P3KUahmvWfUzzQ4sE3jOYg/1K63N8LskhZdhrKNeJVj2cRh i4Ysk46EasmL1oK9JdlUc/QHv/peceq/LidwlVF0y2dhWrejWjJ00ne8YrTasx/3 UgYdr+Q5YNPxX3vM9KPvYSvduoTOYHlIWln8FgkGhzjv2uM7gYNp4qF1S6l9BgrV 9uNRnxwuSf2pUMxMkYxuBgfEk/go2KHM3PmCFC4EDk8PtEU/aGZ6Blqr3i6ZU1aT aSdHye8yfniYZIpOtDCT0LMiaA/rx5BGkiGAHd6R0U7dGLHg== Received: from mail-yx1-f71.google.com (mail-yx1-f71.google.com [74.125.224.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4fuwbqtd14-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 05 Aug 2026 13:38:09 +0000 (GMT) Received: by mail-yx1-f71.google.com with SMTP id 956f58d0204a3-668b2c03fbfso1483654d50.2 for ; Wed, 05 Aug 2026 06:38:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785937088; x=1786541888; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=vw8PgTmZdhvQmzo6d6mfcJlCGMwMbx7pkqiQSYNZivY=; b=F/VkoCX2Uzfr1ZVvnuuOxUBX4BTMOCqi6AoEH9Ep3Y7jZHrj49gx2n7BFv2ZoPTR09 4/VIfpHRXSKa1tL9BZippYVhRkYYtF24wScpqYzvktLFDpaFX9t1wi5xKt/s7TPHHBFp VJBwMCNykYjUOliq5mI5WmJL72MZedsW4WFPQw4Lj/opXEXJFG5G1hZUgJ/2jdqsRON3 kDona8pLBktkiD26jI3jq90svJy+RSDM5EpCSCz398qaPD3pyE1YydKJnbo4QbuiS3+r 9sll/KXC4yDeaVNy9UADAva2DVldyIA9DE475WFEoD6sD+JvtI9IWol3s9ez93Ij4BPz SOMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785937088; x=1786541888; h=content-transfer-encoding:content-type:mime-version:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=vw8PgTmZdhvQmzo6d6mfcJlCGMwMbx7pkqiQSYNZivY=; b=NgicJX02sP0OUMByRDeYJ2Tw9c5XiwegJOIAoOOBAKm9hRidVZsuPjtXxq8rjvo6zK EbqeJgGjriS8IELLnjVgRkXUv33sTQd2ZEysNsbt6lsRVN6fNSSvEDM29vQGv9iUTJVF nCokGwXPtD8OZNb8qGyPJyVhyjVzGlJ5BI3JS5eVBWjreiZ75csf4Nu+c6nOZxIxtZw1 zKiNBfSbJO3/SMTjNfEL5yZrQS/i9xJd21EQieB59Ua3fiA/qyYfFgHpx/um2pmx9v2D 9cxAqow9W7xGQZBH+cleLhQ8Maec0ASQVsJ2LXTyS3CGAzEv0FxuJWv0W0lNVu31sAXV pevg== X-Forwarded-Encrypted: i=1; AHgh+RqDu9nSPOSLF/c2k3jT8x09txORbvythXCgCig4TG32TRESoPBXu4gm1Jfke7XKPqqwfZYNMrCskhX8xdY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3M0wSplk9/5mGIYCvdyB3m/46xTSVKcFcI2FhpDIlz9mh9u49 fhGInLpkIUTGrH+nm4Q7POpYA00kXTuIH1Kv3vvo1gG4BKdwSdyZV6sCzYXnOR+x3t9wPYJ4d4a huMDV81BqxqJahRgkEVzhgXp+YCXbB+iHEfRWy/6c8aG+Y6OsD4KnSTqc8CwlssFWpl0= X-Gm-Gg: AR+sD11w94tD+8wPlLW5JE1FxZp7bL9oUSBzNt9vinlZflB54+DJq2dJj+jvnjE9Y4H ts8Zf8KXbCwPzGKtLsVgpJAVBLSiSymxtZRdLzz26mWCN+ypF+YB0p4uPrNnTAJOTc2pZvl+tdd PvkeN2M5+yr1m3/AKDr4ELHHpeKEC4YeQdXLwL5zRnreJX7vGpZ/Se6t0+2yisgyDmb1gu6WDEa m9XvDxPYcXU3Bi0KRfLG/0l1eF3iDyyOGAU8ONF3JvUD+CtBtrjIWwnpEKguaZC+wGlzK9VhPkn tD3NP7suM+q7O+fZqoKH35x4Qevg/w3w7MbtXdGk87ostd8OoxikHVZmVqf6t5MpCiTIajPtlCy OjFf21NXBMT0qftMCQeKQN6eFP5I= X-Received: by 2002:a05:690e:1a83:b0:662:f376:ae0e with SMTP id 956f58d0204a3-6699aa9cb6amr2618102d50.32.1785937087946; Wed, 05 Aug 2026 06:38:07 -0700 (PDT) X-Received: by 2002:a05:690e:1a83:b0:662:f376:ae0e with SMTP id 956f58d0204a3-6699aa9cb6amr2618081d50.32.1785937087351; Wed, 05 Aug 2026 06:38:07 -0700 (PDT) Received: from hu-mojha-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-6699136a3d5sm3107401d50.1.2026.08.05.06.38.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2026 06:38:07 -0700 (PDT) From: Mukesh Ojha To: Bjorn Andersson , Konrad Dybcio , Mathieu Poirier , Sumit Garg Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-remoteproc@vger.kernel.org, Mukesh Ojha Subject: [PATCH v6] firmware: qcom: scm: introduce keep_mdt_buf flag in PAS context Date: Wed, 5 Aug 2026 19:07:58 +0530 Message-ID: <20260805133759.2790755-1-mukesh.ojha@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 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 X-Proofpoint-ORIG-GUID: faounOJRBMNGfBSZ-38485SNmcXpoXOR X-Authority-Analysis: v=2.4 cv=B+uJFutM c=1 sm=1 tr=0 ts=6a733cc1 cx=c_pps a=ngMg22mHWrP7m7pwYf9JkA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=g7xFvzIaMl2GvowGQBkA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=yHXA93iunegOHmWoMUFd:22 X-Proofpoint-GUID: faounOJRBMNGfBSZ-38485SNmcXpoXOR X-Proofpoint-Spam-Info: AW1haW4tMjYwODA1MDExMCBTYWx0ZWRfX5Ki00qBJzeX1 TkjVwtlvZ/Aj88HuwbBpLMNgYRaYb5Jk8HkUah8XYmSGfNEaExo+YRv3ESalfuRUMf9IhIwy0d6 nP+dSfJ7c30eas0/SbofH/898rFcG1s= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODA1MDExMCBTYWx0ZWRfX95LNAD4oPavH AfxvnqArrHfSqOxCKmkJNSDq43soFkQsWUxpHNOMlaBhvwEfZvh7QOI8PD+oX0JYIDDsV6b9noY HYRHdWO5id2Iudl7IHM4FfI0aNqOYTb0/HYeEajY86ZMRMD85Sr9eVFS4INtP1oApfdBHTazAzr IxiLRRumArzbwyLoigEkniyBcqcvKjiQEgbxGmGzb4SRtrE/SNTNkJ3m8lOyzIYA5CSR47aCiMS SNY0aO3Qx3aEq8yjpTGdbxZa2frj+zq8g+ISX2V+HGDJ1Kw5lxIE0cEZXXE0wHbMeT+5V/yaFC1 AXGVqJu9BOlLGisYwad6aEOksPRe5sLLoNtwzJYmZT3xrG3V3iNWd6t2QvMI17zvMZ6ZRpIhSoQ BBOc+nbB3pvxA/vE39sryUBHEYLivf8FPUOApUSlIq6NNjFxYc3PBqZbwgfE+3a4UpqsIdkS6aG 6WYvVQDA4KJpqtMdfxg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-05_04,2026-08-04_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 lowpriorityscore=0 bulkscore=0 phishscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608050110 The PAS image initialization path always retains the metadata buffer when a valid qcom_scm_pas_context is provided, even if the caller does not require it. This implicit behavior leads to unclear buffer ownership and forces new users of qcom_mdt_pas_load() to manually release metadata, which is error=E2=80=91 prone and incorrect. Add a keep_mdt_buf flag to struct qcom_scm_pas_context to make metadata retention explicit. Metadata buffers are now freed by default and are only preserved when this flag is set. qcom_q6v5_pas enables this during probe for contexts that require retained metadata for subsequent PAS operations, while existing callers continue to work unchanged. Signed-off-by: Mukesh Ojha --- Changes in v6: - Other patches from the series is merged. - Removed dependency on below series by adding keep_mdt_buf into qcom_scm_pas_context structure as well. https://lore.kernel.org/lkml/20260702115835.167602-1-sumit.garg@kernel= .org/ - Addressed minor comment on the documentationi. - Link to v5: 6/6 of https://lore.kernel.org/lkml/20260724182858.186827= 1-7-mukesh.ojha@oss.qualcomm.com/ drivers/firmware/qcom/qcom_scm.c | 10 +++++++--- drivers/remoteproc/qcom_q6v5_pas.c | 3 +++ include/linux/firmware/qcom/qcom_pas.h | 1 + include/linux/firmware/qcom/qcom_scm.h | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 3eaa4c9ccf3c..0528a15903c1 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -645,7 +645,7 @@ static int qcom_scm_pas_prep_and_init_image(struct devi= ce *dev, mdata_phys =3D qcom_tzmem_to_phys(mdata_buf); =20 ret =3D __qcom_scm_pas_init_image(dev, ctx->pas_id, mdata_phys, &res); - if (ret < 0) + if (ret < 0 || !ctx->keep_mdt_buf) qcom_tzmem_free(mdata_buf); else ctx->ptr =3D mdata_buf; @@ -684,9 +684,13 @@ static int __qcom_scm_pas_init_image2(struct device *d= ev, u32 pas_id, memcpy(mdata_buf, metadata, size); =20 ret =3D __qcom_scm_pas_init_image(dev, pas_id, mdata_phys, &res); - if (ret < 0 || !ctx) { + + /* + * free the metadata on error or if client didn't request us to keep it. + */ + if (ret < 0 || !ctx || !ctx->keep_mdt_buf) { dma_free_coherent(dev, size, mdata_buf, mdata_phys); - } else if (ctx) { + } else { ctx->ptr =3D mdata_buf; ctx->phys =3D mdata_phys; ctx->size =3D size; diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q= 6v5_pas.c index ca8e61254c44..6aff24d56ea8 100644 --- a/drivers/remoteproc/qcom_q6v5_pas.c +++ b/drivers/remoteproc/qcom_q6v5_pas.c @@ -722,6 +722,7 @@ static int qcom_pas_alloc_memory_region(struct qcom_pas= *pas) if (IS_ERR(pas->pas_ctx)) return PTR_ERR(pas->pas_ctx); =20 + pas->pas_ctx->keep_mdt_buf =3D true; if (!pas->dtb_pas_id) return 0; =20 @@ -740,6 +741,8 @@ static int qcom_pas_alloc_memory_region(struct qcom_pas= *pas) if (IS_ERR(pas->dtb_pas_ctx)) return PTR_ERR(pas->dtb_pas_ctx); =20 + pas->dtb_pas_ctx->keep_mdt_buf =3D true; + return 0; } =20 diff --git a/include/linux/firmware/qcom/qcom_pas.h b/include/linux/firmwar= e/qcom/qcom_pas.h index fb2ec3be6a16..1d132e89536e 100644 --- a/include/linux/firmware/qcom/qcom_pas.h +++ b/include/linux/firmware/qcom/qcom_pas.h @@ -22,6 +22,7 @@ struct qcom_pas_context { dma_addr_t phys; ssize_t size; bool use_tzmem; + bool keep_mdt_buf; }; =20 static inline void __iomem *qcom_pas_ctx_map(struct qcom_pas_context *ctx) diff --git a/include/linux/firmware/qcom/qcom_scm.h b/include/linux/firmwar= e/qcom/qcom_scm.h index 5747bd191bf1..6d8d3deb02e0 100644 --- a/include/linux/firmware/qcom/qcom_scm.h +++ b/include/linux/firmware/qcom/qcom_scm.h @@ -75,6 +75,7 @@ struct qcom_scm_pas_context { dma_addr_t phys; ssize_t size; bool use_tzmem; + bool keep_mdt_buf; }; =20 struct qcom_scm_pas_context *devm_qcom_scm_pas_context_alloc(struct device= *dev, --=20 2.53.0