netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
@ 2005-01-30 17:18 David Härdeman
  2005-01-31  3:47 ` Scott Feldman
  0 siblings, 1 reply; 12+ messages in thread
From: David Härdeman @ 2005-01-30 17:18 UTC (permalink / raw)
  To: linux-kernel; +Cc: netdev

Hi,

I experience the same problems as reported by Michael Gernoth when 
sending a WOL-packet to computer with a e100 NIC which is already 
powered on.

In my case, it's running kernel 2.6.8.1 and the NIC is identified by 
lspci as:
0000:02:08.0 Ethernet controller: Intel Corp. 82562EZ 10/100 Ethernet 
Controller (rev 02)
or numerically:
0000:02:08.0 0200: 8086:1050 (rev 02)

The symptoms is that kacpid starts using all the CPU time it can, a 
shutdown takes 5 - 10 minutes after I've done this (in contrast to 20 - 
30 seconds when the machine is healthy).

Also, if I do a "shutdown -h" on the machine after sending a WOL packet 
when it's already powered up, it will shutdown and immediately start up 
again instead of powering off.

So, any suggestions on how to fix it?

Regards,
David

Please CC me on any replies.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-30 17:18 2.4.29, e100 and a WOL packet causes keventd going mad David Härdeman
@ 2005-01-31  3:47 ` Scott Feldman
  2005-01-31  3:58   ` Nigel Cunningham
  2005-01-31  4:23   ` Bukie Mabayoje
  0 siblings, 2 replies; 12+ messages in thread
From: Scott Feldman @ 2005-01-31  3:47 UTC (permalink / raw)
  To: David Härdeman, Michael Gernoth; +Cc: linux-kernel, netdev

On Sun, 2005-01-30 at 09:18, David Härdeman wrote:
> I experience the same problems as reported by Michael Gernoth when 
> sending a WOL-packet to computer with a e100 NIC which is already 
> powered on.

I didn't look at the 2.4 case, but for 2.6, it seems e100 was enabling
PME wakeup during probe.  PME shouldn't be enabled while the system is
up.  I suspect the assertion of PME while the system is up is what's
causing problems.  This patch moves PME wakeup enabling to either
suspend or shutdown.

David, would you give this patch a try?  Make sure the system still
wakes from a magic packet if suspended or shut down, and doesn't cause
kacpid to go crazy if system is running.  If it helps for 2.6, perhaps
someone can look into 2.4 to see if there is something similar going on
there.

-scott

--- linux-2.6.11-rc2/drivers/net/e100.c.orig	2005-01-30 19:13:56.850497376 -0800
+++ linux-2.6.11-rc2/drivers/net/e100.c	2005-01-30 19:26:41.154305536 -0800
@@ -1868,7 +1868,6 @@ static int e100_set_wol(struct net_devic
 	else
 		nic->flags &= ~wol_magic;
 
-	pci_enable_wake(nic->pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
 	e100_exec_cb(nic, NULL, e100_configure);
 
 	return 0;
@@ -2262,8 +2261,6 @@ static int __devinit e100_probe(struct p
 	   (nic->eeprom[eeprom_id] & eeprom_id_wol))
 		nic->flags |= wol_magic;
 
-	pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
-
 	strcpy(netdev->name, "eth%d");
 	if((err = register_netdev(netdev))) {
 		DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
@@ -2344,6 +2341,15 @@ static int e100_resume(struct pci_dev *p
 }
 #endif
 
+static void e100_shutdown(struct device *dev)
+{
+	struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
+	struct net_device *netdev = pci_get_drvdata(pdev);
+	struct nic *nic = netdev_priv(netdev);
+
+	pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
+}
+
 static struct pci_driver e100_driver = {
 	.name =         DRV_NAME,
 	.id_table =     e100_id_table,
@@ -2353,6 +2359,9 @@ static struct pci_driver e100_driver = {
 	.suspend =      e100_suspend,
 	.resume =       e100_resume,
 #endif
+	.driver = {
+		.shutdown = e100_shutdown,
+	}
 };
 
 static int __init e100_init_module(void)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31  3:47 ` Scott Feldman
@ 2005-01-31  3:58   ` Nigel Cunningham
  2005-01-31  5:00     ` Scott Feldman
  2005-01-31  4:23   ` Bukie Mabayoje
  1 sibling, 1 reply; 12+ messages in thread
From: Nigel Cunningham @ 2005-01-31  3:58 UTC (permalink / raw)
  To: sfeldma
  Cc: David Härdeman, Michael Gernoth, Linux Kernel Mailing List,
	netdev

Hi.

Do you also disable the WOL event when resuming?

Regards,

Nigel

On Mon, 2005-01-31 at 14:47, Scott Feldman wrote:
> On Sun, 2005-01-30 at 09:18, David Härdeman wrote:
> > I experience the same problems as reported by Michael Gernoth when 
> > sending a WOL-packet to computer with a e100 NIC which is already 
> > powered on.
> 
> I didn't look at the 2.4 case, but for 2.6, it seems e100 was enabling
> PME wakeup during probe.  PME shouldn't be enabled while the system is
> up.  I suspect the assertion of PME while the system is up is what's
> causing problems.  This patch moves PME wakeup enabling to either
> suspend or shutdown.
> 
> David, would you give this patch a try?  Make sure the system still
> wakes from a magic packet if suspended or shut down, and doesn't cause
> kacpid to go crazy if system is running.  If it helps for 2.6, perhaps
> someone can look into 2.4 to see if there is something similar going on
> there.
> 
> -scott
> 
> --- linux-2.6.11-rc2/drivers/net/e100.c.orig	2005-01-30 19:13:56.850497376 -0800
> +++ linux-2.6.11-rc2/drivers/net/e100.c	2005-01-30 19:26:41.154305536 -0800
> @@ -1868,7 +1868,6 @@ static int e100_set_wol(struct net_devic
>  	else
>  		nic->flags &= ~wol_magic;
>  
> -	pci_enable_wake(nic->pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
>  	e100_exec_cb(nic, NULL, e100_configure);
>  
>  	return 0;
> @@ -2262,8 +2261,6 @@ static int __devinit e100_probe(struct p
>  	   (nic->eeprom[eeprom_id] & eeprom_id_wol))
>  		nic->flags |= wol_magic;
>  
> -	pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
> -
>  	strcpy(netdev->name, "eth%d");
>  	if((err = register_netdev(netdev))) {
>  		DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
> @@ -2344,6 +2341,15 @@ static int e100_resume(struct pci_dev *p
>  }
>  #endif
>  
> +static void e100_shutdown(struct device *dev)
> +{
> +	struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
> +	struct net_device *netdev = pci_get_drvdata(pdev);
> +	struct nic *nic = netdev_priv(netdev);
> +
> +	pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
> +}
> +
>  static struct pci_driver e100_driver = {
>  	.name =         DRV_NAME,
>  	.id_table =     e100_id_table,
> @@ -2353,6 +2359,9 @@ static struct pci_driver e100_driver = {
>  	.suspend =      e100_suspend,
>  	.resume =       e100_resume,
>  #endif
> +	.driver = {
> +		.shutdown = e100_shutdown,
> +	}
>  };
>  
>  static int __init e100_init_module(void)
> 
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
-- 
Nigel Cunningham
Software Engineer, Canberra, Australia
http://www.cyclades.com

Ph: +61 (2) 6292 8028      Mob: +61 (417) 100 574

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31  3:47 ` Scott Feldman
  2005-01-31  3:58   ` Nigel Cunningham
@ 2005-01-31  4:23   ` Bukie Mabayoje
  2005-01-31 15:24     ` Marcelo Tosatti
  1 sibling, 1 reply; 12+ messages in thread
From: Bukie Mabayoje @ 2005-01-31  4:23 UTC (permalink / raw)
  To: sfeldma; +Cc: David Härdeman, Michael Gernoth, linux-kernel, netdev


Scott Feldman wrote:

> On Sun, 2005-01-30 at 09:18, David Härdeman wrote:
> > I experience the same problems as reported by Michael Gernoth when
> > sending a WOL-packet to computer with a e100 NIC which is already
> > powered on.
>
> I didn't look at the 2.4 case, but for 2.6, it seems e100 was enabling
> PME wakeup during probe.  PME shouldn't be enabled while the system is
> up.  I suspect the assertion of PME while the system is up is what's
> causing problems.  This patch moves PME wakeup enabling to either
> suspend or shutdown.
>
> David, would you give this patch a try?  Make sure the system still
> wakes from a magic packet if suspended or shut down, and doesn't cause
> kacpid to go crazy if system is running.  If it helps for 2.6, perhaps
> someone can look into 2.4 to see if there is something similar going on

This issue was reported on 2.4.

>
> there.
>
> -scott
>
> --- linux-2.6.11-rc2/drivers/net/e100.c.orig    2005-01-30 19:13:56.850497376 -0800
> +++ linux-2.6.11-rc2/drivers/net/e100.c 2005-01-30 19:26:41.154305536 -0800
> @@ -1868,7 +1868,6 @@ static int e100_set_wol(struct net_devic
>         else
>                 nic->flags &= ~wol_magic;
>
> -       pci_enable_wake(nic->pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
>         e100_exec_cb(nic, NULL, e100_configure);
>
>         return 0;
> @@ -2262,8 +2261,6 @@ static int __devinit e100_probe(struct p
>            (nic->eeprom[eeprom_id] & eeprom_id_wol))
>                 nic->flags |= wol_magic;
>
> -       pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
> -
>         strcpy(netdev->name, "eth%d");
>         if((err = register_netdev(netdev))) {
>                 DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
> @@ -2344,6 +2341,15 @@ static int e100_resume(struct pci_dev *p
>  }
>  #endif
>
> +static void e100_shutdown(struct device *dev)
> +{
> +       struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
> +       struct net_device *netdev = pci_get_drvdata(pdev);
> +       struct nic *nic = netdev_priv(netdev);
> +
> +       pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
> +}
> +
>  static struct pci_driver e100_driver = {
>         .name =         DRV_NAME,
>         .id_table =     e100_id_table,
> @@ -2353,6 +2359,9 @@ static struct pci_driver e100_driver = {
>         .suspend =      e100_suspend,
>         .resume =       e100_resume,
>  #endif
> +       .driver = {
> +               .shutdown = e100_shutdown,
> +       }
>  };
>
>  static int __init e100_init_module(void)
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31  3:58   ` Nigel Cunningham
@ 2005-01-31  5:00     ` Scott Feldman
  2005-01-31  6:14       ` Nigel Cunningham
  0 siblings, 1 reply; 12+ messages in thread
From: Scott Feldman @ 2005-01-31  5:00 UTC (permalink / raw)
  To: ncunningham
  Cc: David Härdeman, Michael Gernoth, Linux Kernel Mailing List,
	netdev

On Sun, 2005-01-30 at 19:58, Nigel Cunningham wrote:
> Do you also disable the WOL event when resuming?

Good catch.  How's this look?

--- linux-2.6.11-rc2/drivers/net/e100.c.orig	2005-01-30 19:13:56.850497376 -0800
+++ linux-2.6.11-rc2/drivers/net/e100.c	2005-01-30 20:53:22.630560952 -0800
@@ -1868,7 +1868,6 @@ static int e100_set_wol(struct net_devic
 	else
 		nic->flags &= ~wol_magic;
 
-	pci_enable_wake(nic->pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
 	e100_exec_cb(nic, NULL, e100_configure);
 
 	return 0;
@@ -2262,8 +2261,6 @@ static int __devinit e100_probe(struct p
 	   (nic->eeprom[eeprom_id] & eeprom_id_wol))
 		nic->flags |= wol_magic;
 
-	pci_enable_wake(pdev, 0, nic->flags & (wol_magic | e100_asf(nic)));
-
 	strcpy(netdev->name, "eth%d");
 	if((err = register_netdev(netdev))) {
 		DPRINTK(PROBE, ERR, "Cannot register net device, aborting.\n");
@@ -2320,7 +2317,8 @@ static int e100_suspend(struct pci_dev *
 	netif_device_detach(netdev);
 
 	pci_save_state(pdev);
-	pci_enable_wake(pdev, state, nic->flags & (wol_magic | e100_asf(nic)));
+	pci_enable_wake(pdev, pci_choose_state(pdev, state),
+		nic->flags & (wol_magic | e100_asf(nic)));
 	pci_disable_device(pdev);
 	pci_set_power_state(pdev, pci_choose_state(pdev, state));
 
@@ -2333,6 +2331,7 @@ static int e100_resume(struct pci_dev *p
 	struct nic *nic = netdev_priv(netdev);
 
 	pci_set_power_state(pdev, PCI_D0);
+	pci_enable_wake(pdev, PCI_D0, 0);
 	pci_restore_state(pdev);
 	e100_hw_init(nic);
 
@@ -2344,6 +2343,15 @@ static int e100_resume(struct pci_dev *p
 }
 #endif
 
+static void e100_shutdown(struct device *dev)
+{
+	struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
+	struct net_device *netdev = pci_get_drvdata(pdev);
+	struct nic *nic = netdev_priv(netdev);
+
+	pci_enable_wake(pdev, PCI_D0, nic->flags & (wol_magic | e100_asf(nic)));
+}
+
 static struct pci_driver e100_driver = {
 	.name =         DRV_NAME,
 	.id_table =     e100_id_table,
@@ -2353,6 +2361,9 @@ static struct pci_driver e100_driver = {
 	.suspend =      e100_suspend,
 	.resume =       e100_resume,
 #endif
+	.driver = {
+		.shutdown = e100_shutdown,
+	}
 };
 
 static int __init e100_init_module(void)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31  5:00     ` Scott Feldman
@ 2005-01-31  6:14       ` Nigel Cunningham
  2005-01-31  9:08         ` Nigel Cunningham
  0 siblings, 1 reply; 12+ messages in thread
From: Nigel Cunningham @ 2005-01-31  6:14 UTC (permalink / raw)
  To: sfeldma
  Cc: David Härdeman, Michael Gernoth, Linux Kernel Mailing List,
	netdev

Hi.

On Mon, 2005-01-31 at 16:00, Scott Feldman wrote:
> On Sun, 2005-01-30 at 19:58, Nigel Cunningham wrote:
> > Do you also disable the WOL event when resuming?
> 
> Good catch.  How's this look?

I looked at it last week because I used it for an example of device
model drivers at the CELF conference. I got your intel address from the
top of the .c file, but IIRC it bounced. Providence :>

[...]

> @@ -2333,6 +2331,7 @@ static int e100_resume(struct pci_dev *p
>  	struct nic *nic = netdev_priv(netdev);
>  
>  	pci_set_power_state(pdev, PCI_D0);
> +	pci_enable_wake(pdev, PCI_D0, 0);
>  	pci_restore_state(pdev);
>  	e100_hw_init(nic);

Shouldn't this be disable_wake?

Regards,

Nigel
-- 
Nigel Cunningham
Software Engineer, Canberra, Australia
http://www.cyclades.com

Ph: +61 (2) 6292 8028      Mob: +61 (417) 100 574

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31  6:14       ` Nigel Cunningham
@ 2005-01-31  9:08         ` Nigel Cunningham
  0 siblings, 0 replies; 12+ messages in thread
From: Nigel Cunningham @ 2005-01-31  9:08 UTC (permalink / raw)
  To: sfeldma
  Cc: David Härdeman, Michael Gernoth, Linux Kernel Mailing List,
	netdev

Hi again.

Ignore that :> I realised later that there's only one badly named
routine and my assumption that there was another called disable_.. was
wrong :>

Nigel

On Mon, 2005-01-31 at 17:14, Nigel Cunningham wrote:
> Hi.
> 
> On Mon, 2005-01-31 at 16:00, Scott Feldman wrote:
> > On Sun, 2005-01-30 at 19:58, Nigel Cunningham wrote:
> > > Do you also disable the WOL event when resuming?
> > 
> > Good catch.  How's this look?
> 
> I looked at it last week because I used it for an example of device
> model drivers at the CELF conference. I got your intel address from the
> top of the .c file, but IIRC it bounced. Providence :>
> 
> [...]
> 
> > @@ -2333,6 +2331,7 @@ static int e100_resume(struct pci_dev *p
> >  	struct nic *nic = netdev_priv(netdev);
> >  
> >  	pci_set_power_state(pdev, PCI_D0);
> > +	pci_enable_wake(pdev, PCI_D0, 0);
> >  	pci_restore_state(pdev);
> >  	e100_hw_init(nic);
> 
> Shouldn't this be disable_wake?
> 
> Regards,
> 
> Nigel
-- 
Nigel Cunningham
Software Engineer, Canberra, Australia
http://www.cyclades.com

Ph: +61 (2) 6292 8028      Mob: +61 (417) 100 574

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31  4:23   ` Bukie Mabayoje
@ 2005-01-31 15:24     ` Marcelo Tosatti
  2005-01-31 20:29       ` David Härdeman
  2005-01-31 21:13       ` Bukie Mabayoje
  0 siblings, 2 replies; 12+ messages in thread
From: Marcelo Tosatti @ 2005-01-31 15:24 UTC (permalink / raw)
  To: Bukie Mabayoje
  Cc: sfeldma, David Härdeman, Michael Gernoth, linux-kernel,
	netdev

On Sun, Jan 30, 2005 at 08:23:47PM -0800, Bukie Mabayoje wrote:
> 
> Scott Feldman wrote:
> 
> > On Sun, 2005-01-30 at 09:18, David Härdeman wrote:
> > > I experience the same problems as reported by Michael Gernoth when
> > > sending a WOL-packet to computer with a e100 NIC which is already
> > > powered on.
> >
> > I didn't look at the 2.4 case, but for 2.6, it seems e100 was enabling
> > PME wakeup during probe.  PME shouldn't be enabled while the system is
> > up.  I suspect the assertion of PME while the system is up is what's
> > causing problems.  This patch moves PME wakeup enabling to either
> > suspend or shutdown.
> >
> > David, would you give this patch a try?  Make sure the system still
> > wakes from a magic packet if suspended or shut down, and doesn't cause
> > kacpid to go crazy if system is running.  If it helps for 2.6, perhaps
> > someone can look into 2.4 to see if there is something similar going on
> 
> This issue was reported on 2.4.

Can any of you guys test v2.6, please?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: 2.4.29, e100 and a WOL packet causes keventd going mad
@ 2005-01-31 19:26 Brandeburg, Jesse
  2005-01-31 20:57 ` Bukie Mabayoje
  0 siblings, 1 reply; 12+ messages in thread
From: Brandeburg, Jesse @ 2005-01-31 19:26 UTC (permalink / raw)
  To: sfeldma, ncunningham
  Cc: David Härdeman, Michael Gernoth, Linux Kernel Mailing List,
	netdev

>+static void e100_shutdown(struct device *dev)
>+{
>+	struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
>+	struct net_device *netdev = pci_get_drvdata(pdev);
>+	struct nic *nic = netdev_priv(netdev);
>+
>+	pci_enable_wake(pdev, PCI_D0, nic->flags & (wol_magic |
>e100_asf(nic)));
>+}
>+

Separately, does anyone think that the OS should be handling the PME event on the bus (as it comes from the PIC as an interrupt, and can be masked at the PIC) with a default handler?  The machines having the problem seem to be killed by an interrupt storm generated by the PME interrupt, just a guess.

Jesse

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31 15:24     ` Marcelo Tosatti
@ 2005-01-31 20:29       ` David Härdeman
  2005-01-31 21:13       ` Bukie Mabayoje
  1 sibling, 0 replies; 12+ messages in thread
From: David Härdeman @ 2005-01-31 20:29 UTC (permalink / raw)
  To: Marcelo Tosatti
  Cc: Bukie Mabayoje, sfeldma, Michael Gernoth, linux-kernel, netdev

On Mon, Jan 31, 2005 at 01:24:31PM -0200, Marcelo Tosatti wrote:
>On Sun, Jan 30, 2005 at 08:23:47PM -0800, Bukie Mabayoje wrote:
>> Scott Feldman wrote:
>>> David, would you give this patch a try?  Make sure the system still
>>> wakes from a magic packet if suspended or shut down, and doesn't cause
>>> kacpid to go crazy if system is running.  If it helps for 2.6, perhaps
>>> someone can look into 2.4 to see if there is something similar going on
>> 
>> This issue was reported on 2.4.
>
>Can any of you guys test v2.6, please?
>

I tried the second patch provided by Scott on a 2.6.10 kernel, I did 
some minor tweaks to get it to apply (changed pci_choose_state() and 
PCI_D0 back to the way they were in 2.6.10) and tested the results five 
minutes ago.

It works great, I havent tried suspending the machine cause I have no 
need for that functionality. I have however started the machine via WOL 
(works), sent WOL-packet to the machine when powered on (nothing 
happends - kacpid doesn't go wild, works), shutdown (works without the 
machine spontaneously rebooting). 

So everything seems to be fixed by the patch (save for suspending which 
I didn't test).

Thanks alot, I hope the patch will be in the next stable 2.6 kernel.

Regards,
David

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31 19:26 Brandeburg, Jesse
@ 2005-01-31 20:57 ` Bukie Mabayoje
  0 siblings, 0 replies; 12+ messages in thread
From: Bukie Mabayoje @ 2005-01-31 20:57 UTC (permalink / raw)
  To: Brandeburg, Jesse
  Cc: sfeldma, ncunningham, David Härdeman, Michael Gernoth,
	Linux Kernel Mailing List, netdev

The issue is not the PME interrupt, the issue is that the device is going into a state that is not valid. A live system should never ASSERT PME# line. As long as this functionality is enable on the chip the PME will be asserted.
To avoid this unwanted condition the driver should disable PME on the chip on a live system. And enable it back when it is going to any of the PWR STATE that require a wake up by the LAN.

"Brandeburg, Jesse" wrote:

> >+static void e100_shutdown(struct device *dev)
> >+{
> >+      struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
> >+      struct net_device *netdev = pci_get_drvdata(pdev);
> >+      struct nic *nic = netdev_priv(netdev);
> >+
> >+      pci_enable_wake(pdev, PCI_D0, nic->flags & (wol_magic |
> >e100_asf(nic)));
> >+}
> >+
>
> Separately, does anyone think that the OS should be handling the PME event on the bus (as it comes from the PIC as an interrupt, and can be masked at the PIC) with a default handler?  The machines having the problem seem to be killed by an interrupt storm generated by the PME interrupt, just a guess.
>
> Jesse
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: 2.4.29, e100 and a WOL packet causes keventd going mad
  2005-01-31 15:24     ` Marcelo Tosatti
  2005-01-31 20:29       ` David Härdeman
@ 2005-01-31 21:13       ` Bukie Mabayoje
  1 sibling, 0 replies; 12+ messages in thread
From: Bukie Mabayoje @ 2005-01-31 21:13 UTC (permalink / raw)
  To: Marcelo Tosatti
  Cc: sfeldma, David Härdeman, Michael Gernoth, linux-kernel,
	netdev



Marcelo Tosatti wrote:

> On Sun, Jan 30, 2005 at 08:23:47PM -0800, Bukie Mabayoje wrote:
> >
> > Scott Feldman wrote:
> >
> > > On Sun, 2005-01-30 at 09:18, David Härdeman wrote:
> > > > I experience the same problems as reported by Michael Gernoth when
> > > > sending a WOL-packet to computer with a e100 NIC which is already
> > > > powered on.
> > >
> > > I didn't look at the 2.4 case, but for 2.6, it seems e100 was enabling
> > > PME wakeup during probe.  PME shouldn't be enabled while the system is
> > > up.  I suspect the assertion of PME while the system is up is what's
> > > causing problems.  This patch moves PME wakeup enabling to either
> > > suspend or shutdown.
> > >
> > > David, would you give this patch a try?  Make sure the system still
> > > wakes from a magic packet if suspended or shut down, and doesn't cause
> > > kacpid to go crazy if system is running.  If it helps for 2.6, perhaps
> > > someone can look into 2.4 to see if there is something similar going on
> >
> > This issue was reported on 2.4.
>
> Can any of you guys test v2.6, please?

I will be glad to test it now but I can't, I am currently doing some work on 2.4. If no one has tested it in the next few days I will validate it then.

By the way,  do anyone have an idea how to get this functionality into 2.4 eepro100. The problem is that eepro100 code works on a non WOL cards.

>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2005-01-31 21:13 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-30 17:18 2.4.29, e100 and a WOL packet causes keventd going mad David Härdeman
2005-01-31  3:47 ` Scott Feldman
2005-01-31  3:58   ` Nigel Cunningham
2005-01-31  5:00     ` Scott Feldman
2005-01-31  6:14       ` Nigel Cunningham
2005-01-31  9:08         ` Nigel Cunningham
2005-01-31  4:23   ` Bukie Mabayoje
2005-01-31 15:24     ` Marcelo Tosatti
2005-01-31 20:29       ` David Härdeman
2005-01-31 21:13       ` Bukie Mabayoje
  -- strict thread matches above, loose matches on Subject: below --
2005-01-31 19:26 Brandeburg, Jesse
2005-01-31 20:57 ` Bukie Mabayoje

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).