LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* ACPI S3 fails to re-init NIC on Asus A7V
@ 2004-05-27 19:57 Carsten Aulbert
2004-05-27 20:15 ` Arjan van de Ven
0 siblings, 1 reply; 3+ messages in thread
From: Carsten Aulbert @ 2004-05-27 19:57 UTC (permalink / raw)
To: linux-kernel
Hi all,
Please consider the following problem:
Home Server (daisy):
Asus A7V board
Duron 650 MHz
Debian sarge (not 100% up2date right now - from March 22nd)
SiS900 (also tried 3Com 3c509-TX-M without a change)
Kernels tried:
2.4.22 (IIRC), 2.6.4, 2.6.4 with acpi-patch 20040311, 2.6.6
Suspending to S3 works fine, resume also (except with the
onboard-Promise chip, but that's not a big issue), however, trying to
use the network after resume gives
NETDEV WATCHDOG: eth0: transmit timed out
This also did not help:
/etc/init.d/networking stop
modprobe -r sis900
echo 3 > /proc/acpi/sleep
[resume]
modprobe sis900
-> module is loaded successfully
/etc/init.d/networking start
-> sets the static routes correctly
pinging a machine on the network yields the same error as before.
(Also tried 3Com 3c509-TXM to no avail)
To spare you about ~1000 lines of output, I've put the output of dmesg,
lspci -v, acpidmp and an excerpt from /var/log/syslog with enabled
sis900-debugging here
http://carsten.welcomes-you.com/misc-tmp/acpi-s3/
Does this problem ring any bell, do you need more input from my side?
I'm currently running out of options and ideas.
TIA for any help
Carsten
PS: I'm not subscribed but monitor linux.kernel, but feel free to Cc me.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ACPI S3 fails to re-init NIC on Asus A7V
2004-05-27 19:57 ACPI S3 fails to re-init NIC on Asus A7V Carsten Aulbert
@ 2004-05-27 20:15 ` Arjan van de Ven
2004-05-28 6:17 ` Carsten Aulbert
0 siblings, 1 reply; 3+ messages in thread
From: Arjan van de Ven @ 2004-05-27 20:15 UTC (permalink / raw)
To: Carsten Aulbert; +Cc: linux-kernel
On Thu, May 27, 2004 at 10:14:50PM +0200, Carsten Aulbert wrote:
> Hi all,
>
> Please consider the following problem:
>
> Home Server (daisy):
>
> Asus A7V board
> Duron 650 MHz
> Debian sarge (not 100% up2date right now - from March 22nd)
> SiS900 (also tried 3Com 3c509-TX-M without a change)
>
> Kernels tried:
> 2.4.22 (IIRC), 2.6.4, 2.6.4 with acpi-patch 20040311, 2.6.6
>
> Suspending to S3 works fine, resume also (except with the
> onboard-Promise chip, but that's not a big issue), however, trying to
> use the network after resume gives
> NETDEV WATCHDOG: eth0: transmit timed out
please try this patch:
diff -urNp linux-1100/drivers/pci/pci.c linux-1110/drivers/pci/pci.c
--- linux-1100/drivers/pci/pci.c
+++ linux-1110/drivers/pci/pci.c
@@ -385,6 +385,7 @@ pci_enable_device_bars(struct pci_dev *d
int
pci_enable_device(struct pci_dev *dev)
{
+ dev->is_enabled = 1;
return pci_enable_device_bars(dev, (1 << PCI_NUM_RESOURCES) - 1);
}
@@ -399,6 +400,9 @@ void
pci_disable_device(struct pci_dev *dev)
{
u16 pci_command;
+
+ dev->is_enabled = 0;
+ dev->is_busmaster = 0;
pci_read_config_word(dev, PCI_COMMAND, &pci_command);
if (pci_command & PCI_COMMAND_MASTER) {
@@ -601,6 +605,7 @@ pci_set_master(struct pci_dev *dev)
cmd |= PCI_COMMAND_MASTER;
pci_write_config_word(dev, PCI_COMMAND, cmd);
}
+ dev->is_busmaster = 1;
pcibios_set_master(dev);
}
diff -urNp linux-1100/drivers/pci/pci-driver.c linux-1110/drivers/pci/pci-driver.c
--- linux-1100/drivers/pci/pci-driver.c
+++ linux-1110/drivers/pci/pci-driver.c
@@ -299,10 +299,30 @@ static int pci_device_suspend(struct dev
{
struct pci_dev * pci_dev = to_pci_dev(dev);
struct pci_driver * drv = pci_dev->driver;
+ int i = 0;
if (drv && drv->suspend)
- return drv->suspend(pci_dev,state);
- return 0;
+ i = drv->suspend(pci_dev,state);
+
+ pci_save_state(pci_dev, pci_dev->saved_config_space);
+ return i;
+}
+
+
+/*
+ * Default resume method for devices that have no driver provided resume,
+ * or not even a driver at all.
+ */
+static void pci_default_resume(struct pci_dev *pci_dev)
+{
+ /* restore the PCI config space */
+ pci_restore_state(pci_dev, pci_dev->saved_config_space);
+ /* if the device was enabled before suspend, reenable */
+ if (pci_dev->is_enabled)
+ pci_enable_device(pci_dev);
+ /* if the device was busmaster before the suspend, make it busmaster again */
+ if (pci_dev->is_busmaster)
+ pci_set_master(pci_dev);
}
static int pci_device_resume(struct device * dev)
@@ -312,6 +332,8 @@ static int pci_device_resume(struct devi
if (drv && drv->resume)
drv->resume(pci_dev);
+ else
+ pci_default_resume(pci_dev);
return 0;
}
diff -urNp linux-1100/include/linux/pci.h linux-1110/include/linux/pci.h
--- linux-1100/include/linux/pci.h
+++ linux-1110/include/linux/pci.h
@@ -488,6 +488,11 @@ struct pci_dev {
/* These fields are used by common fixups */
unsigned int transparent:1; /* Transparent PCI bridge */
unsigned int multifunction:1;/* Part of multi-function device */
+ /* keep track of device state */
+ unsigned int is_enabled:1; /* pci_enable_device has been called */
+ unsigned int is_busmaster:1; /* device is busmaster */
+
+ unsigned int saved_config_space[16]; /* config space saved at suspend time */
#ifdef CONFIG_PCI_NAMES
#define PCI_NAME_SIZE 96
#define PCI_NAME_HALF __stringify(43) /* less than half to handle slop */
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: ACPI S3 fails to re-init NIC on Asus A7V
2004-05-27 20:15 ` Arjan van de Ven
@ 2004-05-28 6:17 ` Carsten Aulbert
0 siblings, 0 replies; 3+ messages in thread
From: Carsten Aulbert @ 2004-05-28 6:17 UTC (permalink / raw)
To: linux-kernel
Arjan van de Ven wrote:
>
> please try this patch:
[...]
Thanks a lot for the patch, applied it to vanilla 2.6.6, but that did
not help (at all :( ).
in both cases (with and without unloading the sis900 module before
suspending) I get:
/var/log/syslog
[...]
May 28 07:54:03 daisy kernel: PM: Preparing system for suspend
May 28 07:54:03 daisy kernel: Stopping tasks:
==========================================|
May 28 07:54:03 daisy kernel: PM: Entering state.
May 28 07:54:03 daisy kernel: hwsleep-0304 [12] acpi_enter_sleep_state:
Entering sleep state [S3]
May 28 07:54:03 daisy kernel: Back to C!
May 28 07:54:03 daisy kernel: spurious 8259A interrupt: IRQ7.
May 28 07:54:03 daisy kernel: PM: Finishing up.
May 28 07:54:03 daisy kernel: blk: queue d7de0c00, I/O limit 4095Mb
(mask 0xffffffff)
May 28 07:54:03 daisy kernel: blk: queue d7de0400, I/O limit 4095Mb
(mask 0xffffffff)
May 28 07:54:03 daisy sleepd[584]: 34 sec sleep; resetting timer
May 28 07:54:03 daisy kernel: Restarting tasks... done
May 28 07:54:04 daisy kernel: MCE: The hardware reports a non fatal,
correctable incident occurred on CPU
0.
May 28 07:54:04 daisy kernel: Bank 1: ddd1ffdd22063591
May 28 07:54:04 daisy kernel: MCE: The hardware reports a non fatal,
correctable incident occurred on CPU
0.
May 28 07:54:04 daisy kernel: Bank 2: a00060000002042e
[ modprobe sis900 debug=4 ]
May 28 07:54:26 daisy kernel: sis900.c: v1.08.07 11/02/2003
May 28 07:54:26 daisy kernel: eth0: SiS 900 Internal MII PHY transceiver
found at address 1.
May 28 07:54:26 daisy kernel: eth0: Using transceiver found at address 1
as default
May 28 07:54:28 daisy kernel: eth0: SiS 900 PCI Fast Ethernet at 0xa400,
IRQ 11, 00:30:ab:01:7b:6e.
May 28 07:54:34 daisy kernel: eth0: Receive Filter Addrss[0]=3000
May 28 07:54:34 daisy kernel: eth0: Receive Filter Addrss[1]=1ab
May 28 07:54:34 daisy kernel: eth0: Receive Filter Addrss[2]=6e7b
May 28 07:54:34 daisy kernel: eth0: TX descriptor register loaded with:
177d6000
May 28 07:54:34 daisy kernel: eth0: RX descriptor register loaded with:
177d1000
May 28 07:54:36 daisy kernel: eth0: Media Link On 100mbps full-duplex
May 28 07:54:48 daisy kernel: eth0: Queued Tx packet at d73f0b96 size 42
to slot 0.
May 28 07:54:54 daisy kernel: NETDEV WATCHDOG: eth0: transmit timed out
May 28 07:54:54 daisy kernel: eth0: exiting interrupt, interrupt status
= 0x0x00000000.
May 28 07:54:54 daisy kernel: eth0: Transmit timeout, status 00000004
00000241
May 28 07:54:54 daisy kernel: eth0: Queued Tx packet at d73f0996 size 42
to slot 0.
[...]
That's all info I can currently squeeze out of the box (due to my
limited knowledge I suppose), anyone with any idea, how to proceed?
Cheers
Carsten
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-05-28 6:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-27 19:57 ACPI S3 fails to re-init NIC on Asus A7V Carsten Aulbert
2004-05-27 20:15 ` Arjan van de Ven
2004-05-28 6:17 ` Carsten Aulbert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).