random kernel freezes with >2.6.32 linux and radeon rv350 gpu

Like some other people, I experienced random kernel freezes (so a *complete* lock-up) on my linux machine with a rv350 gpu. Not like some other people, we’ve identified the exact issue, what’s going on here and have got a (more or less) nice workaround, which should not provoke any sideeffects.

This post focus on people, who have got random freezes and match following requirements:

  • > linux 2.6.32
  • rv350 gpu
  • kms enabled
  • use of open source radeon-driver

Note: There are a lot of “random freezes” issues out there. So it’s very likely, that your random freeze is not *this* random freeze. Be sure, you have read through the bugtracker (as referred below), before beginning hacking the kernel. If you are a victim of this bug, then please help by posting your system setup on the bugtracker and testing patches!

The whole matter is documented on freedesktop (bug #28402).

We’ve located the exact kernel-commit, which leads to this regression. It has been discovered, that there is something wrong with the GTT-mapping.

The GTT (or Graphics Translation Table) is the set of page table entries for the GPU IOMMU (GTT is often used to refer to both the page tables and the IOMMU). In order for the GPU to perform an operation on memory (e.g. use it as a scanout buffer, render to it) the memory must be pointed to by GTT entries. That means it must be pinned into physical memory (i.e. not swappable to disk) and GTT pointers must be updated to point at it.

[copied from https://wiki.ubuntu.com/X/Glossary]

Also a patch has been provided, which is more a workaround than a fix (!). For this reason, there is no hope for a quick fix in upstream. You can get rid of the issue by patching your kernel. Further instructions, how to do that, can be found in the web.

I run a 2.6.35 zen kernel with this patch and my machine has survived without a crash for two weeks.

Let’s hope, a real fix will be provided soon.

 

//Update//

The final fix was found and is included in kernel 2.6.37.

 

Follow

Get every new post delivered to your Inbox.