* 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; 15+ 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] 15+ 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; 15+ 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 [flat|nested] 15+ 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; 15+ 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] 15+ 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; 15+ 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] 15+ messages in thread
* [PATCH] net: qrtr: resend HELLO on MHI resume
@ 2026-09-09 5:58 Daniel J Blueman
2026-09-11 10:44 ` Manivannan Sadhasivam
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Daniel J Blueman @ 2026-09-09 5:58 UTC (permalink / raw)
To: 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,
Daniel J Blueman
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 */
+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);
--
2.53.0
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH] net: qrtr: resend HELLO on MHI resume
2026-09-09 5:58 Daniel J Blueman
@ 2026-09-11 10:44 ` Manivannan Sadhasivam
2026-09-15 10:48 ` Vlastimil Babka
2026-09-14 9:04 ` Thorsten Leemhuis
2026-09-18 17:05 ` Manivannan Sadhasivam
2 siblings, 1 reply; 15+ messages in thread
From: Manivannan Sadhasivam @ 2026-09-11 10:44 UTC (permalink / raw)
To: Daniel J Blueman
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 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.
Rest LGTM, thanks!
- Mani
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 15+ messages in thread* Re: [PATCH] net: qrtr: resend HELLO on MHI resume
2026-09-11 10:44 ` Manivannan Sadhasivam
@ 2026-09-15 10:48 ` Vlastimil Babka
2026-09-16 3:09 ` Jeff Johnson
0 siblings, 1 reply; 15+ 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] 15+ 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; 15+ 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, ath12k
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] 15+ 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; 15+ 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, ath12k, 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] 15+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume
2026-09-09 5:58 Daniel J Blueman
2026-09-11 10:44 ` Manivannan Sadhasivam
@ 2026-09-14 9:04 ` Thorsten Leemhuis
2026-09-14 9:39 ` Takashi Iwai
2026-09-15 10:11 ` Vlastimil Babka
2026-09-18 17:05 ` Manivannan Sadhasivam
2 siblings, 2 replies; 15+ 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] 15+ messages in thread* Re: [PATCH] net: qrtr: resend HELLO on MHI resume
2026-09-14 9:04 ` Thorsten Leemhuis
@ 2026-09-14 9:39 ` Takashi Iwai
2026-09-15 10:11 ` Vlastimil Babka
1 sibling, 0 replies; 15+ 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] 15+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume
2026-09-14 9:04 ` 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; 15+ 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] 15+ 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; 15+ 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] 15+ messages in thread
* Re: [PATCH] net: qrtr: resend HELLO on MHI resume
2026-09-09 5:58 Daniel J Blueman
2026-09-11 10:44 ` Manivannan Sadhasivam
2026-09-14 9:04 ` Thorsten Leemhuis
@ 2026-09-18 17:05 ` Manivannan Sadhasivam
2026-09-21 7:58 ` Vlastimil Babka
2 siblings, 1 reply; 15+ 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] 15+ 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; 15+ 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] 15+ messages in thread
end of thread, other threads:[~2026-09-21 7:58 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
-- strict thread matches above, loose matches on Subject: below --
2026-09-09 5:58 Daniel J Blueman
2026-09-11 10:44 ` Manivannan Sadhasivam
2026-09-15 10:48 ` Vlastimil Babka
2026-09-16 3:09 ` Jeff Johnson
2026-09-16 9:36 ` Thorsten Leemhuis
2026-09-14 9:04 ` Thorsten Leemhuis
2026-09-14 9:39 ` Takashi Iwai
2026-09-15 10:11 ` Vlastimil Babka
2026-09-15 10:45 ` Vlastimil Babka (SUSE)
2026-09-18 17:05 ` Manivannan Sadhasivam
2026-09-21 7:58 ` Vlastimil Babka
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®