From nobody Mon Sep 28 09:58:48 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C46843EC813 for ; Mon, 24 Aug 2026 07:06:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787555167; cv=none; b=oVB/gSyJWQNTLkWdBU8t96OtXQUkkaPJIIgeMYHSBSQxH+gJnSbY+cnvI1fnBOEvS4edSJEewlIeGfu389K7j4Imlc9E7RFh+H219SsYHbkj1yDjOVrjz1etfF5eSARaWTmomYLOMZNr/NaIUHpwlEmVl6u4PZ3Dcgz7XppDkq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787555167; c=relaxed/simple; bh=7GMn7+pY4NrOqBGNfEhN/wEFhTlvXdgKNBf0GUDbwNM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Wf5Mlz1d3f3n/B0gc2BHZlZzNit328S3Ww6mplVXV6NwmGaza22N7AVcK1WYhdFCxQe573k1Kih6Iuwucgc1KWdroqsUS9q6Eetj8CACCOIjZH7XmidEtPLzZF2kuM15YvmXCWX2qwU8kbGCV1H0W+iA0g1taXhRWXD48jT/pMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=AI5PdXYX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LkFcXQAJ; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="AI5PdXYX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LkFcXQAJ" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67O5R8BD2041417 for ; Mon, 24 Aug 2026 07:06:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= tAcnAbP32S5gpYPX5Og5xiDNjJ/HxZkg1tijhne6rng=; b=AI5PdXYXjFQBmbMn +St0RY6BMbHSllvHlm+jhhTXTySQsNKlDltcXL0lR+wPfOw+6BhA8BhIIYzGNNbR gkQdHxHpjasuBbVnbbMiDh918rOdEZGUKE1gyIYKNB/X8Zr4IH1DylMTp23FShQo GDusAIW0kKXn3PsMnROxPhprmpdG3GtKu5mOQuREkffUZmMyL2KP20tt4X0MAvXD LrFBmQLXzwMQxbZoiC0RaVg1AONhNxU4cKyYVXQMI1tMT5QKdSmCnydhzGylSQnF QWqFWSU+P1YHWMTxH3dONpzfuhFrFlKX/nUA7ljH3QM5AYAXzJINdPKD4NsXdv7V LHjpNQ== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g88k7hbax-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 07:06:03 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-84e024d2129so1854356b3a.2 for ; Mon, 24 Aug 2026 00:06:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787555162; x=1788159962; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tAcnAbP32S5gpYPX5Og5xiDNjJ/HxZkg1tijhne6rng=; b=LkFcXQAJIsY4xZDLWFIV/MfAbF29gAB5U0dYhI/8WKMGHijJFnFNfDEt1lccrdWJW7 65yeX+qPZNE0pA5rLo4019pfvD3yxxfGGaXVNkZZIcnREZl4alYmtKbCdlTbFrZZlU5M NqK1yol4iVq5kZt15eyXr/ybJZk8FPLWOPnpLmjnOb/flAWJr/F+LbUxICdmF7FuDBx1 eYImbdAx4x92H/ivmtHH9IWLzdvv0hDDaU69pdYy4tGvGjgD3kD9ut2pJG9yehv+XH9o FhtdepSTStjK8LlBCeW83o8I2g0S+eova5BzjiPcj9UEzHtLrERVdbK1fn0jHNId8/Qa rXKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787555162; x=1788159962; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=tAcnAbP32S5gpYPX5Og5xiDNjJ/HxZkg1tijhne6rng=; b=jTOoKyZgtpHa7kdk+QxgCSDR+CfAVO+LAdUnvTCVoiEop0j86TudF9J1i6kVIs16Qx tbisRBTc8KpKQMzVWtOoaTlPmMs1D8SAVwvoD2Ij0l9E1dzkkYifUh/SaVZZqIpDMSYO NRdT/qWcEv/ezu8iM8QO3DTMAsqpNbAhZw8H/TIOTgMb/ctAgeiCKAbCFbVAhVwAFxmH pfjetjpW3de4CT6iXCRQVPCHkcS/gXJUbNWLnm6qaUjelB9EqPbVNO80utkIVzGvZ0rP EysURHZ42ii3OHgPuK8RNigfiTqCjwUi/THt2zDvRE6e38NNL23bWvhaS9aRWw3abXOf GSNA== X-Forwarded-Encrypted: i=1; AHgh+Rpir01uUHWYc5IwGNd7MZ5J/TD3yK4wlkIfw/fjVKM8wBzBNXfCAutCFoJqND9dIdSysgp+voS7yaRGhos=@vger.kernel.org X-Gm-Message-State: AFuF++mKQ+AZrQGSNVbCZqytncNVCKCwaUrYrIusysoxUzEr6AM24wqI 3HgMECTBP23+8/+PWjNXYVVT8vYDG499b5ipfaWraPCtmGS5dQLly1kEPylhL5Y4sPt097nQQra To8+0IZWjGNoYe/pKY0I2dfKhJn5dG+UQKn+XZJdVULkYQqOifbVEhgCbo0BB2hsmT7M= X-Gm-Gg: AR+sD12wBBM2/1tq2efBS99L/Scazu4eVMYNhlcld60aCNHfkZ91OP9053v0xOUzK9N crnGOkv18xZkzDmxtWIoaCJAywDBAxkWM35NpgBW57gKtoBkcn/C6laCSDhTkcuuRezbZ9nb1wm 14U4EkAmaGdEDM5pORdTbxYMDmyZQwFmBYcQ+AmUcZ7UMeOFMpjfnGCdEsyW1BraxPToRj8tKnq Bfbh5Z3CoGvKEEYA5nZiTO3hEneFuzFQVPMxlsknlDbDjVvvvpwMycL7cw1IHKgV/dFx/rC4jdM NWjqtp+A1vcAwmfD3cn3TlcFBwVpmV+Aszi/mux76TkjtibreTI/B7Iqlqkyt+5BPISKhBciUyv qew/Ym3gktcLu0BYF+d8CmZ8uj9Xkcj/vVcg/bxt83k7LDrWMDY54mPM= X-Received: by 2002:a05:6a00:ba8d:b0:82f:50cd:e586 with SMTP id d2e1a72fcca58-851fa018939mr42280441b3a.13.1787555162105; Mon, 24 Aug 2026 00:06:02 -0700 (PDT) X-Received: by 2002:a05:6a00:ba8d:b0:82f:50cd:e586 with SMTP id d2e1a72fcca58-851fa018939mr42280353b3a.13.1787555161644; Mon, 24 Aug 2026 00:06:01 -0700 (PDT) Received: from hu-chunkaid-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8520f149ef3sm1642178b3a.41.2026.08.24.00.05.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 00:06:00 -0700 (PDT) From: Chunkai Deng Date: Mon, 24 Aug 2026 00:05:53 -0700 Subject: [PATCH v2 1/2] rpmsg: glink: Split protocol start out of native_probe Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260824-rpmsg-glink-split-protocol-start-v2-1-362d7c233f66@oss.qualcomm.com> References: <20260824-rpmsg-glink-split-protocol-start-v2-0-362d7c233f66@oss.qualcomm.com> In-Reply-To: <20260824-rpmsg-glink-split-protocol-start-v2-0-362d7c233f66@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier Cc: Konrad Dybcio , linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, chris.lew@oss.qualcomm.com, tony.truong@oss.qualcomm.com, tao.zhang1@oss.qualcomm.com, peter.chen@oss.qualcomm.com, Chunkai Deng X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787555157; l=4229; i=chunkai.deng@oss.qualcomm.com; s=20260604; h=from:subject:message-id; bh=7GMn7+pY4NrOqBGNfEhN/wEFhTlvXdgKNBf0GUDbwNM=; b=TdL9EzepQjh26r3EHeZ4Ev45MZucLOUINRa9RkYJJo/ADsyjONx8PJKx5zc/9EHN0Y5WZQaz8 /pZ/mLtlGN0BrsvqTSuPOrpaYdVtiIMgi/jcGoPku6LCL1ZIb3trsly X-Developer-Key: i=chunkai.deng@oss.qualcomm.com; a=ed25519; pk=wWxCpsJRKQeVRzpZ8GLRnUX6ozLMowqE3hiz/j+j9O8= X-Authority-Analysis: v=2.4 cv=b4iCJNGx c=1 sm=1 tr=0 ts=6a8bed5c cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=DdSiwBDnyMY8Rz7v4E0A:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDA2MCBTYWx0ZWRfX4dcV53V8xwtN dQdG5M4AWY0LpBIQJ8c+rg1yXj4KpWDXxjGEAkT5O/uI9o6sfjdFzxpz2DHC10y3c4SNu15v7RR 63ICJjtyhlGSZ2D7XUCkO+5MMUzyWMA= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDA2MCBTYWx0ZWRfX9Fmni4O//WNg q6kaSfMblAqr2zqdHd7FyhQ5cDop2xIVU6uq0cLps+7LwYaf16aRiwl9KkVB3OJ24lnd7LJMB0p zT6O8A4fshO1zQN8wxqBUOnfbnLcb7p18pKASDJg3i60zx5I3+pbF76H9Om6fHEQhYwTc0OpyD0 1vSPNbrpeMri/0wD3SW5oNBQdmVVzWWSm+ZBvPaXu+gknn98BgL/Efrd77JxlL8ynCTBAYn+e75 Og9zpD/ghcM1PQW1FWQlQzHH88xfDuJMdD2l9z0GyDlXJS8fJaq8hyf7Lv3xOa3mnNU6Elh4maA rSVclZ1SGdl1sCyiQkxJqauZvJPZM3TlovFDqkGLNtZYvkekEiyCexxYzoWUEszo2J0Nq6W2C5F PL2wLoCxEVzVsJlcHRThIDW4Y2/9tcwf9x65emyS2tGfyuH2YdVk5PhLIt5xVjZQGIqG/owA+Vm ZVW0Dkn9Wvn3+EfehgA== X-Proofpoint-ORIG-GUID: dIlsKTIYLLjkeVxhroF5C-DU_OxldQqL X-Proofpoint-GUID: dIlsKTIYLLjkeVxhroF5C-DU_OxldQqL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_02,2026-08-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240060 The SMEM and RPM transports request their receive interrupt with IRQF_NO_AUTOEN and enable it only once qcom_glink_native_probe() has returned. But native_probe() sends the version command, so on a fast remote the version ACK can land while the interrupt is still masked. The ACK is dropped and the handshake never completes. Move the version command and the chrdev registration into a new qcom_glink_native_start(), leaving native_probe() to set up the glink instance. Both transports enable their interrupt before calling native_start(). Signed-off-by: Chunkai Deng Assisted-by: Claude:claude-opus-5 Reviewed-by: Konrad Dybcio --- drivers/rpmsg/qcom_glink_native.c | 32 ++++++++++++++++++++++++++++---- drivers/rpmsg/qcom_glink_native.h | 1 + drivers/rpmsg/qcom_glink_rpm.c | 8 ++++++++ drivers/rpmsg/qcom_glink_smem.c | 8 ++++++++ 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_n= ative.c index d9d4468e4cbd..2a284b22a037 100644 --- a/drivers/rpmsg/qcom_glink_native.c +++ b/drivers/rpmsg/qcom_glink_native.c @@ -1928,17 +1928,41 @@ struct qcom_glink *qcom_glink_native_probe(struct d= evice *dev, if (ret) dev_err(dev, "failed to add groups\n"); =20 + return glink; +} +EXPORT_SYMBOL_GPL(qcom_glink_native_probe); + +/** + * qcom_glink_native_start() - start the GLINK protocol handshake + * @glink: glink handle returned by qcom_glink_native_probe() + * + * Send the initial version command and register the chrdev. This is split + * out from qcom_glink_native_probe() so that a transport can enable its + * receive interrupt before the version handshake is initiated, ensuring t= he + * version ACK from the remote is not missed. + * + * Failure to register the chrdev is not fatal and only logged, matching t= he + * previous behaviour of qcom_glink_native_probe(). + * + * Return: 0 on success, negative errno if sending the version command fai= led. + */ +int qcom_glink_native_start(struct qcom_glink *glink) +{ + int ret; + ret =3D qcom_glink_send_version(glink); - if (ret) - return ERR_PTR(ret); + if (ret) { + dev_err(glink->dev, "failed to send version: %d\n", ret); + return ret; + } =20 ret =3D qcom_glink_create_chrdev(glink); if (ret) dev_err(glink->dev, "failed to register chrdev\n"); =20 - return glink; + return 0; } -EXPORT_SYMBOL_GPL(qcom_glink_native_probe); +EXPORT_SYMBOL_GPL(qcom_glink_native_start); =20 static int qcom_glink_remove_device(struct device *dev, void *data) { diff --git a/drivers/rpmsg/qcom_glink_native.h b/drivers/rpmsg/qcom_glink_n= ative.h index 8dbec24de23e..783209980c3a 100644 --- a/drivers/rpmsg/qcom_glink_native.h +++ b/drivers/rpmsg/qcom_glink_native.h @@ -35,6 +35,7 @@ struct qcom_glink *qcom_glink_native_probe(struct device = *dev, struct qcom_glink_pipe *rx, struct qcom_glink_pipe *tx, bool intentless); +int qcom_glink_native_start(struct qcom_glink *glink); void qcom_glink_native_remove(struct qcom_glink *glink); void qcom_glink_native_rx(struct qcom_glink *glink); =20 diff --git a/drivers/rpmsg/qcom_glink_rpm.c b/drivers/rpmsg/qcom_glink_rpm.c index e3ba2c63a5fc..34f18c3e58c8 100644 --- a/drivers/rpmsg/qcom_glink_rpm.c +++ b/drivers/rpmsg/qcom_glink_rpm.c @@ -358,6 +358,14 @@ static int glink_rpm_probe(struct platform_device *pde= v) =20 enable_irq(rpm->irq); =20 + ret =3D qcom_glink_native_start(glink); + if (ret) { + disable_irq(rpm->irq); + qcom_glink_native_remove(glink); + mbox_free_channel(rpm->mbox_chan); + return ret; + } + return 0; } =20 diff --git a/drivers/rpmsg/qcom_glink_smem.c b/drivers/rpmsg/qcom_glink_sme= m.c index 62adc4db2317..28f6cfda6352 100644 --- a/drivers/rpmsg/qcom_glink_smem.c +++ b/drivers/rpmsg/qcom_glink_smem.c @@ -348,8 +348,16 @@ struct qcom_glink_smem *qcom_glink_smem_register(struc= t device *parent, =20 enable_irq(smem->irq); =20 + ret =3D qcom_glink_native_start(glink); + if (ret) + goto err_disable_irq; + return smem; =20 +err_disable_irq: + disable_irq(smem->irq); + qcom_glink_native_remove(glink); + err_free_mbox: mbox_free_channel(smem->mbox_chan); =20 --=20 2.43.0 From nobody Mon Sep 28 09:58:48 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9DD13EC6A9 for ; Mon, 24 Aug 2026 07:06:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787555169; cv=none; b=C4K5duJzKSCSKoSoA1YiWZ/xQyNP29LTqNQ2JgKQvGhn3rgBQNSz96Jd9QG4Dmave7dYQjK9UXJ7pAwG673qpXCnJLf1PV5ZCIs/7AxSXhFHoqiBlyswuofGnqdMpVwaFic/Nkm5I9FeBLkVo2rZkbfT3cQEf92tutJVsOCggNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787555169; c=relaxed/simple; bh=fFbBdZsBn9cYbR38sV1mk2Del8rxzLUumOQEDYuzHUQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mXlb1R+zeIbdGw1BV4TLCTMeuPIYw9IDKoWeqEKFaQDLN7gM3IFfCe809Bv5+2e3IG49oLTuI+JLA1Y7QVlutdq1JQqFrLc6uzvfKrFbUKi5ZF2tsv0wPDthBebKH4SSH4AocoacBS2mw3qc6DSWMYWyCYbOxvuUwIxhQAn/4aA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SVb73bNJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=atEN52uS; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SVb73bNJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="atEN52uS" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67O5QxCx2041216 for ; Mon, 24 Aug 2026 07:06:07 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= G8PGqfABGUV1c9BbZPowg1NQDNpEwLnOTxCBQoBl8Uw=; b=SVb73bNJdegVvLfs LhG9ra4PJbsTkynGUShSV674zHzovCqAB87jZspJBVe0GKGmLXt8C2fMtP0eujAD Qv5iZr8xntMuJjAuy2Mvs4+VYl02dxNbay54Z8Ks1+9h7IqN4iFmeyCUxNgx0GkO E2iZIwOD+6n6M0e6kpqL/UooJCyZxWDudW2BLLatCwEyUt4vRvwHOBFewoZso3hV cqu9qURLrtBkwK9B9uZOiG6d3wF5BfujOg+Ip/dXiC/Dbc49YjOla9iz66PhqCxD RYSMaGfP0iSCMF1YZolFTUSLn7pS1xrdi76TiDarr0zWNLZIPALSfMYh4WygZMH1 2uR6Rg== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g88k7hbbe-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 24 Aug 2026 07:06:06 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-84e4ef9a74aso2027164b3a.1 for ; Mon, 24 Aug 2026 00:06:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787555163; x=1788159963; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=G8PGqfABGUV1c9BbZPowg1NQDNpEwLnOTxCBQoBl8Uw=; b=atEN52uSoirGs5uZ+3QLb01PFC7x4V76BusrZNINDYS2PFrqcJ7Eb+jhggGIgYsN5C F+TNB7o3P56uHg0MFwTmhqoF2SoghAzTic7NBKxp471Az7ta3boVefIbFknrUWLlGHsw +WEUmLqJFAKTBEh2PSDp1Y16r0v+nyiLse9KJRlB5W8YpBTm+W4Lh4oi48QXC2c4s7Ay 6OCiTaoV20yN5wKgI2YB2gbE5tLZUhQKZdqxTrxPKt/GrQ3t6BN72dVKOg/fdjWsIjNH iFVHR15LRCCiIQOo9bYDQrE40t0pszO8S0B5jgouZsLf7o/raQQhiXZx7rH29Aod7d0l fJ9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787555163; x=1788159963; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=G8PGqfABGUV1c9BbZPowg1NQDNpEwLnOTxCBQoBl8Uw=; b=k6/iCDevu6JE3bKGBMNQfv4XCBv69gGip+eNkbLPYIsvmUUBo8ImCOotaiNWjI+unM O8Ibig9R5e9uKXtz8NgiCPNOX6s1OR7CIpchqyX33sEbnvXzGesiWDkHU/bW+yebT8Uk EoLOXKJfESlB+my5wvO/wfZ0wfWKhU+o4PZflGbDsxRx8LLpXqRgUhimUpWctgEttat0 nlcogWXVLof5oaPdcjDBN5KgqoD3f9q1N4Rk3IngfJEctpDQpLocSSXb47IbDFoAnml7 HleIefAZS0VbT/FNXSiFionxmnP03ady7OXZLSZZEYeptrdoawl3g+3xvwlZyyu3tFmm Vyig== X-Forwarded-Encrypted: i=1; AHgh+RoaWg01odTy1wUZ337W7v3skGL0FkTt2JoqlPBWO+7GZrfCDDjwghwqx4n5VR7XclMASA5zXFzUbh+pZVY=@vger.kernel.org X-Gm-Message-State: AFuF++mbNmaQREltYhyXTqU+Gh//M2azIKVzjs6U5KNVNt1DlCwhFh+o PHj/lTxCttk13ab2q4HuYRp8XbSfkfmR278buVarQLPgLQ1UyWlSlL+mEfBCbRaKLNJhGq5yQnB mJqRM2W37LT7GBjG/esMp2DeYE4YKlSPBZjh0vQg00rE+wJ7V45q8RO5EgDdwR5Nr3cM= X-Gm-Gg: AR+sD10EWeiQfxVBEE9tcOhzVzM5CVMOsrktQNJ38uT7aR+hpOrLaFeq108kwpPe87P 4nDN6O3Ckjnq773sbe8IDEDxhsRAm9afQegVo4Axda8yYn0INIL3H2HpKPrgC6P8S55+KWy3C0s 90guar2zJUK84RuqHaGX7ICvje1rLqWTDBkkUZFBeU/9/KPiixQDbiWrM7Tl07czY5vFdoOn30d GMXOu8C25y30N+3LhgWyNrE2YYTykNrll6PHAO+W2xBbjkFYVz5+ZatzssErqk1uIDKCnkiJUj0 MUsOFk/p7tiCcOVNWXpFLf2gRFRI8C7bdCECZFC9qTjkGZDWVMMLEM3xkLezVLU0gsTpG1jdpSw m8hEiRjAoOoWOM7TN1SdOKC0SnIp8765YXRq5EiwOGVDd5zMlGsoIMRY= X-Received: by 2002:a05:6a00:348b:b0:848:4424:2b8e with SMTP id d2e1a72fcca58-851f9a8fb96mr41712162b3a.3.1787555163557; Mon, 24 Aug 2026 00:06:03 -0700 (PDT) X-Received: by 2002:a05:6a00:348b:b0:848:4424:2b8e with SMTP id d2e1a72fcca58-851f9a8fb96mr41712115b3a.3.1787555163244; Mon, 24 Aug 2026 00:06:03 -0700 (PDT) Received: from hu-chunkaid-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8520f149ef3sm1642178b3a.41.2026.08.24.00.06.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 00:06:02 -0700 (PDT) From: Chunkai Deng Date: Mon, 24 Aug 2026 00:05:54 -0700 Subject: [PATCH v2 2/2] rpmsg: glink: Request the RX interrupt already enabled Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260824-rpmsg-glink-split-protocol-start-v2-2-362d7c233f66@oss.qualcomm.com> References: <20260824-rpmsg-glink-split-protocol-start-v2-0-362d7c233f66@oss.qualcomm.com> In-Reply-To: <20260824-rpmsg-glink-split-protocol-start-v2-0-362d7c233f66@oss.qualcomm.com> To: Bjorn Andersson , Mathieu Poirier Cc: Konrad Dybcio , linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, chris.lew@oss.qualcomm.com, tony.truong@oss.qualcomm.com, tao.zhang1@oss.qualcomm.com, peter.chen@oss.qualcomm.com, Chunkai Deng X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1787555157; l=3818; i=chunkai.deng@oss.qualcomm.com; s=20260604; h=from:subject:message-id; bh=fFbBdZsBn9cYbR38sV1mk2Del8rxzLUumOQEDYuzHUQ=; b=5z5pW4rjQaHMBrdo6p5ssrK1OewbqZ1Mrgw+rWaYrun3losyapT8VYc1DKhFckVRHJKONFJtf CCM7Uo3pIFUDjxpEt+LMjyagPqVD0Ukn+/2TkrDxY9Pf7pLjq9M3OeG X-Developer-Key: i=chunkai.deng@oss.qualcomm.com; a=ed25519; pk=wWxCpsJRKQeVRzpZ8GLRnUX6ozLMowqE3hiz/j+j9O8= X-Authority-Analysis: v=2.4 cv=b4iCJNGx c=1 sm=1 tr=0 ts=6a8bed5e cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=ubEyju5v012Ajf4tItQA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODI0MDA2MCBTYWx0ZWRfX1sE8Cvd4evAp kyj2QD2+EOHDqDmz+c70CoFbBA46UF590iITN4/Ydmi1UnqaGGsHtOdcL42B8kt6yMFyQV9NJL9 0qEHOc4c7s9KnyBYeBTPp5Fs1dp7T+c= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI0MDA2MCBTYWx0ZWRfX3YIlTxKKP1nF +LtOiy+zFObRmky54yi+qPtIH7w0NxUmxRpcp/uBuasD698LA+B0+icn/zrPW1Mx2jdTpUSCnzE SEcAjsLjRHew2nEo7BI23LlwJYCki8DFxLofiognebVCKvzYHpcbnt0TLIhWXtr3J61D25B0Hk+ WH9Y+HtbILhxN5X0TliT2zD3034hOAQFmLAScP0LKNR6kSCYTxVKtWQNDHJUHattWi2nZgDa31k GnqrV1sZmURFzbK4OnaH/KlrLA7X6/QuNMuBgiFekD4vu4Yj2JMGFk3gOOCSsx34eIpuchrk3ae Sy5TRXR6q8+/7wY0CBbvpbH9QhSAbh1PYT0LO6qsPNna3YSBguyIsQA3+A6N2jiX2yzknxzg2PK UIu5OakxWXjCi1SlAq1nBzJF9KZA2rtuJnmcItEN/AuPajo1r+HezXcq3f6JmEHFhYDJRtNHQOz M6WZYHOZqENAfmt0kHA== X-Proofpoint-ORIG-GUID: jk0KHzicN1AxIRnhK5xKL-o2Jutipv4B X-Proofpoint-GUID: jk0KHzicN1AxIRnhK5xKL-o2Jutipv4B X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-24_02,2026-08-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 phishscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608240060 The receive interrupt is requested masked early in probe and enabled further down, once the glink instance has been stored in the transport. Now that the version command is no longer sent from qcom_glink_native_probe(), nothing needs to happen between those two points. Request the interrupt where it used to be enabled, and drop IRQF_NO_AUTOEN along with the enable_irq() call. The RPM error path becomes a set of labels, the way SMEM already unwinds. Signed-off-by: Chunkai Deng Assisted-by: Claude:claude-opus-5 Reviewed-by: Konrad Dybcio --- drivers/rpmsg/qcom_glink_rpm.c | 34 ++++++++++++++++++---------------- drivers/rpmsg/qcom_glink_smem.c | 19 +++++++++---------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/drivers/rpmsg/qcom_glink_rpm.c b/drivers/rpmsg/qcom_glink_rpm.c index 34f18c3e58c8..a85d78f8283e 100644 --- a/drivers/rpmsg/qcom_glink_rpm.c +++ b/drivers/rpmsg/qcom_glink_rpm.c @@ -316,15 +316,6 @@ static int glink_rpm_probe(struct platform_device *pde= v) if (ret) return ret; =20 - rpm->irq =3D of_irq_get(dev->of_node, 0); - ret =3D devm_request_irq(dev, rpm->irq, qcom_glink_rpm_intr, - IRQF_NO_SUSPEND | IRQF_NO_AUTOEN, - "glink-rpm", rpm); - if (ret) { - dev_err(dev, "failed to request IRQ\n"); - return ret; - } - rpm->mbox_client.dev =3D dev; rpm->mbox_client.knows_txdone =3D true; rpm->mbox_chan =3D mbox_request_channel(&rpm->mbox_client, 0); @@ -356,17 +347,28 @@ static int glink_rpm_probe(struct platform_device *pd= ev) =20 platform_set_drvdata(pdev, rpm); =20 - enable_irq(rpm->irq); - - ret =3D qcom_glink_native_start(glink); + rpm->irq =3D of_irq_get(dev->of_node, 0); + ret =3D devm_request_irq(dev, rpm->irq, qcom_glink_rpm_intr, + IRQF_NO_SUSPEND, "glink-rpm", rpm); if (ret) { - disable_irq(rpm->irq); - qcom_glink_native_remove(glink); - mbox_free_channel(rpm->mbox_chan); - return ret; + dev_err(dev, "failed to request IRQ\n"); + goto err_glink_remove; } =20 + ret =3D qcom_glink_native_start(glink); + if (ret) + goto err_disable_irq; + return 0; + +err_disable_irq: + disable_irq(rpm->irq); + +err_glink_remove: + qcom_glink_native_remove(glink); + mbox_free_channel(rpm->mbox_chan); + + return ret; } =20 static void glink_rpm_remove(struct platform_device *pdev) diff --git a/drivers/rpmsg/qcom_glink_smem.c b/drivers/rpmsg/qcom_glink_sme= m.c index 28f6cfda6352..2d6fa2d3a99b 100644 --- a/drivers/rpmsg/qcom_glink_smem.c +++ b/drivers/rpmsg/qcom_glink_smem.c @@ -304,15 +304,6 @@ struct qcom_glink_smem *qcom_glink_smem_register(struc= t device *parent, goto err_put_dev; } =20 - smem->irq =3D of_irq_get(smem->dev.of_node, 0); - ret =3D devm_request_irq(&smem->dev, smem->irq, qcom_glink_smem_intr, - IRQF_NO_SUSPEND | IRQF_NO_AUTOEN, - "glink-smem", smem); - if (ret) { - dev_err(&smem->dev, "failed to request IRQ\n"); - goto err_put_dev; - } - smem->mbox_client.dev =3D &smem->dev; smem->mbox_client.knows_txdone =3D true; smem->mbox_chan =3D mbox_request_channel(&smem->mbox_client, 0); @@ -346,7 +337,13 @@ struct qcom_glink_smem *qcom_glink_smem_register(struc= t device *parent, =20 smem->glink =3D glink; =20 - enable_irq(smem->irq); + smem->irq =3D of_irq_get(smem->dev.of_node, 0); + ret =3D devm_request_irq(&smem->dev, smem->irq, qcom_glink_smem_intr, + IRQF_NO_SUSPEND, "glink-smem", smem); + if (ret) { + dev_err(&smem->dev, "failed to request IRQ\n"); + goto err_glink_remove; + } =20 ret =3D qcom_glink_native_start(glink); if (ret) @@ -356,6 +353,8 @@ struct qcom_glink_smem *qcom_glink_smem_register(struct= device *parent, =20 err_disable_irq: disable_irq(smem->irq); + +err_glink_remove: qcom_glink_native_remove(glink); =20 err_free_mbox: --=20 2.43.0