FAILED: patch "[PATCH] remoteproc: qcom: pas: Guard dtb metadata release with" failed to apply to 6.18-stable tree
[email protected]
maintainerThe patch below does not apply to the 6.18-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.18.y
git checkout FETCH_HEAD
git cherry-pick -x c06c5ab4945392d2c2aded6d832ab6b58cabe351
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026090336-enticing-sandstone-d55c@gregkh' --subject-prefix 'PATCH 6.18.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From c06c5ab4945392d2c2aded6d832ab6b58cabe351 Mon Sep 17 00:00:00 2001
From: Mukesh Ojha <[email protected]>
Date: Fri, 24 Jul 2026 23:58:54 +0530
Subject: [PATCH] remoteproc: qcom: pas: Guard dtb metadata release with
dtb_pas_id check
All other call sites of qcom_scm_pas_metadata_release() for the DTB context are guarded by a check on pas->dtb_pas_id, but the call inside qcom_pas_load() was not. Fix this by moving the call to the guarded block.
drivers/remoteproc/qcom_q6v5_pas.c +5 -8
@@ -245,17 +245,14 @@ static int qcom_pas_load(struct rproc *rproc, const struct firmware *fw) ret =qcom_mdt_pas_load (pas->dtb_pas_ctx, pas->dtb_firmware, pas->dtb_firmware_name, (__force void *)pas->dtb_mem_region, &pas->dtb_mem_reloc); -if (ret) - goto release_dtb_metadata; +if (ret) { +qcom_pas_metadata_release (pas->dtb_pas_ctx); +release_firmware (pas->dtb_firmware); +return ret; + } }return 0 ; - -release_dtb_metadata: -qcom_pas_metadata_release (pas->dtb_pas_ctx); -release_firmware (pas->dtb_firmware); - -return ret; }static void qcom_pas_unmap_carveout (struct rproc *rproc,phys_addr_t mem_phys,size_t size)
Sasha Levin
maintainerPATCH 1/2 firmware: qcom_scm: Rename peripheral as pas_id
From: Mukesh Ojha <[email protected]>
[ Upstream commit 69054348cc1c2d87acad90aec5e6e0d191012aff ]
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.
Stable-dep-of: c06c5ab49453 ("remoteproc: qcom: pas: Guard dtb metadata release with dtb_pas_id check")
--- drivers/firmware/qcom/qcom_scm.c | 30 +++++++++++++------------- include/linux/firmware/qcom/qcom_scm.h | 10 ++++----- 2 files changed, 20 insertions(+), 20 deletions(-)
drivers/firmware/qcom/qcom_scm.c +15 -15
@@ -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 size, +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 = QCOM_SCM_SVC_PIL, .cmd = QCOM_SCM_PIL_PAS_INIT_IMAGE, .arginfo = QCOM_SCM_ARGS(2, QCOM_SCM_VAL, QCOM_SCM_RW), - .args[0] = peripheral, + .args[0] = pas_id, .owner = 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 peripheral * 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 size) +int qcom_scm_pas_mem_setup (u32 pas_id,phys_addr_t addr,phys_addr_t size) {int ret;struct qcom_scm_desc desc = { .svc =QCOM_SCM_SVC_PIL , .cmd =QCOM_SCM_PIL_PAS_MEM_SETUP , .arginfo =QCOM_SCM_ARGS (3 ), - .args[0 ] = peripheral, + .args[0 ] = pas_id, .args[1 ] = addr, .args[2 ] = size, .owner =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 firmware * 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 = { .svc =QCOM_SCM_SVC_PIL , .cmd =QCOM_SCM_PIL_PAS_AUTH_AND_RESET , .arginfo =QCOM_SCM_ARGS (1 ), - .args[0 ] = peripheral, + .args[0 ] = pas_id, .owner =ARM_SMCCC_OWNER_SIP , };struct qcom_scm_res res;
@@ -735,18 +735,18 @@ EXPORT_SYMBOL_GPL(qcom_scm_pas_auth_and_reset);/** * 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 = { .svc =QCOM_SCM_SVC_PIL , .cmd =QCOM_SCM_PIL_PAS_SHUTDOWN , .arginfo =QCOM_SCM_ARGS (1 ), - .args[0 ] = peripheral, + .args[0 ] = pas_id, .owner =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 service 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 = { .svc =QCOM_SCM_SVC_PIL , .cmd =QCOM_SCM_PIL_PAS_IS_SUPPORTED , .arginfo =QCOM_SCM_ARGS (1 ), - .args[0 ] = peripheral, + .args[0 ] = pas_id, .owner =ARM_SMCCC_OWNER_SIP , };struct qcom_scm_res res;
include/linux/firmware/qcom/qcom_scm.h +5 -5
@@ -72,13 +72,13 @@ struct qcom_scm_pas_metadata {ssize_t size; }; -int qcom_scm_pas_init_image (u32 peripheral,const void *metadata,size_t 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); -int qcom_scm_pas_mem_setup (u32 peripheral,phys_addr_t addr,phys_addr_t size); -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);int qcom_scm_io_readl (phys_addr_t addr,unsigned int *val);int qcom_scm_io_writel (phys_addr_t addr,unsigned int val);
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 remoteproc: qcom: pas: Guard dtb metadata release with dtb_pas_id check
From: Mukesh Ojha <[email protected]>
[ Upstream commit c06c5ab4945392d2c2aded6d832ab6b58cabe351 ]
All other call sites of qcom_scm_pas_metadata_release() for the DTB context are guarded by a check on pas->dtb_pas_id, but the call inside qcom_pas_load() was not. Fix this by moving the call to the guarded block.
--- drivers/remoteproc/qcom_q6v5_pas.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/remoteproc/qcom_q6v5_pas.c +4 -5
@@ -248,15 +248,14 @@ static int qcom_pas_load(struct rproc *rproc, const struct firmware *fw) ret =qcom_mdt_load_no_init (pas->dev, pas->dtb_firmware, pas->dtb_firmware_name, pas->dtb_mem_region, pas->dtb_mem_phys, pas->dtb_mem_size, &pas->dtb_mem_reloc); -if (ret) - goto release_dtb_metadata; +if (ret) { +qcom_scm_pas_metadata_release (&pas->dtb_pas_metadata); + goto release_dtb_firmware; + } }return 0 ; -release_dtb_metadata: -qcom_scm_pas_metadata_release (&pas->dtb_pas_metadata); - release_dtb_firmware:release_firmware (pas->dtb_firmware);
Signature · 1 line
2.53.0