Hi Auke, good news. I incorporated the changes manually b/cI couldn't apply your patch against the latest git tree from Linux with the program patch. The patch would solve http://bugzilla.kernel.org/show_bug.cgi?id=7207 :-) Here's the diff after my edit of the file e1000_main.c: diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 8d04752..400bdee 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c @@ -4799,7 +4799,8 @@ e1000_suspend(struct pci_dev *pdev, pm_m if (adapter->hw.phy_type == e1000_phy_igp_3) e1000_phy_powerdown_workaround(&adapter->hw); - + e1000_free_irq(adapter); + /* Release control of h/w to f/w. If f/w is AMT enabled, this * would have already happened in close and is redundant. */ e1000_release_hw_control(adapter); @@ -4830,6 +4831,10 @@ e1000_resume(struct pci_dev *pdev) pci_enable_wake(pdev, PCI_D3hot, 0); pci_enable_wake(pdev, PCI_D3cold, 0); + if ((err = e1000_request_irq(adapter))) + return err; + + e1000_power_up_phy(adapter); e1000_reset(adapter); E1000_WRITE_REG(&adapter->hw, WUS, ~0); Am Friday 03 November 2006 20:43 schrieb Auke Kok: > > e1000: Fix regression: garbled stats and irq allocation during swsusp > > After 7.0.33/2.6.16, e1000 suspend/resume left the user with an enabled > device showing garbled statistics and undetermined irq allocation state, > where `ifconfig eth0 down` would display `trying to free already freed irq`. > > Explicitly free and allocate irq as well as powerup the PHY during resume > fixes. > > Signed-off-by: Auke Kok <[email protected]> > > diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c > index c0269b5..32cdccb 100644 > --- a/drivers/net/e1000/e1000_main.c > +++ b/drivers/net/e1000/e1000_main.c > @@ -5081,6 +5081,8 @@ #endif > if (adapter->hw.phy_type == e1000_phy_igp_3) > e1000_phy_powerdown_workaround(&adapter->hw); > > + e1000_free_irq(adapter); > + > /* Release control of h/w to f/w. If f/w is AMT enabled, this > * would have already happened in close and is redundant. */ > e1000_release_hw_control(adapter); > @@ -5111,6 +5113,10 @@ e1000_resume(struct pci_dev *pdev) > pci_enable_wake(pdev, PCI_D3hot, 0); > pci_enable_wake(pdev, PCI_D3cold, 0); > > + if ((err = e1000_request_irq(adapter))) > + return err; > + > + e1000_power_up_phy(adapter); > e1000_reset(adapter); > E1000_WRITE_REG(&adapter->hw, WUS, ~0); > > -- MfG/Sincerely Toralf Förster +++ I'm not subscribed to the email list, please Cc: me +++
Attachment:
pgpn7ZKKCNiAv.pgp
Description: PGP signature
- References:
- Prev by Date: Re: realtime-preempt patch-2.6.18-rt7 oops
- Next by Date: ipc/msg.c "cleanup" breaks fakeroot on Alpha
- Previous by thread: [PATCH] e1000: Fix regression: garbled stats and irq allocation during swsusp
- Next by thread: Re: [PATCH] e1000: Fix regression: garbled stats and irq allocation during swsusp
- Index(es):