[PATCH v3] net: jme: fix suspend/resume on JMC260

Subsystems: jme network driver, networking drivers, the rest

STALE3808d

12 messages, 3 authors, 2016-03-05 · open the first message on its own page

[PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-02-23 15:06:16

The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
---
 drivers/net/ethernet/jme.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index b1de7af..8adbe8f 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -3312,13 +3312,14 @@ jme_resume(struct device *dev)
 		jme_reset_phy_processor(jme);
 	jme_phy_calibration(jme);
 	jme_phy_setEA(jme);
-	jme_start_irq(jme);
 	netif_device_attach(netdev);
 
 	atomic_inc(&jme->link_changing);
 
 	jme_reset_link(jme);
 
+	jme_start_irq(jme);
+
 	return 0;
 }
 
-- 
2.7.1

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-02-23 16:34:42

On Tue, Feb 23, 2016 at 12:04 PM, Diego Viola [off-list ref] wrote:
quoted hunk
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
---
 drivers/net/ethernet/jme.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index b1de7af..8adbe8f 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -3312,13 +3312,14 @@ jme_resume(struct device *dev)
                jme_reset_phy_processor(jme);
        jme_phy_calibration(jme);
        jme_phy_setEA(jme);
-       jme_start_irq(jme);
        netif_device_attach(netdev);

        atomic_inc(&jme->link_changing);

        jme_reset_link(jme);

+       jme_start_irq(jme);
+
        return 0;
 }

--
2.7.1
I've sent this v3 patch and I think it's better than v2 and v1, as it
includes the link to my bug report and the description is better.

Diego

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-02-25 00:43:10

On Tue, Feb 23, 2016 at 1:34 PM, Diego Viola [off-list ref] wrote:
On Tue, Feb 23, 2016 at 12:04 PM, Diego Viola [off-list ref] wrote:
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
---
 drivers/net/ethernet/jme.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/jme.c b/drivers/net/ethernet/jme.c
index b1de7af..8adbe8f 100644
--- a/drivers/net/ethernet/jme.c
+++ b/drivers/net/ethernet/jme.c
@@ -3312,13 +3312,14 @@ jme_resume(struct device *dev)
                jme_reset_phy_processor(jme);
        jme_phy_calibration(jme);
        jme_phy_setEA(jme);
-       jme_start_irq(jme);
        netif_device_attach(netdev);

        atomic_inc(&jme->link_changing);

        jme_reset_link(jme);

+       jme_start_irq(jme);
+
        return 0;
 }

--
2.7.1
I've sent this v3 patch and I think it's better than v2 and v1, as it
includes the link to my bug report and the description is better.

Diego
Hi guys,

I just wanted to say that there's another user that have reported
success with the JMC250 (different card) using the jme driver with the
fix.

He was also getting hangs apparently.

I got an email from him, see his response here: http://ix.io/oBA

It's the same user that have posted this:
http://ubuntuforums.org/showthread.php?t=2301294

Thanks,
Diego

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: David Miller <davem@davemloft.net>
Date: 2016-02-25 04:59:00

From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-02-25 15:38:59

On Thu, Feb 25, 2016 at 1:58 AM, David Miller [off-list ref] wrote:
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Thanks.

Diego

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: "Guo-Fu Tseng" <cooldavid@cooldavid.org>
Date: 2016-03-02 05:14:59

On Wed, 24 Feb 2016 23:58:56 -0500 (EST), David Miller wrote
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Just reviewed it, it should have no side effect.

Thanks David, Diego.

Guo-Fu Tseng

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-03-03 03:19:20

On Wed, Mar 2, 2016 at 2:14 AM, Guo-Fu Tseng [off-list ref] wrote:
On Wed, 24 Feb 2016 23:58:56 -0500 (EST), David Miller wrote
quoted
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Just reviewed it, it should have no side effect.

Thanks David, Diego.

Guo-Fu Tseng
Hi all,

I'm having another issue with jme and I'm not sure if it's related to
the same issue with suspend/resume, but the problem now is WoL.

Let me try to describe the problem a bit:

I put my machine to sleep in S3 and I send WoL packets from a laptop,
and the machine doesn't wake up at all, I tried inspecting packets
with tcpdump and nothing shows up in the tcpdump output.

When the machine is in working state, and I send WoL packets and I
initiate a S3, it refuses to go in sleep mode.

I tried the same in Windows (waking up from S3 via WoL) and it works there.

Does anyone have any ideas what the problem can be? I talked with Guo
and he suspects the problem is motherboard failure, I also think the
issue can be a BIOS bug since I hear so many horror stories about AMI
BIOS issues with Linux.

But it's still a mystery to me given all these conditions I mentioned.

Diego

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-03-03 05:55:37

On Thu, Mar 3, 2016 at 12:19 AM, Diego Viola [off-list ref] wrote:
On Wed, Mar 2, 2016 at 2:14 AM, Guo-Fu Tseng [off-list ref] wrote:
quoted
On Wed, 24 Feb 2016 23:58:56 -0500 (EST), David Miller wrote
quoted
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Just reviewed it, it should have no side effect.

Thanks David, Diego.

Guo-Fu Tseng
Hi all,

I'm having another issue with jme and I'm not sure if it's related to
the same issue with suspend/resume, but the problem now is WoL.

Let me try to describe the problem a bit:

I put my machine to sleep in S3 and I send WoL packets from a laptop,
and the machine doesn't wake up at all, I tried inspecting packets
with tcpdump and nothing shows up in the tcpdump output.

When the machine is in working state, and I send WoL packets and I
initiate a S3, it refuses to go in sleep mode.

I tried the same in Windows (waking up from S3 via WoL) and it works there.

Does anyone have any ideas what the problem can be? I talked with Guo
and he suspects the problem is motherboard failure, I also think the
issue can be a BIOS bug since I hear so many horror stories about AMI
BIOS issues with Linux.

But it's still a mystery to me given all these conditions I mentioned.

Diego
The reason I believe that both problems might be connected
(suspend/resume & WoL) is that when I disable WoL with ethtool, e.g.

sudo ethtool -s eth0 wol d

The resume from suspend hang disappears, and there is no need for the
patch that moves the jme_start_irq() function call anymore, this also
regardless of pm_async being 1 or 0.

Can someone experienced with power management help here please?

Diego

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-03-03 21:14:17

On Thu, Mar 3, 2016 at 2:55 AM, Diego Viola [off-list ref] wrote:
On Thu, Mar 3, 2016 at 12:19 AM, Diego Viola [off-list ref] wrote:
quoted
On Wed, Mar 2, 2016 at 2:14 AM, Guo-Fu Tseng [off-list ref] wrote:
quoted
On Wed, 24 Feb 2016 23:58:56 -0500 (EST), David Miller wrote
quoted
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Just reviewed it, it should have no side effect.

Thanks David, Diego.

Guo-Fu Tseng
Hi all,

I'm having another issue with jme and I'm not sure if it's related to
the same issue with suspend/resume, but the problem now is WoL.

Let me try to describe the problem a bit:

I put my machine to sleep in S3 and I send WoL packets from a laptop,
and the machine doesn't wake up at all, I tried inspecting packets
with tcpdump and nothing shows up in the tcpdump output.

When the machine is in working state, and I send WoL packets and I
initiate a S3, it refuses to go in sleep mode.

I tried the same in Windows (waking up from S3 via WoL) and it works there.

Does anyone have any ideas what the problem can be? I talked with Guo
and he suspects the problem is motherboard failure, I also think the
issue can be a BIOS bug since I hear so many horror stories about AMI
BIOS issues with Linux.

But it's still a mystery to me given all these conditions I mentioned.

Diego
The reason I believe that both problems might be connected
(suspend/resume & WoL) is that when I disable WoL with ethtool, e.g.

sudo ethtool -s eth0 wol d

The resume from suspend hang disappears, and there is no need for the
patch that moves the jme_start_irq() function call anymore, this also
regardless of pm_async being 1 or 0.

Can someone experienced with power management help here please?

Diego
Actually, I just tried it now and I CAN read see the packets coming in
in the tcpdump output.

The machine just doesn't wake up from S3 after I send the packets.

Any ideas?

Diego

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-03-03 21:19:28

On Thu, Mar 3, 2016 at 6:14 PM, Diego Viola [off-list ref] wrote:
On Thu, Mar 3, 2016 at 2:55 AM, Diego Viola [off-list ref] wrote:
quoted
On Thu, Mar 3, 2016 at 12:19 AM, Diego Viola [off-list ref] wrote:
quoted
On Wed, Mar 2, 2016 at 2:14 AM, Guo-Fu Tseng [off-list ref] wrote:
quoted
On Wed, 24 Feb 2016 23:58:56 -0500 (EST), David Miller wrote
quoted
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Just reviewed it, it should have no side effect.

Thanks David, Diego.

Guo-Fu Tseng
Hi all,

I'm having another issue with jme and I'm not sure if it's related to
the same issue with suspend/resume, but the problem now is WoL.

Let me try to describe the problem a bit:

I put my machine to sleep in S3 and I send WoL packets from a laptop,
and the machine doesn't wake up at all, I tried inspecting packets
with tcpdump and nothing shows up in the tcpdump output.

When the machine is in working state, and I send WoL packets and I
initiate a S3, it refuses to go in sleep mode.

I tried the same in Windows (waking up from S3 via WoL) and it works there.

Does anyone have any ideas what the problem can be? I talked with Guo
and he suspects the problem is motherboard failure, I also think the
issue can be a BIOS bug since I hear so many horror stories about AMI
BIOS issues with Linux.

But it's still a mystery to me given all these conditions I mentioned.

Diego
The reason I believe that both problems might be connected
(suspend/resume & WoL) is that when I disable WoL with ethtool, e.g.

sudo ethtool -s eth0 wol d

The resume from suspend hang disappears, and there is no need for the
patch that moves the jme_start_irq() function call anymore, this also
regardless of pm_async being 1 or 0.

Can someone experienced with power management help here please?

Diego
Actually, I just tried it now and I CAN read see the packets coming in
in the tcpdump output.

The machine just doesn't wake up from S3 after I send the packets.

Any ideas?

Diego
I can see the packets in the tcpdump output*

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-03-04 04:32:45

On Thu, Mar 3, 2016 at 6:19 PM, Diego Viola [off-list ref] wrote:
On Thu, Mar 3, 2016 at 6:14 PM, Diego Viola [off-list ref] wrote:
quoted
On Thu, Mar 3, 2016 at 2:55 AM, Diego Viola [off-list ref] wrote:
quoted
On Thu, Mar 3, 2016 at 12:19 AM, Diego Viola [off-list ref] wrote:
quoted
On Wed, Mar 2, 2016 at 2:14 AM, Guo-Fu Tseng [off-list ref] wrote:
quoted
On Wed, 24 Feb 2016 23:58:56 -0500 (EST), David Miller wrote
quoted
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Just reviewed it, it should have no side effect.

Thanks David, Diego.

Guo-Fu Tseng
Hi all,

I'm having another issue with jme and I'm not sure if it's related to
the same issue with suspend/resume, but the problem now is WoL.

Let me try to describe the problem a bit:

I put my machine to sleep in S3 and I send WoL packets from a laptop,
and the machine doesn't wake up at all, I tried inspecting packets
with tcpdump and nothing shows up in the tcpdump output.

When the machine is in working state, and I send WoL packets and I
initiate a S3, it refuses to go in sleep mode.

I tried the same in Windows (waking up from S3 via WoL) and it works there.

Does anyone have any ideas what the problem can be? I talked with Guo
and he suspects the problem is motherboard failure, I also think the
issue can be a BIOS bug since I hear so many horror stories about AMI
BIOS issues with Linux.

But it's still a mystery to me given all these conditions I mentioned.

Diego
The reason I believe that both problems might be connected
(suspend/resume & WoL) is that when I disable WoL with ethtool, e.g.

sudo ethtool -s eth0 wol d

The resume from suspend hang disappears, and there is no need for the
patch that moves the jme_start_irq() function call anymore, this also
regardless of pm_async being 1 or 0.

Can someone experienced with power management help here please?

Diego
Actually, I just tried it now and I CAN read see the packets coming in
in the tcpdump output.

The machine just doesn't wake up from S3 after I send the packets.

Any ideas?

Diego
I can see the packets in the tcpdump output*
I just tried again and I can't capture those packets anymore,
strangely ICMP packets with ping arrive fine but when I try to send
WoL packets they don't arrive.

Diego

Re: [PATCH v3] net: jme: fix suspend/resume on JMC260

From: Diego Viola <hidden>
Date: 2016-03-05 02:26:18

On Fri, Mar 4, 2016 at 1:32 AM, Diego Viola [off-list ref] wrote:
On Thu, Mar 3, 2016 at 6:19 PM, Diego Viola [off-list ref] wrote:
quoted
On Thu, Mar 3, 2016 at 6:14 PM, Diego Viola [off-list ref] wrote:
quoted
On Thu, Mar 3, 2016 at 2:55 AM, Diego Viola [off-list ref] wrote:
quoted
On Thu, Mar 3, 2016 at 12:19 AM, Diego Viola [off-list ref] wrote:
quoted
On Wed, Mar 2, 2016 at 2:14 AM, Guo-Fu Tseng [off-list ref] wrote:
quoted
On Wed, 24 Feb 2016 23:58:56 -0500 (EST), David Miller wrote
quoted
From: Diego Viola <redacted>
Date: Tue, 23 Feb 2016 12:04:04 -0300
quoted
The JMC260 network card fails to suspend/resume because the call to
jme_start_irq() was too early, moving the call to jme_start_irq() after
the call to jme_reset_link() makes it work.

Prior this change suspend/resume would fail unless /sys/power/pm_async=0
was explicitly specified.

Relevant bug report: https://bugzilla.kernel.org/show_bug.cgi?id=112351

Signed-off-by: Diego Viola <redacted>
Applied and queued up for -stable, thanks.
Just reviewed it, it should have no side effect.

Thanks David, Diego.

Guo-Fu Tseng
Hi all,

I'm having another issue with jme and I'm not sure if it's related to
the same issue with suspend/resume, but the problem now is WoL.

Let me try to describe the problem a bit:

I put my machine to sleep in S3 and I send WoL packets from a laptop,
and the machine doesn't wake up at all, I tried inspecting packets
with tcpdump and nothing shows up in the tcpdump output.

When the machine is in working state, and I send WoL packets and I
initiate a S3, it refuses to go in sleep mode.

I tried the same in Windows (waking up from S3 via WoL) and it works there.

Does anyone have any ideas what the problem can be? I talked with Guo
and he suspects the problem is motherboard failure, I also think the
issue can be a BIOS bug since I hear so many horror stories about AMI
BIOS issues with Linux.

But it's still a mystery to me given all these conditions I mentioned.

Diego
The reason I believe that both problems might be connected
(suspend/resume & WoL) is that when I disable WoL with ethtool, e.g.

sudo ethtool -s eth0 wol d

The resume from suspend hang disappears, and there is no need for the
patch that moves the jme_start_irq() function call anymore, this also
regardless of pm_async being 1 or 0.

Can someone experienced with power management help here please?

Diego
Actually, I just tried it now and I CAN read see the packets coming in
in the tcpdump output.

The machine just doesn't wake up from S3 after I send the packets.

Any ideas?

Diego
I can see the packets in the tcpdump output*
I just tried again and I can't capture those packets anymore,
strangely ICMP packets with ping arrive fine but when I try to send
WoL packets they don't arrive.

Diego
It looks like the problem is ACPI after all, because I tried enabling
resume by keyboard/mouse/lan, etc. and none of these methods work.

I'd like to be able to debug the BIOS ACPI thing, but I don't know
where to start.

I've tried disassembling the DSDT and this is what I get: http://ix.io/oYY

Any ideas what to do next?

Diego
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help