Re: 2.6.29-rc3: tg3 dead after resume

Linus Torvalds
2009-01-30T23:57:54Z

On Fri, 30 Jan 2009, Parag Warudkar wrote:
>
> Totally worth having this problem from a "getting an opportunity to
> understand" standpoint. This confirms my long standing suspicion that bugs
> in Linux kernel are merely a handiwork of few clever people to get more
> people to understand and contribute :)

Heh. I wish. But if that's the end result, we've done something good.

> Any how here is the pre-suspend lspci -vvxxx output followed by diff -u -

Bingo.

> diff -u lspci-pre-suspend lspci-post-suspend
>
> --- lspci-pre-suspend 2009-01-30 18:19:50.752275695 -0500
> +++ lspci-post-suspend 2009-01-30 18:20:52.629779008 -0500
>
> 00:1c.0 PCI bridge: Intel Corporation 631xESB/632xESB/3100 Chipset PCI Express Root Port 1 (rev 09)
> - Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> + Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
> Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
> Latency: 0, Cache Line Size: 64 bytes
> Bus: primary=00, secondary=0e, subordinate=0e, sec-latency=0

We've disabled IO and MEM behind this bridge - the one that bridges to
secondary bus 0x0e.

And your tg3 device? It's at 0000:0e:00.0. Yeah. Exactly the bus that
we've disabled IO and MEM for.

In other words, it was never your tg3 suspend/resume that was buggy. It
was the suspend/resume for the PCI-E port driver. In fact, I think it's
_exactly_ the issue I just emailed out about.

I bet Rafael can whip up a patch in a minute. I have too much of a
headache right now to look at my screen for a while, so I'll take a break.

Linus