Jonathan Nieder wrote: > Julian Gilbey wrote [regarding sky2 tx stalls]:
>> I think this may be a hardware fault: I have now identified what >> appears to be the physical situation under which this bug manifests >> itself: it reliably occurs when I attempt to connect to an ethernet >> without my power supply connected (i.e., running from the battery), >> and never seems to occur when I am on main power. > > Weird. How reproducible is this? Does passing sky2.legacy_pme=1 on > the kernel command line help? Scratch that. The legacy_pme setting should only affect wake-on-LAN. The only interesting recent sky2 patch I can find upstream is v3.6-rc1~125^2~264 (sky2: Fix for interrupt handler, 2012-07-03). How does a kernel with that patch applied behave? A 3.6.y kernel should be hitting experimental this weekend, or if you'd like to try the patch before then, see [1]. Thanks again for your help and sorry for the slow reply. Sincerely, Jonathan [1] http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s4.2.2
From: Mirko Lindner <mlind...@marvell.com> Date: Tue, 3 Jul 2012 23:38:46 +0000 Subject: sky2: Fix for interrupt handler commit d663d181b9e92d80c2455e460e932d34e7a2a7ae upstream. Re-enable interrupts if it is not our interrupt Signed-off-by: Mirko Lindner <mlind...@marvell.com> Signed-off-by: David S. Miller <da...@davemloft.net> Signed-off-by: Jonathan Nieder <jrnie...@gmail.com> --- drivers/net/ethernet/marvell/sky2.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c index 11ddd8383315..69fc888c09e9 100644 --- a/drivers/net/ethernet/marvell/sky2.c +++ b/drivers/net/ethernet/marvell/sky2.c @@ -3060,8 +3060,10 @@ static irqreturn_t sky2_intr(int irq, void *dev_id) /* Reading this mask interrupts as side effect */ status = sky2_read32(hw, B0_Y2_SP_ISRC2); - if (status == 0 || status == ~0) + if (status == 0 || status == ~0) { + sky2_write32(hw, B0_Y2_SP_ICR, 2); return IRQ_NONE; + } prefetch(&hw->st_le[hw->st_idx]); -- 1.8.0.rc3