Now, executing the code via directly poking the registers (in a loop: writing the V3D registers, waiting for all interrupts) works perfectly. Executing the same code via the mailbox interface shows some strange behavior:
- If there is some delay (e.g. 10 ms) between mailbox-calls, the execution finishes successfully.
- If there is no delay between the mailbox-calls, after a few loop-iterations, the system freezes, no response, not even in terminals.
- If I set the delay between the syscalls to a lower value (e.g. 100 us), the execution finished, but significantly (about 1/8th) slower!
My theory for the first two points is, that I somehow swamp the linux kernel with syscalls, so it has no more time for anything else!? But I can't explain why a lower delay results in a slower execution.
Has anyone here an explanation for this behaviour?