diff options
author | Jeffrey Hugo <jeffrey.l.hugo@gmail.com> | 2019-11-06 15:05:11 -0800 |
---|---|---|
committer | Bjorn Andersson <bjorn.andersson@linaro.org> | 2019-12-10 22:44:34 -0800 |
commit | 52af26e33e700158e6549f1465fcf9da099fabfa (patch) | |
tree | c02e5d449625dc0cd4cd232db9cbd224e22e687d /drivers/soc | |
parent | e42617b825f8073569da76dc4510bfa019b1c35a (diff) | |
download | linux-52af26e33e700158e6549f1465fcf9da099fabfa.tar.gz linux-52af26e33e700158e6549f1465fcf9da099fabfa.tar.bz2 linux-52af26e33e700158e6549f1465fcf9da099fabfa.zip |
soc: qcom: qmi: Return EPROBE_DEFER if no address family
If a client comes up early in the boot process (perhaps was a built-in
driver), qmi_handle_init() will likely fail with a EAFNOSUPPORT since the
underlying ipc router hasn't init'd and registered the address family.
This should not be a fatal error since chances are, the router will come
up later, so recode the error to EPROBE_DEFER so that clients will retry
later.
Signed-off-by: Jeffrey Hugo <jeffrey.l.hugo@gmail.com>
Link: https://lore.kernel.org/r/20191106230511.1290-1-jeffrey.l.hugo@gmail.com
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Diffstat (limited to 'drivers/soc')
-rw-r--r-- | drivers/soc/qcom/qmi_interface.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/soc/qcom/qmi_interface.c b/drivers/soc/qcom/qmi_interface.c index f9e309f0acd3..1a03eaa38c46 100644 --- a/drivers/soc/qcom/qmi_interface.c +++ b/drivers/soc/qcom/qmi_interface.c @@ -655,8 +655,12 @@ int qmi_handle_init(struct qmi_handle *qmi, size_t recv_buf_size, qmi->sock = qmi_sock_create(qmi, &qmi->sq); if (IS_ERR(qmi->sock)) { - pr_err("failed to create QMI socket\n"); - ret = PTR_ERR(qmi->sock); + if (PTR_ERR(qmi->sock) == -EAFNOSUPPORT) { + ret = -EPROBE_DEFER; + } else { + pr_err("failed to create QMI socket\n"); + ret = PTR_ERR(qmi->sock); + } goto err_destroy_wq; } |