Other Parts Discussed in Thread: AM3354, AM3352
I've written a simple program which maps the framebuffer memory (/dev/fb0) and periodically checks it for modifications. The program started freezing the system when I started using the NEON instructions.
I've run the program on a BeagleBone Black with tilcdc and da8xx-fb drivers, with the 3.8, 3.12 and 3.14 kernels. There are no differences.
Is there any limitation on how the framebuffer memory can be accessed?
I've put a sample program here: http://pastie.org/private/my0jba1lcznrcxegk8qha, compile with -O3 -mfpu=neon. Run with one argument: /dev/fb0. The program is expected to run an infinite loop, but instead freezes after some tens-hundreds iterations. The watchdog is enabled to trigger a reset in such case.
What is more surprising: when I remove the comparison code, so that the loop reduces to a memcpy equivalent, the program works correctly. This would suggest that simply accessing the memory with NEON instructions is fine. On the other hand, when the unmodified program is run on non-framebuffer memory (run with /dev/zero), it also works fine. For some reason the combination of fb memory and NEON computations triggers the freeze.