[PATCH v2] misc: fastrpc: Reduce console noise from expected DSP info, reserved memory and session messages

From: Jianping Li

Date: Mon Sep 07 2026 - 03:06:38 EST


On some platforms the DSP firmware does not support the fastrpc
capability/attribute query. The DSP side returns an error (err: -1)
while handling the request, so fastrpc_get_info_from_dsp() does not
return DSP_UNSUPPORTED_API but a generic error, and the "else if (err)"
branch in fastrpc_get_info_from_kernel() is taken.

cctx->valid_attributes is therefore never set and every open()/query
re-prints the same "dsp information is incorrect" line. This is not
tied to boot timing: it can be reproduced at any time by manually
starting adsprpcd. On RC builds with metadata flashing enabled several
clients come up and flood the console.

As this is an expected, platform-specific and non-fatal condition,
downgrade the message to dev_dbg. Similarly, the absence of reserved
DMA memory is a valid configuration and does not indicate an error,
so downgrade that message to dev_dbg as well. Also rate-limit the
"No session available" message with dev_err_ratelimited(): it reflects
a genuine failure (open() returns -EBUSY) so it should still be visible,
but must not flood dmesg when the session pool is exhausted.

No functional change intended.

Signed-off-by: Jianping Li <jianping.li@xxxxxxxxxxxxxxxx>
---
Patch [v1]: https://lore.kernel.org/all/20260514062825.50172-1-jianping.li@xxxxxxxxxxxxxxxx/

Changes in v2:
- Add "misc: fastrpc:" subject prefix.
- Reword commit message: drop "temporarily", describe the actual scenario
and state the errno returned by the DSP.
- Rate-limit "No session available" with dev_err_ratelimited().
---
drivers/misc/fastrpc.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index d4fac2caca86..1f9531a534b9 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -1783,7 +1783,7 @@ static int fastrpc_device_open(struct inode *inode, struct file *filp)

fl->sctx = fastrpc_session_alloc(fl);
if (!fl->sctx) {
- dev_err(&cctx->rpdev->dev, "No session available\n");
+ dev_err_ratelimited(&cctx->rpdev->dev, "No session available\n");
mutex_destroy(&fl->mutex);
kfree(fl);
fastrpc_channel_ctx_put(cctx);
@@ -1937,7 +1937,7 @@ static int fastrpc_get_info_from_kernel(struct fastrpc_ioctl_capability *cap,
kfree(dsp_attributes);
return -EOPNOTSUPP;
} else if (err) {
- dev_err(&cctx->rpdev->dev, "Error: dsp information is incorrect err: %d\n", err);
+ dev_dbg(&cctx->rpdev->dev, "Error: dsp information is incorrect err: %d\n", err);
kfree(dsp_attributes);
return err;
}
@@ -2559,7 +2559,7 @@ static int fastrpc_rpmsg_probe(struct rpmsg_device *rpdev)
}

if (of_reserved_mem_device_init_by_idx(rdev, rdev->of_node, 0))
- dev_info(rdev, "no reserved DMA memory for FASTRPC\n");
+ dev_dbg(rdev, "no reserved DMA memory for FASTRPC\n");

vmcount = of_property_read_variable_u32_array(rdev->of_node,
"qcom,vmids", &vmids[0], 0, FASTRPC_MAX_VMIDS);
--
2.43.0