Updates to the Radeon saga

This is the continuation to my previous post of the radeon problems. Earlier we thought the newer kernels will fix it. They didn't. We've tried to upgrade Xorg to the latest one. It didn't fix it. We tried to disable all the advanced KMS acceleration features. It didn't fix it.

Our latest attempt, upgrading to kernel 3.8.5 also doesn't fix it.

But there is a light at the end of the tunnel. As mentioned before, JustGreg found out that problem didn't happen if one use "coldplug", or even "loadmodules". I found out yesterday that the problem also doesn't happen if I blacklist radeon, then boot to console, wait a little until the dust settles, and then load the module myself manually using modprobe (followed by starting the desktop, of course).

Previously my guess was that the radeon module needs to be loaded early, and indeed loading it early with "loadmodules" and "coldplug" makes it work. But yesterday results told me that loading it late also works. What gives?

I noticed this: the way "coldplug" and "udev" works is different. "Coldplug" load modules serially (ie, one at at time), while "udev" load modules in parallel (many at a time) - and in fact that's one of udev's benefits --- parallel loading makes boot process a lot faster.

So my guess is this: somehow loading modules in parallel makes things brittle for radeon module - it may work one one time but not on the other time. There may be some race conditions, or perhaps locking / synchronisation issues when multiple modules are being loaded at the same time, that only happens in the recent kernels, in a very specific conditions. Now I'm not sure what the conditions are, but it definitely happens on radeon. It may happens in other modules too (perhaps nvidia?), but so far we haven't noticed anything else.

Assuming that the hypothesis above is correct, then the workaround is simple: load radeon module by itself. Don't load it under udev. And that simple idea seems to work, so that would be the fix we're going to apply.

Of course, the best is to fix whatever the real underlying issues in the kernel or radeon module itself, but neither myself or kirk are kernel developers , so we leave that to the experts

Posted on 6 Apr 2013, 5:52 - Categories: Fatdog64
Edit - Delete


No comments posted yet.

Add Comment

Title
Author
 
Content
Show Smilies
Security Code 7755911
Mascot of Fatdog64
Password (to protect your identity)