In an attempt to get DMA access to Raspberry Pi 3 working from user space, ported the safe L2 cache bypassing allocation code from dma-gpio.c over to dma-example.c, the code is available at
juj@fcc8abe#diff-7f20fb2096b20c653020741d0a12f09bR326
No matter what I try, I get the above code to hang the pi (requiring hard power off and on the device), usually printing out
pi@raspi:~/code/Raspberry-Pi-DMA-Example $ sudo ./dma-example
memfd: 3, pagemapfd: 4
mapped: 0x76f62000
destination was initially: ''
sleep
without ever getting over the sleep(1); command to print out the next sleep done message. I wonder if there is something in the above ported code you'd be able to catch out?
(as a sidenote, had to change the used DMA channel from default 5 to 8, since sniffing the DMA channels' CS registers showed that DMA channel 5 is infrequently in use on the system (one transfer per a few minutes), not sure by what though.
In an attempt to get DMA access to Raspberry Pi 3 working from user space, ported the safe L2 cache bypassing allocation code from
dma-gpio.cover todma-example.c, the code is available atjuj@fcc8abe#diff-7f20fb2096b20c653020741d0a12f09bR326
No matter what I try, I get the above code to hang the pi (requiring hard power off and on the device), usually printing out
without ever getting over the
sleep(1);command to print out the nextsleep donemessage. I wonder if there is something in the above ported code you'd be able to catch out?(as a sidenote, had to change the used DMA channel from default 5 to 8, since sniffing the DMA channels' CS registers showed that DMA channel 5 is infrequently in use on the system (one transfer per a few minutes), not sure by what though.