Bug 12614

Summary: WOL with forcedeth broken since f55c21fd9a92a444e55ad1ca4e4732d56661bf2e
Product: Drivers Reporter: Rafael J. Wysocki (rjw)
Component: NetworkAssignee: Jeff Garzik (jgarzik)
Status: CLOSED CODE_FIX    
Severity: normal CC: ari_jasberg
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: commit f55c21fd9a92a444e55ad1ca4e4732d56661bf2e Subsystem:
Regression: Yes Bisected commit-id:
Bug Depends on:    
Bug Blocks: 7216, 11808    

Description Rafael J. Wysocki 2009-02-01 16:05:45 UTC
Subject    : WOL with forcedeth broken since f55c21fd9a92a444e55ad1ca4e4732d56661bf2e
Submitter  : Philipp Matthias Hahn <pmhahn@titan.lahn.de>
Date       : 2009-01-29 6:31
References : http://marc.info/?l=linux-kernel&m=123321232825316&w=4
Handled-By : Yinghai Lu <yinghai@kernel.org>
Patch      : http://marc.info/?l=linux-kernel&m=123330459229248&w=4

This entry is being used for tracking a regression from 2.6.27.  Please don't
close it until the problem is fixed in the mainline.

Caused by:

commit f55c21fd9a92a444e55ad1ca4e4732d56661bf2e
Author: Yinghai Lu <yhlu.kernel@gmail.com>
Date:   Sat Sep 13 13:10:31 2008 -0700

    forcedeth: call restore mac addr in nv_shutdown path

    Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
    Cc: Tobias Diedrich <ranma+kernel@tdiedrich.de>
    Cc: Ayaz Abdulla <aabdulla@nvidia.com>
    Cc: Jeff Garzik <jeff@garzik.org>
    Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Comment 1 Rafael J. Wysocki 2009-02-05 16:12:59 UTC
On Friday 06 February 2009, Philipp Matthias Hahn wrote:
> Hello!
> 
> On Thu, Jan 29, 2009 at 10:53:40PM -0800, Yinghai Lu wrote:
> > can not find the reason why the WOL doesn't work...
> > 
> > please post
> > 1. boot log for just after AC is pluged-in... ===> you should have
> > "nv_probe: set workaround bit for reversed mac addr"
> > 2. and boot log after boot from WOL...==> you have have "nv_probe: set
> > workaround bit for reversed mac addr" too.
> 
> On Wed, Feb 04, 2009 at 11:58:53AM +0100, Rafael J. Wysocki wrote:
> > Bug-Entry   : http://bugzilla.kernel.org/show_bug.cgi?id=12614
> > Subject             : WOL with forcedeth broken since
> f55c21fd9a92a444e55ad1ca4e4732d56661bf2e
> > Submitter   : Philipp Matthias Hahn <pmhahn@titan.lahn.de>
> > Date                : 2009-01-29 6:31 (7 days old)
> > References  : http://marc.info/?l=linux-kernel&m=123321232825316&w=4
> > Handled-By  : Yinghai Lu <yinghai@kernel.org>
> > Patch               :
> http://marc.info/?l=linux-kernel&m=123330459229248&w=4
> 
> Strage, at the moment I can't seem to reproduce the problem. I've
> switched back to the version of 2.6.28.3 and now it seems to work.
> I'll continue with tesing.
> 
> Some additional data:
> The BIOS-upgrade tool (Afud408.exe) resets the MAC address. I had to run
> the tool a second time to re-programm the MAC-address using its /M
> option. I useed the unreversed MAC-address back than.
> I also tried the reversed address once, but after that forcedeth.c
> complained about a wrong MAC-address.
> 
> If I completely turn off the power (pull the plug), WOL doesn't work,
> even when it's enabled in the BIOS.
> 
> Only after I'v started Linux, do "echo NMAC > /proc/acpi/wakeup" and
> "ethtool -s eth0 wol g" does it work again.
> 
> Nether the less here's the output of dmesg:
>         forcedeth: Reverse Engineered nFoce ethernet driver. Version 0.61.
>         ACPI: PCI Interrupt Link [LMAC] enables at IRQ 23
>         forcedeth: 0000:00:14.0: PCI INT A -> Link[LMAC] -> GSI 23 (level,
>         low) -> IRQ 23
>         forcedeth: 0000:00:14.0: setting latency timer to 64
> *       nv_probe: MAC_ADDR_REV ELSE
>         nv_probe: set workaround bit for reversed mac addr
>         forcedeth: 0000:00:14.0: ifname eth0, PHY OUI 0x732 @ 1, addr
>         00:19:db:f2:e1:35
>         forcedeth: 0000:00:14.0: highdma pwrctl timirq gbit lnktim desc-v3
> The line maked * was inserted by me in the source file for my debugging.
Comment 2 Philipp Matthias Hahn 2009-02-06 05:26:16 UTC
I did some structured tesing:

1. WOL does _not_ work at all when I do:
	(grub) boot into initrd
	(initrd) modprobe forcedeth
	(initrd) ethtool -s eth0 wol g
*	(initrd) poweroff

2. WOL does _not_ work at all when I do:
	(grub) boot into initrd
	(initrd) modprobe forcedeth
	(initrd) ethtool -s eth0 wol g
*	(initrd) Alt-SysRq-O

3. WOL works using the _un-reversed_ MAC when I do:
	(grub) boot into initrd
	(initrd) modprobe forcedeth
	(initrd) ethtool -s eth0 wol g
*	(initrd) Alt-SysRq-B
*	(grub) halt

4. WOL works using the _reversed_ MAC when I do:
	(grub) boot into initrd
	(initrd) modprobe forcedeth
	(initrd) ethtool -s eth0 wol g
	(initrd) exit
*	(Debian) poweroff

If I do the poweroff from linux (either initrd or Debian), forcedeth
seems to display some messages just before poweroff. I'll try to get
hands on a Serial-USB-Converter and a NULL-modem-cable to capture it,
since my laptop is legacy-free :-(

PS: initrd is actually initramfs, before somebody wonders.
Comment 3 Rafael J. Wysocki 2009-02-08 12:33:07 UTC
Handled-By : Tobias Diedrich <ranma+kernel@tdiedrich.de>
Patch : http://marc.info/?l=linux-kernel&m=123411195117835&w=4
Comment 4 Ari Jasberg 2009-02-27 00:24:16 UTC
*** Bug 12639 has been marked as a duplicate of this bug. ***
Comment 5 Rafael J. Wysocki 2009-03-14 14:21:25 UTC
Fixed by commit 34edaa88324004baf4884fb0388f86059d9c4878 .