From: Jorge Ramirez-Ortiz <jorge.ramirez@oss.qualcomm.com>
To: jorge.ramirez@oss.qualcomm.com, andersson@kernel.org,
mathieu.poirier@linaro.org, konrad.dybcio@oss.qualcomm.com,
mukesh.ojha@oss.qualcomm.com, sumit.garg@kernel.org
Cc: linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH] remoteproc: qcom: pas: pass no resource table when the firmware has none
Date: Mon, 5 Oct 2026 14:54:00 +0200 [thread overview]
Message-ID: <20261005125411.2151326-1-jorge.ramirez@oss.qualcomm.com> (raw)
The firmware resource table is passed to the PAS backend even when the
firmware carries none. This only works on the first boot, while the
cached pointer and its size are both zero.
Stopping the remote processor, or failing to start it, frees the cached
table and clears the pointer but leaves the size set. The next start
then pairs a NULL table with a non-zero size.
The SCM backend substitutes an empty table and hides the problem. The
TEE backend copies from the NULL pointer:
remoteproc remoteproc2: powering up cdsp
pc : __pi_memcpy_generic+0x110/0x22c
lr : qcom_pas_tee_get_rsc_table+0xf4/0x25c
Call trace:
__pi_memcpy_generic+0x110/0x22c (P)
qcom_pas_get_rsc_table+0x38/0x60
qcom_pas_parse_firmware+0xa0/0x100
rproc_boot+0x2d4/0x380
state_store+0x40/0x100
Fixes: a4584bff63c8 ("remoteproc: pas: Extend parse_fw callback to fetch resources via SMC call")
Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez@oss.qualcomm.com>
---
drivers/remoteproc/qcom_q6v5_pas.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index a005546c265d..e871e03ba794 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -463,7 +463,7 @@ static int qcom_pas_parse_firmware(struct rproc *rproc, const struct firmware *f
struct resource_table *table = NULL;
size_t output_rt_size;
void *output_rt;
- size_t table_sz;
+ size_t table_sz = 0;
int ret;
ret = qcom_register_dump_segments(rproc, fw);
@@ -476,11 +476,12 @@ static int qcom_pas_parse_firmware(struct rproc *rproc, const struct firmware *f
return 0;
ret = rproc_elf_load_rsc_table(rproc, fw);
- if (ret)
+ if (ret) {
dev_dbg(&rproc->dev, "Failed to load resource table from firmware\n");
-
- table = rproc->table_ptr;
- table_sz = rproc->table_sz;
+ } else {
+ table = rproc->table_ptr;
+ table_sz = rproc->table_sz;
+ }
/*
* The resources consumed by Qualcomm remote processors fall into two categories:
--
2.54.0
next reply other threads:[~2026-10-05 12:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-05 12:54 Jorge Ramirez-Ortiz [this message]
2026-10-05 16:12 ` Mukesh Ojha
2026-10-05 21:01 ` Jorge Ramirez
2026-10-06 5:23 ` Harshal Dev
2026-10-06 6:54 ` Jorge Ramirez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261005125411.2151326-1-jorge.ramirez@oss.qualcomm.com \
--to=jorge.ramirez@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=mukesh.ojha@oss.qualcomm.com \
--cc=sumit.garg@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®