mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-15 09:55:36 +00:00
[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: Don Fry <brazilnut@us.ibm.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
This commit is contained in:
parent
2964bbd704
commit
4371dc6c60
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user