Ian Kumlien schrieb: > On Sun, 2006-02-19 at 14:20 +0100, Wolfgang Hoffmann wrote: > >>On Saturday 18 February 2006 18:00, Carl-Daniel Hailfinger wrote: >> >>>Hi, >>> >>>Stephen Hemminger schrieb: >>> >>>>Could everyone who has problems with hangs try the >>>>following patch (against current 2.6.16-rc3 version) >>> >>>If Stephen's patch doesn't work for you, could you try replacing >>>sky2.c and sky2.h with the ones attached to this mail? I'd be very >>>interested in feedback for my version of the hangfix. >> >>Yes, your version cures my hangs. > > It's official, it cures my hangs as well, but it doesn't do MSI, and MSI > might add some additional complexity.
Could you all please test the attached patch against 2.6.16-rc4? It is a straight forward-port of my sky2 version that worked for you. Regards, Carl-Daniel -- http://www.hailfinger.org/
diff -urN linux-2.6.16-rc4/drivers/net/sky2.c linux-2.6.16-rc4-sky2fix/drivers/net/sky2.c --- linux-2.6.16-rc4/drivers/net/sky2.c 2006-02-21 01:31:18.000000000 +0100 +++ linux-2.6.16-rc4-sky2fix/drivers/net/sky2.c 2006-02-21 01:27:42.000000000 +0100 @@ -1863,6 +1863,17 @@ sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ); + /* + * Kick the STAT_LEV_TIMER_CTRL timer. + * This fixes my hangs on Yukon-EC (0xb6) rev 1. + * The if clause is there to start the timer only if it has been + * configured correctly and not been disabled via ethtool. + */ + if (sky2_read8(hw, STAT_LEV_TIMER_CTRL) == TIM_START) { + sky2_write8(hw, STAT_LEV_TIMER_CTRL, TIM_STOP); + sky2_write8(hw, STAT_LEV_TIMER_CTRL, TIM_START); + } + hwidx = sky2_read16(hw, STAT_PUT_IDX); BUG_ON(hwidx >= STATUS_RING_SIZE); rmb();