From: Rafael J. Wysocki <hidden> Date: 2008-08-18 21:10:08
On Monday, 18 of August 2008, Andrew Morton wrote:
On Tue, 05 Aug 2008 20:29:44 +0100
Simon Arlott [off-list ref] wrote:
quoted
[two weeks pass...]
[Must have missed this message.]
I have a box with forcedeth that evidently works after a resume from
hibernation. Unfortunately, so far I haven't been able to make the box
resume from suspend to RAM. I'll do my best to try again tomorrow, but there's
a little hope. :-(
quoted
My NIC stops working after resuming from standby, it's not receiving any interrupts:
[ 0.618266] pci 0000:00:08.0: supports D1
[ 0.618267] pci 0000:00:08.0: supports D2
[ 0.618269] pci 0000:00:08.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.618382] pci 0000:00:08.0: PME# disabled
[ 0.618513] pci 0000:00:09.0: supports D1
[ 0.618523] pci 0000:00:09.0: supports D2
[ 0.618532] pci 0000:00:09.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.618632] pci 0000:00:09.0: PME# disabled
[ 0.629767] PM: Adding info for pci:0000:00:08.0
[ 0.630304] PM: Adding info for pci:0000:00:09.0
[ 0.866667] pci 0000:00:08.0: Enabling HT MSI Mapping
[ 0.866804] pci 0000:00:09.0: Enabling HT MSI Mapping
[ 1.847264] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.61.
[ 1.847918] forcedeth 0000:00:08.0: PCI INT A -> Link[LMAC] -> GSI 21 (level, low) -> IRQ 21
[ 1.848121] forcedeth 0000:00:08.0: setting latency timer to 64
[ 1.849363] forcedeth 0000:00:08.0: ifname eth2, PHY OUI 0x5043 @ 16, addr 00:e0:81:4d:2b:ec
[ 1.849553] forcedeth 0000:00:08.0: highdma csum vlan pwrctl mgmt timirq gbit lnktim msi desc-v3
[ 1.850212] forcedeth 0000:00:09.0: PCI INT A -> Link[LMAD] -> GSI 20 (level, low) -> IRQ 20
[ 1.850405] forcedeth 0000:00:09.0: setting latency timer to 64
[ 1.851684] forcedeth 0000:00:09.0: ifname eth3, PHY OUI 0x5043 @ 17, addr 00:e0:81:4d:2b:ed
[ 1.851873] forcedeth 0000:00:09.0: highdma csum vlan pwrctl mgmt timirq gbit lnktim msi desc-v3
[ 913.928604] forcedeth 0000:00:08.0: preparing suspend, may wakeup
[ 913.928607] forcedeth 0000:00:09.0: preparing suspend, may wakeup
[ 916.388326] forcedeth 0000:00:09.0: suspend, may wakeup
[ 916.388704] forcedeth 0000:00:09.0: PME# enabled
[ 916.388711] forcedeth 0000:00:09.0: wake-up capability enabled by ACPI
[ 916.388714] forcedeth 0000:00:09.0: PCI INT A disabled
[ 916.398995] forcedeth 0000:00:08.0: suspend, may wakeup
[ 916.399741] forcedeth 0000:00:08.0: PME# enabled
[ 916.399767] forcedeth 0000:00:08.0: wake-up capability enabled by ACPI
[ 916.399786] forcedeth 0000:00:08.0: PCI INT A disabled
[ 917.255261] forcedeth 0000:00:09.0: LATE suspend, may wakeup
[ 917.255263] forcedeth 0000:00:08.0: LATE suspend, may wakeup
[ 917.256004] forcedeth 0000:00:08.0: EARLY resume
[ 917.256004] forcedeth 0000:00:09.0: EARLY resume
[ 918.015874] forcedeth 0000:00:08.0: resume
[ 918.026369] forcedeth 0000:00:08.0: restoring config space at offset 0xf (was 0x14010100, writing 0x1401010a)
[ 918.026395] forcedeth 0000:00:08.0: restoring config space at offset 0x7 (was 0x0, writing 0xfdffa400)
[ 918.026417] forcedeth 0000:00:08.0: restoring config space at offset 0x6 (was 0x0, writing 0xfdffa800)
[ 918.026428] forcedeth 0000:00:08.0: restoring config space at offset 0x5 (was 0x1, writing 0x9401)
[ 918.026436] forcedeth 0000:00:08.0: restoring config space at offset 0x4 (was 0x0, writing 0xfdff6000)
[ 918.026443] forcedeth 0000:00:08.0: restoring config space at offset 0x1 (was 0xb00000, writing 0xb00007)
[ 918.026465] forcedeth 0000:00:08.0: wake-up capability disabled by ACPI
[ 918.026471] forcedeth 0000:00:08.0: PME# disabled
[ 918.027446] forcedeth 0000:00:09.0: resume
[ 918.037096] forcedeth 0000:00:09.0: restoring config space at offset 0xf (was 0x14010100, writing 0x1401010b)
[ 918.037115] forcedeth 0000:00:09.0: restoring config space at offset 0x7 (was 0x0, writing 0xfdff4c00)
[ 918.037120] forcedeth 0000:00:09.0: restoring config space at offset 0x6 (was 0x0, writing 0xfdffa000)
[ 918.037125] forcedeth 0000:00:09.0: restoring config space at offset 0x5 (was 0x1, writing 0x9081)
[ 918.037131] forcedeth 0000:00:09.0: restoring config space at offset 0x4 (was 0x0, writing 0xfdff5000)
[ 918.037137] forcedeth 0000:00:09.0: restoring config space at offset 0x1 (was 0xb00000, writing 0xb00007)
[ 918.037160] forcedeth 0000:00:09.0: wake-up capability disabled by ACPI
[ 918.037174] forcedeth 0000:00:09.0: PME# disabled
[ 925.810837] forcedeth 0000:00:09.0: completing resume
[ 925.810841] forcedeth 0000:00:08.0: completing resume
Commit 25d90810ff49d2a63475776f24c74c6bb49b045f ([netdrvr] forcedeth: reorder suspend/resume code)
introduces pci_disable_device to nv_suspend, but there's no corresponding pci_enable_device in
nv_resume - so I added one (copied from e1000):
From: Simon Arlott <hidden> Date: 2008-08-18 21:25:36
On 18/08/08 22:13, Rafael J. Wysocki wrote:
On Monday, 18 of August 2008, Andrew Morton wrote:
quoted
On Tue, 05 Aug 2008 20:29:44 +0100
Simon Arlott [off-list ref] wrote:
quoted
[two weeks pass...]
[Must have missed this message.]
I have a box with forcedeth that evidently works after a resume from
hibernation. Unfortunately, so far I haven't been able to make the box
With hibernation would it re-initialise the devices differently?
resume from suspend to RAM. I'll do my best to try again tomorrow, but there's
a little hope. :-(
Mine doesn't either, try standby?
quoted
quoted
My NIC stops working after resuming from standby, it's not receiving any interrupts:
Commit 25d90810ff49d2a63475776f24c74c6bb49b045f ([netdrvr] forcedeth: reorder suspend/resume code)
introduces pci_disable_device to nv_suspend, but there's no corresponding pci_enable_device in
nv_resume - so I added one (copied from e1000):
@@ -5922,6 +5922,13 @@ static int nv_resume(struct pci_dev *pdev)pci_set_power_state(pdev,PCI_D0);pci_restore_state(pdev);+rc=pci_enable_device(pdev);+if(rc){+printk(KERN_ERR"forcedeth: Cannot enable PCI device from suspend\n");+returnrc;+}+pci_set_master(pdev);+/* ack any pending wake events, disable PME */pci_enable_wake(pdev,PCI_D0,0);
That seems like a sensible change.
With this applied, I can resume from standby *without MSI* and the
NIC still works. I haven't tested it without MSI and without the
patch... mostly because I got a BUG when I tried to recompile.
quoted
quoted
This results in interrupts being re-enabled after suspend:
However, the NIC still doesn't work after resume.
Simon, I'd prefer the full dmesg to the grepped forcedeth messages.
Attached. (The previous email has all the standby/resume log output.)
I guess this was resume from suspend to RAM?
Standby - resume from RAM is completely broken for my system.
quoted
Is it still broken in current kernels?
It probably is.
If I have MSI enabled, it still doesn't work.
--
Simon Arlott
From: Rafael J. Wysocki <hidden> Date: 2008-08-18 21:36:38
On Monday, 18 of August 2008, Simon Arlott wrote:
On 18/08/08 22:13, Rafael J. Wysocki wrote:
quoted
On Monday, 18 of August 2008, Andrew Morton wrote:
quoted
On Tue, 05 Aug 2008 20:29:44 +0100
Simon Arlott [off-list ref] wrote:
quoted
[two weeks pass...]
[Must have missed this message.]
I have a box with forcedeth that evidently works after a resume from
hibernation. Unfortunately, so far I haven't been able to make the box
With hibernation would it re-initialise the devices differently?
Yes. Usually the BIOS does something to devices in that case.
quoted
resume from suspend to RAM. I'll do my best to try again tomorrow, but there's
a little hope. :-(
Mine doesn't either, try standby?
OK, I will.
quoted
quoted
quoted
My NIC stops working after resuming from standby, it's not receiving any interrupts:
Commit 25d90810ff49d2a63475776f24c74c6bb49b045f ([netdrvr] forcedeth: reorder suspend/resume code)
introduces pci_disable_device to nv_suspend, but there's no corresponding pci_enable_device in
nv_resume - so I added one (copied from e1000):
@@ -5922,6 +5922,13 @@ static int nv_resume(struct pci_dev *pdev)pci_set_power_state(pdev,PCI_D0);pci_restore_state(pdev);+rc=pci_enable_device(pdev);+if(rc){+printk(KERN_ERR"forcedeth: Cannot enable PCI device from suspend\n");+returnrc;+}+pci_set_master(pdev);+/* ack any pending wake events, disable PME */pci_enable_wake(pdev,PCI_D0,0);
That seems like a sensible change.
With this applied, I can resume from standby *without MSI* and the
NIC still works. I haven't tested it without MSI and without the
patch... mostly because I got a BUG when I tried to recompile.
That's interesting. I'll try to reproduce it.
quoted
quoted
quoted
This results in interrupts being re-enabled after suspend:
However, the NIC still doesn't work after resume.
Simon, I'd prefer the full dmesg to the grepped forcedeth messages.
Attached. (The previous email has all the standby/resume log output.)
quoted
I guess this was resume from suspend to RAM?
Standby - resume from RAM is completely broken for my system.
quoted
quoted
Is it still broken in current kernels?
It probably is.
If I have MSI enabled, it still doesn't work.
Hm. I wonder if that's specific to forcedeth or other drivers may be affected.
Thanks,
Rafael
From: Rafael J. Wysocki <hidden> Date: 2008-08-21 12:31:27
On Monday, 18 of August 2008, Simon Arlott wrote:
On 18/08/08 22:13, Rafael J. Wysocki wrote:
quoted
On Monday, 18 of August 2008, Andrew Morton wrote:
quoted
On Tue, 05 Aug 2008 20:29:44 +0100
Simon Arlott [off-list ref] wrote:
quoted
[two weeks pass...]
[Must have missed this message.]
I have a box with forcedeth that evidently works after a resume from
hibernation. Unfortunately, so far I haven't been able to make the box
With hibernation would it re-initialise the devices differently?
quoted
resume from suspend to RAM. I'll do my best to try again tomorrow, but there's
a little hope. :-(
Mine doesn't either, try standby?
quoted
quoted
quoted
My NIC stops working after resuming from standby, it's not receiving any interrupts:
Commit 25d90810ff49d2a63475776f24c74c6bb49b045f ([netdrvr] forcedeth: reorder suspend/resume code)
introduces pci_disable_device to nv_suspend, but there's no corresponding pci_enable_device in
nv_resume - so I added one (copied from e1000):
@@ -5922,6 +5922,13 @@ static int nv_resume(struct pci_dev *pdev)pci_set_power_state(pdev,PCI_D0);pci_restore_state(pdev);+rc=pci_enable_device(pdev);+if(rc){+printk(KERN_ERR"forcedeth: Cannot enable PCI device from suspend\n");+returnrc;+}+pci_set_master(pdev);+/* ack any pending wake events, disable PME */pci_enable_wake(pdev,PCI_D0,0);
That seems like a sensible change.
With this applied, I can resume from standby *without MSI* and the
NIC still works. I haven't tested it without MSI and without the
patch... mostly because I got a BUG when I tried to recompile.
quoted
quoted
quoted
This results in interrupts being re-enabled after suspend:
However, the NIC still doesn't work after resume.
Simon, I'd prefer the full dmesg to the grepped forcedeth messages.
Attached. (The previous email has all the standby/resume log output.)
quoted
I guess this was resume from suspend to RAM?
Standby - resume from RAM is completely broken for my system.
quoted
quoted
Is it still broken in current kernels?
It probably is.
If I have MSI enabled, it still doesn't work.
I cannot reproduce the problem locally, at least not with 2.6.27-rc4.
I was able to make my box resume from suspend to RAM by using
# s2ram --force --vbe_mode --vbe_post
(s2ram as shipped in openSUSE 11.0) and forcedeth works correctly
after the resume. However, I had to add 'acpi_sleep=old_ordering' to the
kernel command line.
My box is a desktop with an Asus A8N-SLI motherboard and an Athlon 64 X2 CPU.
I have created a Bugzilla entry for this issue at
http://bugzilla.kernel.org/show_bug.cgi?id=11390
Please put a boot log from dmesg and the output of 'lspci -vvv' in there, as
text attachments.
Thanks,
Rafael