Hello,
I think I have partial work around for this problem, and also
confirmation, that the issue is caused by framebuffer access and
improper caching handling. I modified drivers/video/fbmem.c, function
fbmem_mmap, to don't use write combining on framebuffer and disable
caching completely [1]. After this, I was able to run Xfbdev for at
least an hour without any apparent problems - everything seems to work.
I tried to find the code which takes care about write combining (as
far as I understand, it should be somewhere in arch/arm/mm), but have
not found any such code yet.
Milan Plzik
[1] Exact modification to fbmem.c:
--- fbmem.c.old 2006-12-23 11:46:15.000000000 +0100
+++ fbmem.c 2006-12-23 11:46:32.000000000 +0100
@@ -1206,7 +1206,7 @@
#elif defined(__hppa__)
pgprot_val(vma->vm_page_prot) |= _PAGE_NO_CACHE;
#elif defined(__arm__) || defined(__sh__) || defined(__m32r__)
- vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
+ vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
#elif defined(__ia64__)
if (efi_range_is_wc(vma->vm_start, vma->vm_end - vma->vm_start))
vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
Received on Sat Dec 23 2006 - 08:00:11 EST
This archive was generated by hypermail 2.2.0 : Sat Dec 23 2006 - 08:01:29 EST