* Re: [PATCH] net: qrtr: resend HELLO on MHI resume [not found] <20260909055846.16539-1-daniel@quora.org> @ 2026-09-14 9:04 ` Thorsten Leemhuis 2026-09-14 9:39 ` Takashi Iwai 2026-09-15 10:11 ` Vlastimil Babka [not found] ` <hcr4woicsnz3pbhzlguuwjlego7yli3znhjmsx4cdz66xa74zd@wjtle2yslc4b> 2026-09-18 17:05 ` Manivannan Sadhasivam 2 siblings, 2 replies; 12+ messages in thread From: Thorsten Leemhuis @ 2026-09-14 9:04 UTC (permalink / raw) To: Daniel J Blueman, Manivannan Sadhasivam Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel, Linux kernel regressions list, Takashi Iwai On 9/9/26 07:58, Daniel J Blueman wrote: > Since the MHI HELLO exchange was relocated, it is sent only at device > registration. During a suspend-resume cycle, the firmware in WiFi > cards such as WCN7850 indefinitely waits for another HELLO, > triggering: > > ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete > ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 > > Fix this by triggering the handshake from resume_early in the MHI > transport. > > Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 > suspend-resume cycles. For the record: Takashi ran into this regression as well and provided a different fix, but withdrew it after I pointed out this fix, which worked for Takashi. For details see: https://lore.kernel.org/all/87mrtkpd2q.wl-tiwai@suse.de/ Ciao, Thorsten > Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") > Signed-off-by: Daniel J Blueman <daniel@quora.org> > --- > net/qrtr/af_qrtr.c | 13 +++++++++++++ > net/qrtr/mhi.c | 10 +++++++++- > net/qrtr/qrtr.h | 2 ++ > 3 files changed, 24 insertions(+), 1 deletion(-) > > diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c > index 78347c937af7..2ffcfc2fdb4a 100644 > --- a/net/qrtr/af_qrtr.c > +++ b/net/qrtr/af_qrtr.c > @@ -623,6 +623,19 @@ static void qrtr_hello_work(struct work_struct *work) > qrtr_port_put(ctrl); > } > > +/* Trigger the HELLO handshake after the remote has been reset, eg on resume */ > +void qrtr_endpoint_hello(struct qrtr_endpoint *ep) > +{ > + struct qrtr_node *node = ep->node; > + > + mutex_lock(&node->ep_lock); > + node->hello_sent = false; > + mutex_unlock(&node->ep_lock); > + > + schedule_delayed_work(&node->say_hello, 0); > +} > +EXPORT_SYMBOL_GPL(qrtr_endpoint_hello); > + > /** > * qrtr_endpoint_register() - register a new endpoint > * @ep: endpoint to register > diff --git a/net/qrtr/mhi.c b/net/qrtr/mhi.c > index 3990da1a65dc..50326ffa3401 100644 > --- a/net/qrtr/mhi.c > +++ b/net/qrtr/mhi.c > @@ -183,6 +183,7 @@ static int __maybe_unused qcom_mhi_qrtr_pm_suspend_late(struct device *dev) > static int __maybe_unused qcom_mhi_qrtr_pm_resume_early(struct device *dev) > { > struct mhi_device *mhi_dev = container_of(dev, struct mhi_device, dev); > + struct qrtr_mhi_dev *qdev = dev_get_drvdata(dev); > enum mhi_state state; > int rc; > > @@ -201,7 +201,13 @@ static int __maybe_unused qcom_mhi_qrtr_pm_resume_early(struct device *dev) > return rc; > } > > - return qcom_mhi_qrtr_queue_dl_buffers(mhi_dev); > + rc = qcom_mhi_qrtr_queue_dl_buffers(mhi_dev); > + if (rc) > + return rc; > + > + qrtr_endpoint_hello(&qdev->ep); > + > + return 0; > } > > static const struct dev_pm_ops qcom_mhi_qrtr_pm_ops = { > diff --git a/net/qrtr/qrtr.h b/net/qrtr/qrtr.h > index 3f2d28696062..de2de69a6199 100644 > --- a/net/qrtr/qrtr.h > +++ b/net/qrtr/qrtr.h > @@ -27,6 +27,8 @@ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int nid); > > void qrtr_endpoint_unregister(struct qrtr_endpoint *ep); > > +void qrtr_endpoint_hello(struct qrtr_endpoint *ep); > + > int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len); > > int qrtr_ns_init(void); ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-14 9:04 ` [PATCH] net: qrtr: resend HELLO on MHI resume Thorsten Leemhuis @ 2026-09-14 9:39 ` Takashi Iwai 2026-09-15 10:11 ` Vlastimil Babka 1 sibling, 0 replies; 12+ messages in thread From: Takashi Iwai @ 2026-09-14 9:39 UTC (permalink / raw) To: Thorsten Leemhuis Cc: Daniel J Blueman, Manivannan Sadhasivam, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel, Linux kernel regressions list, Takashi Iwai On Mon, 14 Sep 2026 11:04:25 +0200, Thorsten Leemhuis wrote: > > On 9/9/26 07:58, Daniel J Blueman wrote: > > Since the MHI HELLO exchange was relocated, it is sent only at device > > registration. During a suspend-resume cycle, the firmware in WiFi > > cards such as WCN7850 indefinitely waits for another HELLO, > > triggering: > > > > ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete > > ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 > > > > Fix this by triggering the handshake from resume_early in the MHI > > transport. > > > > Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 > > suspend-resume cycles. > > For the record: Takashi ran into this regression as well and provided a > different fix, but withdrew it after I pointed out this fix, which > worked for Takashi. For details see: > https://lore.kernel.org/all/87mrtkpd2q.wl-tiwai@suse.de/ Yep, feel free to take my tested-by tag, too: Tested-by: Takashi Iwai <tiwai@suse.de> thanks, Takashi ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-14 9:04 ` [PATCH] net: qrtr: resend HELLO on MHI resume Thorsten Leemhuis 2026-09-14 9:39 ` Takashi Iwai @ 2026-09-15 10:11 ` Vlastimil Babka 2026-09-15 10:45 ` Vlastimil Babka (SUSE) 1 sibling, 1 reply; 12+ messages in thread From: Vlastimil Babka @ 2026-09-15 10:11 UTC (permalink / raw) To: Thorsten Leemhuis, Daniel J Blueman, Manivannan Sadhasivam Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel, Linux kernel regressions list, Takashi Iwai On 9/14/26 11:04, Thorsten Leemhuis wrote: > On 9/9/26 07:58, Daniel J Blueman wrote: >> Since the MHI HELLO exchange was relocated, it is sent only at device >> registration. During a suspend-resume cycle, the firmware in WiFi >> cards such as WCN7850 indefinitely waits for another HELLO, >> triggering: >> >> ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete >> ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 >> >> Fix this by triggering the handshake from resume_early in the MHI >> transport. >> >> Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 >> suspend-resume cycles. > > For the record: Takashi ran into this regression as well and provided a > different fix, but withdrew it after I pointed out this fix, which > worked for Takashi. For details see: > https://lore.kernel.org/all/87mrtkpd2q.wl-tiwai@suse.de/ Thanks to Thorsten pointing me there I skipped the bisect and applied this patch instead and it works. My laptop is T14s AMD Gen3 with ath11k_pci. Since rc2 the wifi would stop working on suspend/resume, making the resume freeze for a while (I initially thought it was frozen completely and was shutting off the laptop). Interestingly the card doesn't recover after reboot, but only after a full power off/on cycle. But if the HELLO handshake is sent after a boot, shouldn't it recover? Maybe the hardware gets too confused to recover. Dunno. Hm maybe I can try if 7.2 kernel (and/or 7.3 with this patch) recovers it without poweroff/on after a 7.3 without this patch suspend/resume wedges it. But anyway this prevents the suspend/resume issue for me from happening in the first place on 7.3-rc3, so: Tested-by: Vlastimil Babka (SUSE) <vbabka@kernel.org> > > Ciao, Thorsten >> Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") >> Signed-off-by: Daniel J Blueman <daniel@quora.org> >> --- >> net/qrtr/af_qrtr.c | 13 +++++++++++++ >> net/qrtr/mhi.c | 10 +++++++++- >> net/qrtr/qrtr.h | 2 ++ >> 3 files changed, 24 insertions(+), 1 deletion(-) >> >> diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c >> index 78347c937af7..2ffcfc2fdb4a 100644 >> --- a/net/qrtr/af_qrtr.c >> +++ b/net/qrtr/af_qrtr.c >> @@ -623,6 +623,19 @@ static void qrtr_hello_work(struct work_struct *work) >> qrtr_port_put(ctrl); >> } >> >> +/* Trigger the HELLO handshake after the remote has been reset, eg on resume */ >> +void qrtr_endpoint_hello(struct qrtr_endpoint *ep) >> +{ >> + struct qrtr_node *node = ep->node; >> + >> + mutex_lock(&node->ep_lock); >> + node->hello_sent = false; >> + mutex_unlock(&node->ep_lock); >> + >> + schedule_delayed_work(&node->say_hello, 0); >> +} >> +EXPORT_SYMBOL_GPL(qrtr_endpoint_hello); >> + >> /** >> * qrtr_endpoint_register() - register a new endpoint >> * @ep: endpoint to register >> diff --git a/net/qrtr/mhi.c b/net/qrtr/mhi.c >> index 3990da1a65dc..50326ffa3401 100644 >> --- a/net/qrtr/mhi.c >> +++ b/net/qrtr/mhi.c >> @@ -183,6 +183,7 @@ static int __maybe_unused qcom_mhi_qrtr_pm_suspend_late(struct device *dev) >> static int __maybe_unused qcom_mhi_qrtr_pm_resume_early(struct device *dev) >> { >> struct mhi_device *mhi_dev = container_of(dev, struct mhi_device, dev); >> + struct qrtr_mhi_dev *qdev = dev_get_drvdata(dev); >> enum mhi_state state; >> int rc; >> >> @@ -201,7 +201,13 @@ static int __maybe_unused qcom_mhi_qrtr_pm_resume_early(struct device *dev) >> return rc; >> } >> >> - return qcom_mhi_qrtr_queue_dl_buffers(mhi_dev); >> + rc = qcom_mhi_qrtr_queue_dl_buffers(mhi_dev); >> + if (rc) >> + return rc; >> + >> + qrtr_endpoint_hello(&qdev->ep); >> + >> + return 0; >> } >> >> static const struct dev_pm_ops qcom_mhi_qrtr_pm_ops = { >> diff --git a/net/qrtr/qrtr.h b/net/qrtr/qrtr.h >> index 3f2d28696062..de2de69a6199 100644 >> --- a/net/qrtr/qrtr.h >> +++ b/net/qrtr/qrtr.h >> @@ -27,6 +27,8 @@ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int nid); >> >> void qrtr_endpoint_unregister(struct qrtr_endpoint *ep); >> >> +void qrtr_endpoint_hello(struct qrtr_endpoint *ep); >> + >> int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len); >> >> int qrtr_ns_init(void); ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-15 10:11 ` Vlastimil Babka @ 2026-09-15 10:45 ` Vlastimil Babka (SUSE) 0 siblings, 0 replies; 12+ messages in thread From: Vlastimil Babka (SUSE) @ 2026-09-15 10:45 UTC (permalink / raw) To: Thorsten Leemhuis, Daniel J Blueman, Manivannan Sadhasivam Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel, Linux kernel regressions list, Takashi Iwai On 9/15/26 12:11, Vlastimil Babka wrote: > On 9/14/26 11:04, Thorsten Leemhuis wrote: >> On 9/9/26 07:58, Daniel J Blueman wrote: >>> Since the MHI HELLO exchange was relocated, it is sent only at device >>> registration. During a suspend-resume cycle, the firmware in WiFi >>> cards such as WCN7850 indefinitely waits for another HELLO, >>> triggering: >>> >>> ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete >>> ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 >>> >>> Fix this by triggering the handshake from resume_early in the MHI >>> transport. >>> >>> Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 >>> suspend-resume cycles. >> >> For the record: Takashi ran into this regression as well and provided a >> different fix, but withdrew it after I pointed out this fix, which >> worked for Takashi. For details see: >> https://lore.kernel.org/all/87mrtkpd2q.wl-tiwai@suse.de/ > > Thanks to Thorsten pointing me there I skipped the bisect and applied this > patch instead and it works. > > My laptop is T14s AMD Gen3 with ath11k_pci. Since rc2 the wifi would stop > working on suspend/resume, making the resume freeze for a while (I initially > thought it was frozen completely and was shutting off the laptop). > > Interestingly the card doesn't recover after reboot, but only after a full > power off/on cycle. But if the HELLO handshake is sent after a boot, > shouldn't it recover? Maybe the hardware gets too confused to recover. > Dunno. Hm maybe I can try if 7.2 kernel (and/or 7.3 with this patch) > recovers it without poweroff/on after a 7.3 without this patch > suspend/resume wedges it. Neither 7.2 nor 7.3 + patch was able to recover the card on reboot, so while that's not great, at least 7.3+patch isn't worse in this aspect. ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <hcr4woicsnz3pbhzlguuwjlego7yli3znhjmsx4cdz66xa74zd@wjtle2yslc4b>]
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume [not found] ` <hcr4woicsnz3pbhzlguuwjlego7yli3znhjmsx4cdz66xa74zd@wjtle2yslc4b> @ 2026-09-15 10:48 ` Vlastimil Babka 2026-09-16 3:09 ` Jeff Johnson 0 siblings, 1 reply; 12+ messages in thread From: Vlastimil Babka @ 2026-09-15 10:48 UTC (permalink / raw) To: Manivannan Sadhasivam, Daniel J Blueman, Linux regressions mailing list, Thorsten Leemhuis, Takashi Iwai Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel On 9/11/26 12:44, Manivannan Sadhasivam wrote: > On Wed, Sep 09, 2026 at 01:58:44PM +0800, Daniel J Blueman wrote: >> Since the MHI HELLO exchange was relocated, it is sent only at device >> registration. During a suspend-resume cycle, the firmware in WiFi >> cards such as WCN7850 indefinitely waits for another HELLO, >> triggering: >> >> ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete >> ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 >> >> Fix this by triggering the handshake from resume_early in the MHI >> transport. >> >> Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 >> suspend-resume cycles. >> >> Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") >> Signed-off-by: Daniel J Blueman <daniel@quora.org> >> --- >> net/qrtr/af_qrtr.c | 13 +++++++++++++ >> net/qrtr/mhi.c | 10 +++++++++- >> net/qrtr/qrtr.h | 2 ++ >> 3 files changed, 24 insertions(+), 1 deletion(-) >> >> diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c >> index 78347c937af7..2ffcfc2fdb4a 100644 >> --- a/net/qrtr/af_qrtr.c >> +++ b/net/qrtr/af_qrtr.c >> @@ -623,6 +623,19 @@ static void qrtr_hello_work(struct work_struct *work) >> qrtr_port_put(ctrl); >> } >> >> +/* Trigger the HELLO handshake after the remote has been reset, eg on resume */ > > Use proper kernel-doc please. Please prioritize merging this sooner than later (it's a regression from 7.3-rc2 that would hit people if it made it to 7.3 final) even if it means fixing up non-critical aspects later, or by maintainer upon merging. Thanks, Vlastimil > Rest LGTM, thanks! > > - Mani > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-15 10:48 ` Vlastimil Babka @ 2026-09-16 3:09 ` Jeff Johnson 2026-09-16 9:36 ` Thorsten Leemhuis 0 siblings, 1 reply; 12+ messages in thread From: Jeff Johnson @ 2026-09-16 3:09 UTC (permalink / raw) To: Vlastimil Babka, Manivannan Sadhasivam, Daniel J Blueman, Linux regressions mailing list, Thorsten Leemhuis, Takashi Iwai Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel, linux-wireless, ath11k@lists.infradead.org, ath12k@lists.infradead.org On 9/15/2026 3:48 AM, Vlastimil Babka wrote: > On 9/11/26 12:44, Manivannan Sadhasivam wrote: >> On Wed, Sep 09, 2026 at 01:58:44PM +0800, Daniel J Blueman wrote: >>> Since the MHI HELLO exchange was relocated, it is sent only at device >>> registration. During a suspend-resume cycle, the firmware in WiFi >>> cards such as WCN7850 indefinitely waits for another HELLO, >>> triggering: >>> >>> ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete >>> ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 >>> >>> Fix this by triggering the handshake from resume_early in the MHI >>> transport. >>> >>> Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 >>> suspend-resume cycles. >>> >>> Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") >>> Signed-off-by: Daniel J Blueman <daniel@quora.org> >>> --- >>> net/qrtr/af_qrtr.c | 13 +++++++++++++ >>> net/qrtr/mhi.c | 10 +++++++++- >>> net/qrtr/qrtr.h | 2 ++ >>> 3 files changed, 24 insertions(+), 1 deletion(-) >>> >>> diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c >>> index 78347c937af7..2ffcfc2fdb4a 100644 >>> --- a/net/qrtr/af_qrtr.c >>> +++ b/net/qrtr/af_qrtr.c >>> @@ -623,6 +623,19 @@ static void qrtr_hello_work(struct work_struct *work) >>> qrtr_port_put(ctrl); >>> } >>> >>> +/* Trigger the HELLO handshake after the remote has been reset, eg on resume */ >> >> Use proper kernel-doc please. > > Please prioritize merging this sooner than later (it's a regression from > 7.3-rc2 that would hit people if it made it to 7.3 final) even if it means > fixing up non-critical aspects later, or by maintainer upon merging. Concur. I recently fast-forwarded my ath tree and picked up the buggy commit, so everyone using my tree is now affected. And just want to point out that many of the function comments in this file do not use kernel-doc format, so I would not consider that a blocker. But it also would be trivial for the maintainer to add. I've tested this on my HP ZBook 14 where I've replaced the OEM Wi-Fi adapter with WCN7850... Tested-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com> /jeff ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-16 3:09 ` Jeff Johnson @ 2026-09-16 9:36 ` Thorsten Leemhuis 0 siblings, 0 replies; 12+ messages in thread From: Thorsten Leemhuis @ 2026-09-16 9:36 UTC (permalink / raw) To: Jeff Johnson, Vlastimil Babka, Manivannan Sadhasivam, Daniel J Blueman, Linux regressions mailing list, Takashi Iwai Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel, linux-wireless, ath11k@lists.infradead.org, ath12k@lists.infradead.org, netdev On 9/16/26 05:09, Jeff Johnson wrote: > On 9/15/2026 3:48 AM, Vlastimil Babka wrote: >> On 9/11/26 12:44, Manivannan Sadhasivam wrote: >>> On Wed, Sep 09, 2026 at 01:58:44PM +0800, Daniel J Blueman wrote: >>>> Since the MHI HELLO exchange was relocated, it is sent only at device >>>> registration. During a suspend-resume cycle, the firmware in WiFi >>>> cards such as WCN7850 indefinitely waits for another HELLO, >>>> triggering: >>>> [...] >>>> Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") >>>> Signed-off-by: Daniel J Blueman <daniel@quora.org> >>>> [...] >>>> diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c >>>> index 78347c937af7..2ffcfc2fdb4a 100644 >>>> --- a/net/qrtr/af_qrtr.c >>>> +++ b/net/qrtr/af_qrtr.c >>>> @@ -623,6 +623,19 @@ static void qrtr_hello_work(struct work_struct *work) >>>> qrtr_port_put(ctrl); >>>> } >>>> >>>> +/* Trigger the HELLO handshake after the remote has been reset, eg on resume */ >>> >>> Use proper kernel-doc please. > >> Please prioritize merging this sooner than later (it's a regression from >> 7.3-rc2 that would hit people if it made it to 7.3 final) even if it means >> fixing up non-critical aspects later, or by maintainer upon merging. > > Concur. I recently fast-forwarded my ath tree and picked up the buggy commit, > so everyone using my tree is now affected. I wonder if we need somebody (Daniel?) to repost this patch to at least have a chance to get it into the next -rc, as I didn't find the fix in netdev's patchwork when I just looked -- maybe I missed something, but I guess that's because the patch wasn't CCed to netdev. Ciao, Thorsten > And just want to point out that many of the function comments in this file do > not use kernel-doc format, so I would not consider that a blocker. But it also > would be trivial for the maintainer to add. > > I've tested this on my HP ZBook 14 where I've replaced the OEM Wi-Fi adapter > with WCN7850... > > Tested-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com> > > /jeff > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume [not found] <20260909055846.16539-1-daniel@quora.org> 2026-09-14 9:04 ` [PATCH] net: qrtr: resend HELLO on MHI resume Thorsten Leemhuis [not found] ` <hcr4woicsnz3pbhzlguuwjlego7yli3znhjmsx4cdz66xa74zd@wjtle2yslc4b> @ 2026-09-18 17:05 ` Manivannan Sadhasivam 2026-09-21 7:58 ` Vlastimil Babka 2 siblings, 1 reply; 12+ messages in thread From: Manivannan Sadhasivam @ 2026-09-18 17:05 UTC (permalink / raw) To: Daniel J Blueman, netdev Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel + netdev On Wed, Sep 09, 2026 at 01:58:44PM +0800, Daniel J Blueman wrote: > Since the MHI HELLO exchange was relocated, it is sent only at device > registration. During a suspend-resume cycle, the firmware in WiFi > cards such as WCN7850 indefinitely waits for another HELLO, > triggering: > > ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete > ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 > > Fix this by triggering the handshake from resume_early in the MHI > transport. > > Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 > suspend-resume cycles. > > Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") > Signed-off-by: Daniel J Blueman <daniel@quora.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com> Since this patch fixes a regression in linux-next, it'd be good to get it merged asap. - Mani -- மணிவண்ணன் சதாசிவம் ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-18 17:05 ` Manivannan Sadhasivam @ 2026-09-21 7:58 ` Vlastimil Babka 0 siblings, 0 replies; 12+ messages in thread From: Vlastimil Babka @ 2026-09-21 7:58 UTC (permalink / raw) To: Manivannan Sadhasivam, Daniel J Blueman, netdev Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Simon Horman, Chris Lew, Pranav Mahesh Phansalkar, Deepak Kumar Singh, linux-arm-msm, linux-kernel On 9/18/26 19:05, Manivannan Sadhasivam wrote: > + netdev > > On Wed, Sep 09, 2026 at 01:58:44PM +0800, Daniel J Blueman wrote: >> Since the MHI HELLO exchange was relocated, it is sent only at device >> registration. During a suspend-resume cycle, the firmware in WiFi >> cards such as WCN7850 indefinitely waits for another HELLO, >> triggering: >> >> ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete >> ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 >> >> Fix this by triggering the handshake from resume_early in the MHI >> transport. >> >> Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 >> suspend-resume cycles. >> >> Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") >> Signed-off-by: Daniel J Blueman <daniel@quora.org> > > Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com> > > Since this patch fixes a regression in linux-next, it'd be good to get it merged > asap. Linus merged it directly for rc4 as 6a5719cc3ef2 ("net: qrtr: resend HELLO on MHI resume") > - Mani > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Quick regression status pre 7.3-rc4
@ 2026-09-20 14:10 Thorsten Leemhuis
2026-09-20 14:16 ` [PATCH] net: qrtr: resend HELLO on MHI resume Thorsten Leemhuis
0 siblings, 1 reply; 12+ messages in thread
From: Thorsten Leemhuis @ 2026-09-20 14:10 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Linux kernel regressions list, LKML
Hi Linus! Here is a quick report about a one regression from the current
cycle that I found worth mentioning:
* 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register")
[v7.3-rc2] causes resume problems with various ath wifi drivers.
Three subsystem maintainers recently ran into this and two asked kindly
to merge a fix for it quickly -- among them the ath* wifi driver
maintainer, as the culprit made it into the ath devel trees. But we
afaics haven't heard anything from the net maintainers:
https://lore.kernel.org/all/20260909055846.16539-1-daniel@quora.org/
Would be great if you could merge that fix directly. To make it easy for
you, I'll send it as a reply to this mail with all the tags added that
came up over the last few days.
HTH, Ciao, Thorsten
^ permalink raw reply [flat|nested] 12+ messages in thread* [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-20 14:10 Quick regression status pre 7.3-rc4 Thorsten Leemhuis @ 2026-09-20 14:16 ` Thorsten Leemhuis 2026-09-20 18:26 ` Linus Torvalds 0 siblings, 1 reply; 12+ messages in thread From: Thorsten Leemhuis @ 2026-09-20 14:16 UTC (permalink / raw) To: Linus Torvalds; +Cc: Linux kernel regressions list, LKML From: Daniel J Blueman <daniel@quora.org> Since the MHI HELLO exchange was relocated, it is sent only at device registration. During a suspend-resume cycle, the firmware in WiFi cards such as WCN7850 indefinitely waits for another HELLO, triggering: ath12k_wifi7_pci 0004:01:00.0: timeout while waiting for restart complete ath12k_wifi7_pci 0004:01:00.0: failed to resume core: -110 Fix this by triggering the handshake from resume_early in the MHI transport. Validated on Qualcomm X1E-801800 on Lenovo Slim 7x across 10 suspend-resume cycles. Fixes: 544d85de4dc2 ("net: qrtr: Send HELLO message on endpoint register") Signed-off-by: Daniel J Blueman <daniel@quora.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com> Reported-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com> Link: https://lore.kernel.org/all/6257c447-788d-4362-851e-0d552bcf7c56@oss.qualcomm.com/ Tested-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com> Reported-by: Vlastimil Babka (SUSE) <vbabka@suse.com> Link: https://lore.kernel.org/all/ab1491bb-cca5-4145-ac7d-31c966abf7b4@suse.com/ Tested-by: Vlastimil Babka (SUSE) <vbabka@kernel.org> Reported-by: Takashi Iwai <tiwai@suse.de> Link: https://lore.kernel.org/all/87a4plsg4w.wl-tiwai@suse.de/ Tested-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Thorsten Leemhuis <linux@leemhuis.info> --- Hi Linus, as mentioned earlier in this thread, would be great if you could merge this directly to fix an annoying regression. Ciao, THorsteh --- net/qrtr/af_qrtr.c | 13 +++++++++++++ net/qrtr/mhi.c | 9 ++++++++- net/qrtr/qrtr.h | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git net/qrtr/af_qrtr.c net/qrtr/af_qrtr.c index 78347c937af76b..e7b3647424b8f1 100644 --- net/qrtr/af_qrtr.c +++ net/qrtr/af_qrtr.c @@ -623,6 +623,19 @@ static void qrtr_hello_work(struct work_struct *work) qrtr_port_put(ctrl); } +/* Trigger the HELLO handshake after the remote has been reset, eg on resume */ +void qrtr_endpoint_hello(struct qrtr_endpoint *ep) +{ + struct qrtr_node *node = ep->node; + + mutex_lock(&node->ep_lock); + node->hello_sent = false; + mutex_unlock(&node->ep_lock); + + schedule_delayed_work(&node->say_hello, 0); +} +EXPORT_SYMBOL_GPL(qrtr_endpoint_hello); + /** * qrtr_endpoint_register() - register a new endpoint * @ep: endpoint to register diff --git net/qrtr/mhi.c net/qrtr/mhi.c index 3990da1a65dc4f..e9a4bb92ce76ff 100644 --- net/qrtr/mhi.c +++ net/qrtr/mhi.c @@ -183,6 +183,7 @@ static int __maybe_unused qcom_mhi_qrtr_pm_suspend_late(struct device *dev) static int __maybe_unused qcom_mhi_qrtr_pm_resume_early(struct device *dev) { struct mhi_device *mhi_dev = container_of(dev, struct mhi_device, dev); + struct qrtr_mhi_dev *qdev = dev_get_drvdata(dev); enum mhi_state state; int rc; @@ -201,7 +202,13 @@ static int __maybe_unused qcom_mhi_qrtr_pm_resume_early(struct device *dev) return rc; } - return qcom_mhi_qrtr_queue_dl_buffers(mhi_dev); + rc = qcom_mhi_qrtr_queue_dl_buffers(mhi_dev); + if (rc) + return rc; + + qrtr_endpoint_hello(&qdev->ep); + + return 0; } static const struct dev_pm_ops qcom_mhi_qrtr_pm_ops = { diff --git net/qrtr/qrtr.h net/qrtr/qrtr.h index 3f2d28696062a5..de2de69a619936 100644 --- net/qrtr/qrtr.h +++ net/qrtr/qrtr.h @@ -27,6 +27,8 @@ int qrtr_endpoint_register(struct qrtr_endpoint *ep, unsigned int nid); void qrtr_endpoint_unregister(struct qrtr_endpoint *ep); +void qrtr_endpoint_hello(struct qrtr_endpoint *ep); + int qrtr_endpoint_post(struct qrtr_endpoint *ep, const void *data, size_t len); int qrtr_ns_init(void); base-commit: 5dd1818b15d98d4a20806cd00b1b40320b06004f -- 2.55.0 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-20 14:16 ` [PATCH] net: qrtr: resend HELLO on MHI resume Thorsten Leemhuis @ 2026-09-20 18:26 ` Linus Torvalds 2026-09-21 4:20 ` Thorsten Leemhuis 0 siblings, 1 reply; 12+ messages in thread From: Linus Torvalds @ 2026-09-20 18:26 UTC (permalink / raw) To: Thorsten Leemhuis; +Cc: Linux kernel regressions list, LKML On Sun, 20 Sept 2026 at 07:16, Thorsten Leemhuis <linux@leemhuis.info> wrote: > > diff --git net/qrtr/af_qrtr.c net/qrtr/af_qrtr.c > index 78347c937af76b..e7b3647424b8f1 100644 > --- net/qrtr/af_qrtr.c > +++ net/qrtr/af_qrtr.c How did you generate this diff? You have some very broken setup. A real git diff should have had an extra path component, and looks like diff --git a/net/qrtr/af_qrtr.c b/net/qrtr/af_qrtr.c index 78347c937af7..e7b3647424b8 100644 --- a/net/qrtr/af_qrtr.c +++ b/net/qrtr/af_qrtr.c and I don't know what broken scripts you use that break that standard format. I fixed it up in order to apply it, but you have a "--no-prefix" or similar horror somewhere that needs to go away. Linus ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume 2026-09-20 18:26 ` Linus Torvalds @ 2026-09-21 4:20 ` Thorsten Leemhuis 0 siblings, 0 replies; 12+ messages in thread From: Thorsten Leemhuis @ 2026-09-21 4:20 UTC (permalink / raw) To: Linus Torvalds; +Cc: Linux kernel regressions list, LKML On 9/20/26 20:26, Linus Torvalds wrote: > On Sun, 20 Sept 2026 at 07:16, Thorsten Leemhuis <linux@leemhuis.info> wrote: >> >> diff --git net/qrtr/af_qrtr.c net/qrtr/af_qrtr.c >> index 78347c937af76b..e7b3647424b8f1 100644 >> --- net/qrtr/af_qrtr.c >> +++ net/qrtr/af_qrtr.c > > How did you generate this diff? You have some very broken setup. > [...] > I fixed it up in order to apply it, but you have a "--no-prefix" or > similar horror somewhere that needs to go away. Thx for mentioning and especially for fixing this up! I briefly confused two git options and than that "--no-prefix" stayed behind accidentally. :-/ Ciao, Thorsten ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2026-09-21 7:58 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260909055846.16539-1-daniel@quora.org>
2026-09-14 9:04 ` [PATCH] net: qrtr: resend HELLO on MHI resume Thorsten Leemhuis
2026-09-14 9:39 ` Takashi Iwai
2026-09-15 10:11 ` Vlastimil Babka
2026-09-15 10:45 ` Vlastimil Babka (SUSE)
[not found] ` <hcr4woicsnz3pbhzlguuwjlego7yli3znhjmsx4cdz66xa74zd@wjtle2yslc4b>
2026-09-15 10:48 ` Vlastimil Babka
2026-09-16 3:09 ` Jeff Johnson
2026-09-16 9:36 ` Thorsten Leemhuis
2026-09-18 17:05 ` Manivannan Sadhasivam
2026-09-21 7:58 ` Vlastimil Babka
2026-09-20 14:10 Quick regression status pre 7.3-rc4 Thorsten Leemhuis
2026-09-20 14:16 ` [PATCH] net: qrtr: resend HELLO on MHI resume Thorsten Leemhuis
2026-09-20 18:26 ` Linus Torvalds
2026-09-21 4:20 ` Thorsten Leemhuis
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.