The glink transports enable their receive interrupt only after qcom_glink_native_probe() has returned, while the version command is sent from within native_probe(). A remote that answers quickly can have its version ACK dropped, and the handshake never completes.
Patch 1 moves the version command out into a new qcom_glink_native_start(), which the transports call once their interrupt is live. Patch 2 drops IRQF_NO_AUTOEN, which is no longer needed once the ordering is explicit. --- Changes in v2: - Drop IRQF_NO_AUTOEN in a second patch, as Konrad suggested on v1. - Keep a failing chrdev registration non-fatal in native_start() and note it in the kernel-doc; v1 turned it into a probe failure by mistake. - Add Assisted-by tags per Documentation/process/coding-assistants.rst. - Link to v1: https://patch.msgid.link/20260618-rpmsg-glink-split-protocol-start-v1-1-c4f93986c...@oss.qualcomm.com --- Chunkai Deng (2): rpmsg: glink: Split protocol start out of native_probe rpmsg: glink: Request the RX interrupt already enabled drivers/rpmsg/qcom_glink_native.c | 32 ++++++++++++++++++++++++++++---- drivers/rpmsg/qcom_glink_native.h | 1 + drivers/rpmsg/qcom_glink_rpm.c | 30 ++++++++++++++++++++---------- drivers/rpmsg/qcom_glink_smem.c | 27 +++++++++++++++++---------- 4 files changed, 66 insertions(+), 24 deletions(-) --- base-commit: a225caacc36546a09586e3ece36c0313146e7da9 change-id: 20260604-rpmsg-glink-split-protocol-start-3df74dbd5c94 Best regards, -- Chunkai Deng <[email protected]>

