I have a framebuffer that is running under 2.4.3 on a MIPS
platform. I also wrote a small little demo program that simply
mmap's in the framebuffer in user space after which it simply
moves the tux logo across the screen. The framebuffer is also
used as the console and that also works great.
After upgrading to 2.4.5, mmap no longer works. However, the
console code works just fine i.e. the framebuffer console
properly updates and displays things just fine on the screen.
I can also do 'cat /bin/ls > /dev/fb0' and see garbage appear
on the screen.
Also, the virtual address returned by the mmap call for my
demo program in user space is identical on 2.4.3 and 2.4.5,
however no tux moves across the screen like it should for
the 2.4.5 kernel meaning that the mmap call didn't actually
get the framebuffer memory (that's my assumption).
I have traced through 'do_mmap_pgoff' and that code appears to
be nearly identical in 2.4.3 and 2.4.5. My architecture specific
MM code has not changed either, so the cache flushing assembly
code is identical. I'm working my way through the 'kmem_cache_XX'
calls right now to find differences. Anyone have some ideas?
Steven J. Hill - Embedded SW Engineer