Re: e1000 (on-board CSA) lockup with 2.6.3 on ifconfig

From: Alex Scheele
Date: Thu Feb 19 2004 - 06:42:11 EST


Hi,

The lockup is probably caused by a patch that made it in the tree
which adds an interrupt disable/enable to keep interrupt assertion
state synced between 82547 and APIC. This patch was in the tree before
but was reverted a while back because it locked up 82547 CSA-based LOMs.
Apparently it made it back in. Below I have inserted a patch (against 2.6.3)
which
removes it again. Feel free to test if it stops the lockups.


Regards,

Alex Scheele



--- e1000_main.c 2004-02-18 04:57:26.000000000 +0100
+++ e1000_main_new.c 2004-02-19 12:28:15.000000000 +0100
@@ -2124,26 +2124,10 @@
__netif_rx_schedule(netdev);
}
#else
- /* Writing IMC and IMS is needed for 82547.
- Due to Hub Link bus being occupied, an interrupt
- de-assertion message is not able to be sent.
- When an interrupt assertion message is generated later,
- two messages are re-ordered and sent out.
- That causes APIC to think 82547 is in de-assertion
- state, while 82547 is in assertion state, resulting
- in dead lock. Writing IMC forces 82547 into
- de-assertion state.
- */
- if(hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2)
- e1000_irq_disable(adapter);
-
for(i = 0; i < E1000_MAX_INTR; i++)
if(!e1000_clean_rx_irq(adapter) &
!e1000_clean_tx_irq(adapter))
break;
-
- if(hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2)
- e1000_irq_enable(adapter);
#endif

return IRQ_HANDLED;


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/