Skip to contentSkip to conversation

fix MCA when shutting down tulip quad-NIC

PATCH In review Olaf Hering 2 participants 3 messages Apr 3, 2007 – Apr 10, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 fix MCA when shutting down tulip quad-NIC

From: [email protected]

https://bugzilla.novell.com/show_bug.cgi?id=SUSE39204

Shutting down the network causes an MCA because of an IO TLB error when a DEC quad 10/100 card is in any slot. This problem was originally seen on an HP rx4640.

---

Andrew: Why is it tp->pdev instead of pdev?

 drivers/net/tulip/tulip_core.c |    1 +
 1 file changed, 1 insertion(+)
drivers/net/tulip/tulip_core.c +1 -0
Index: b/drivers/net/tulip/tulip_core.c
===================================================================
@@ -1798,6 +1798,7 @@ static void __devexit tulip_remove_one (
 		return;
 
 	tp = netdev_priv(dev);
+	pci_disable_device(tp->pdev);
 	unregister_netdev(dev);
 	pci_free_consistent (pdev,
 			     sizeof (struct tulip_rx_desc) * RX_RING_SIZE +
#1 lore raw
Quoted 3 lines · Olaf Hering

From: [email protected]

https://bugzilla.novell.com/show_bug.cgi?id=SUSE39204

Wow, registering for Novell's bugzilla is painful. And in the end I get "Access denied" on that bug. Can you give us this information some other way?

Quoted 3 lines

Shutting down the network causes an MCA because of an IO TLB error when a DEC quad 10/100 card is in any slot. This problem was originally seen on an HP rx4640.

I'm not clear on why pci_disable_device() would fix this bug. Do you have an explanation (or can copy one out of the bug report)? I'm hesitant to make even obviously correct changes to the tulip driver without good evidence, given the incredible variety of buggy hardware out there.

This looks to me like another iteration of the shutdown DMA/irq race at first glance. Grant has a patch for it; I'm working on one I consider cleaner.

-VAL

Quoted 24 lines

---

Andrew: Why is it tp->pdev instead of pdev?

 drivers/net/tulip/tulip_core.c |    1 +
 1 file changed, 1 insertion(+)

Index: b/drivers/net/tulip/tulip_core.c
===================================================================

drivers/net/tulip/tulip_core.c +1 -0
@@ -1798,6 +1798,7 @@ static void __devexit tulip_remove_one (
 		return;
 
 	tp = netdev_priv(dev);
+	pci_disable_device(tp->pdev);
 	unregister_netdev(dev);
 	pci_free_consistent (pdev,
 			     sizeof (struct tulip_rx_desc) * RX_RING_SIZE +
#2 lore raw
Quoted 8 lines · Valerie Henson
Quoted 3 lines · Olaf Hering

From: [email protected]

https://bugzilla.novell.com/show_bug.cgi?id=SUSE39204

Wow, registering for Novell's bugzilla is painful. And in the end I get "Access denied" on that bug. Can you give us this information some other way?

I did not see an easy way to make the bug public other than moving it to the openSuSE category.

Quoted 9 lines
Quoted 3 lines

Shutting down the network causes an MCA because of an IO TLB error when a DEC quad 10/100 card is in any slot. This problem was originally seen on an HP rx4640.

I'm not clear on why pci_disable_device() would fix this bug. Do you have an explanation (or can copy one out of the bug report)? I'm hesitant to make even obviously correct changes to the tulip driver without good evidence, given the incredible variety of buggy hardware out there.

The comments in the bug do not have an detailed analysis. One of the comments is:

...
Comment #1 From Andrew Patterson 2004-04-20 19:47:32 MST [reply]

1. ifdown the interfaces; then ifup them
2. do this in a loop from a script and it generally MCA's within 2 minutes.
...

The first version for 2.6.5 contained the pci_disable_device() and a version which was commited to mainline:

http://git.kernel.org/?p=linux/kernel/git/torvalds/old-2.6-bkcvs.git;a=commitdiff;h=6379dd571265528f3911b9deafe2a29af2e71a2b

Later the patch contained just the pci_disable_device() call.

Andrew, does your testscript still fail in SLES10 or mainline?

Quoted 3 lines

This looks to me like another iteration of the shutdown DMA/irq race at first glance. Grant has a patch for it; I'm working on one I consider cleaner.

Thats likely the same issue.
http://www.linuxarkivet.se/mlists/linux-net/0409/msg00173.html