Re: [BUG] Via-Rhine WOL vs PXE Boot

From: Kenneth Aafløy
Date: Fri Sep 17 2004 - 17:07:51 EST


On Friday 17 September 2004 22:34, Roger Luethi wrote:
> On Fri, 17 Sep 2004 21:54:36 +0200, Kenneth Aafløy wrote:
> > In recent kernels I have been having trouble booting from a LAN with the
> > built in PXE firmware in my Via Epia M10k board.
[...]

> The patch you are referring to contains very little code that affects chip
> programming without user intervention (e.g. calling ethtool ioctls). There
> is one notable exception: The patch introduces rhine_shutdown which is
> called at shutdown (well, duh!). I suppose you can make the problem go away
> if you comment out parts of said function. I'd start at the bottom with the
> D3 call.

Indeed it was that last call to change the power state, as I too figured. Now
I wonder if there is some other power state that could be set that would
benefit powersaving, but not prevent the pxe boot rom from beeing confused?

Or should this rather be reported as a bug to Via, so that they can implement
restoring the adapter from the D3 state in the pxe boot rom?

I've attached what I belive to be a bk patch (kinda new to that) which
comments out this power-state change, untill something better is found. I
have not tested WOL with this, but I can't think of any reason why it should
not work.

Kenneth
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
# 2004/09/17 23:44:56+02:00 lists@xxxxxxxxxxxxxxxxxx(none)
# via-rhine.c:
# [via-rhine] Disable the D3 power state in _shutdown.
#
# drivers/net/via-rhine.c
# 2004/09/17 23:29:58+02:00 lists@xxxxxxxxxxxxxxxxxx(none) +3 -1
# [via-rhine] Disable the D3 power state in _shutdown.
#
diff -Nru a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
--- a/drivers/net/via-rhine.c 2004-09-17 23:49:38 +02:00
+++ b/drivers/net/via-rhine.c 2004-09-17 23:49:38 +02:00
@@ -1934,7 +1934,9 @@
writeb(readb(ioaddr + StickyHW) | 0x04, ioaddr + StickyHW);

/* Hit power state D3 (sleep) */
- writeb(readb(ioaddr + StickyHW) | 0x03, ioaddr + StickyHW);
+ /* Disabled for now, because it will confuse the PXE boot rom
+ * of some Via Epia boards. */
+ //writeb(readb(ioaddr + StickyHW) | 0x03, ioaddr + StickyHW);

/* TODO: Check use of pci_enable_wake() */