Re: [PATCH] r8169: fix broken register writes
From: Al Viro <viro@ZenIV.linux.org.uk>
Date: 2010-03-29 01:03:53
On Sun, Mar 28, 2010 at 11:19:24PM +0100, Al Viro wrote:
quoted
quoted
Thanks Fran?ois. Which hardware have you tested this on so far ?10ec:8169 (rev 10) / RTL8169sb/8110sb / XID 10000000 Timo's is a 10ec:8167 / RTL8169sc/8110sc / XID 18000000. He only tested the MAC[04] part.FWIW, XID18000000 here (J7F4) loses MAC4 on shutdown; hadn't tested the patch yet. 2.6.26 (on that box) and 2.6.31 (on identical mb) work, 2.6.33 doesn't. I suspect that bisect would lead to commit cc098dc70 (i.e. the place where we started to set address on shutdown). One more data point: ifconfig hw ether done under 2.6.26 did restore the address. And that's the same function, isn't it?
As the matter of fact, ifconfig eth0 hw ether .... ends up zeroing upper
32 bits on old kernels once in a while.
What orders accesses as seen by PCI bus in
RTL_W8(Cfg9346, Cfg9346_Unlock);
RTL_W32(MAC0, low);
RTL_W32(MAC4, high);
RTL_W8(Cfg9346, Cfg9346_Lock);
anyway, and don't we need mmiowb() or two in there?