Commit 4371dc6c authored by Don Fry's avatar Don Fry Committed by Jeff Garzik

[PATCH] pcnet32: Prevent hang with 79c976

Some boards using the 79c976 pcnet32 chip will hang the system if the
ethtool --register-dump is performed with the device operational.  The
request to read bcr30 is retried by the PCI device infinitely without
returning data, hanging the system.

Tested ia32 and ppc64.
Signed-off-by: default avatarDon Fry <brazilnut@us.ibm.com>
Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
parent 2964bbd7
...@@ -988,7 +988,11 @@ static void pcnet32_get_regs(struct net_device *dev, struct ethtool_regs *regs, ...@@ -988,7 +988,11 @@ static void pcnet32_get_regs(struct net_device *dev, struct ethtool_regs *regs,
*buff++ = a->read_csr(ioaddr, 114); *buff++ = a->read_csr(ioaddr, 114);
/* read bus configuration registers */ /* read bus configuration registers */
for (i=0; i<36; i++) { for (i=0; i<30; i++) {
*buff++ = a->read_bcr(ioaddr, i);
}
*buff++ = 0; /* skip bcr30 so as not to hang 79C976 */
for (i=31; i<36; i++) {
*buff++ = a->read_bcr(ioaddr, i); *buff++ = a->read_bcr(ioaddr, i);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment