2024-04-24 16:35:09

by Luca Weiss

[permalink] [raw]
Subject: [PATCH 1/7] rpmsg: qcom_smd: Don't print error during probe deferral

When the mailbox driver has not probed yet, skip printing the error
message since it's just going to confuse users.

Signed-off-by: Luca Weiss <[email protected]>
---
drivers/rpmsg/qcom_smd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c
index 43f601c84b4f..6fc299657adf 100644
--- a/drivers/rpmsg/qcom_smd.c
+++ b/drivers/rpmsg/qcom_smd.c
@@ -1502,7 +1502,8 @@ struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,

ret = qcom_smd_parse_edge(&edge->dev, node, edge);
if (ret) {
- dev_err(&edge->dev, "failed to parse smd edge\n");
+ if (ret != -EPROBE_DEFER)
+ dev_err(&edge->dev, "failed to parse smd edge\n");
goto unregister_dev;
}


--
2.44.0



2024-04-24 17:31:30

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 1/7] rpmsg: qcom_smd: Don't print error during probe deferral

On Wed, Apr 24, 2024 at 06:23:54PM +0200, Luca Weiss wrote:
> When the mailbox driver has not probed yet, skip printing the error
> message since it's just going to confuse users.
>
> Signed-off-by: Luca Weiss <[email protected]>
> ---
> drivers/rpmsg/qcom_smd.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/rpmsg/qcom_smd.c b/drivers/rpmsg/qcom_smd.c
> index 43f601c84b4f..6fc299657adf 100644
> --- a/drivers/rpmsg/qcom_smd.c
> +++ b/drivers/rpmsg/qcom_smd.c
> @@ -1502,7 +1502,8 @@ struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
>
> ret = qcom_smd_parse_edge(&edge->dev, node, edge);
> if (ret) {
> - dev_err(&edge->dev, "failed to parse smd edge\n");
> + if (ret != -EPROBE_DEFER)
> + dev_err(&edge->dev, "failed to parse smd edge\n");

In the described case, this error message would not be entirely
accurate, and the cause is not accurately captured in devices_deferred.

Unless I'm mistaken, it seems like qcom_smd_parse_edge() will also print
a more useful error in every other case, except after the mbox_chan !=
-ENODEV check..

How about making that:

if (PTR_ERR(edge->mbox_chan) != -ENODEV) {
ret = dev_err_probe(dev, PTR_ERR(edge->mbox_chan),
"failed to acquire IPC mailbox\n");
goto put_node;
}

And then drop the error print here in qcom_smd_register_edge().

It would bring us the devices_deferred tracking, and it would avoid the
double print in all other cases.

Regards,
Bjorn

> goto unregister_dev;
> }
>
>
> --
> 2.44.0
>