Hello all,
In 2.6.37rc and later, there began an issue with regard to resuming my bttv card after suspend. The problem is that the tuner device is no longer seen upon resume after suspend. Luckily, I have found that the issue appears only when both bttv & radeon are loaded prior to suspend. So I am able to resolve/avoid the issue if
1) bttv loaded & radeon unloaded
2) bttv unloaded & radeon loaded
So I have two questions, first, the work-around is like this, assuming bttv is always loaded prior to suspend:
Code:
rmmod bttv
sleep 1
/usr/sbin/pm-suspend
modprobe bttv
I would like to have this executed from the Xfce suspend button as a work around for the time being. Does anyone know the right place?
The second question is more hardware controller specific. Does anyone know a way to find the culprit device or driver or have debugged suspend issues? Don't say just bisect the kernel--I've been down this path. The problem is intermittent, meaning it is completely possible to startup-suspend-resume just fine with any kernel version. There is required a certain level of activity of something, but I don't know what. My thought is that generally that you set the tuner frequency, unmute, and wait a while, hoping it is triggered. This makes for a very slow bisect. Not only that, there were several kernel bugs with both radeon and bttv during v2.6.37rc1 that complicates things further.
While I may revisit bisecting, I would like to have a pretty good idea on what to focus on. I have already tried to slim down the kernel to the key drivers during bisect, but I want to look more how the interaction of the two drivers plays into it. What I need is some background on suspend, some hardware specs, or some type of suspend debugger/hints where to look. Since the tuner is a dead simple device, it is hard to see where it could go wrong. So perhaps it is the PCI bus. The radeon card is PCI-X, and the tuner card is PCI. But it could also be I2C or SMBUS? Also note that in the prior kernel, 2.6.36, it is perfectly fine.