Hello,
I'm trying to pass data between worlds, currently I'm allocating kernel space buffer in the normal world (Linux), passing the address using r0 register and the size using r1 register. I manage to read the buffers reliably. When I'm trying to change the buffers in the secure world, I don't see the change in the normal world, at first i thought there was some compiler optimization issues, now I use -O0, next i thought this was CPU cache issues and now i use "flush_kernel_kmaps()" but still nothing. Any idea's on this issue ?
Another question, how to i restart the board (iMX53) from genode code in the secure world ?
Thanks a lot
I managed to pass data, solved it using "ioremap_nocache", With regards to the restart, still no success.
Thanks.
On Sun, Jun 7, 2015 at 9:07 AM, Ofer Hasson <hassonof@...310...> wrote:
Hello,
I'm trying to pass data between worlds, currently I'm allocating kernel space buffer in the normal world (Linux), passing the address using r0 register and the size using r1 register. I manage to read the buffers reliably. When I'm trying to change the buffers in the secure world, I don't see the change in the normal world, at first i thought there was some compiler optimization issues, now I use -O0, next i thought this was CPU cache issues and now i use "flush_kernel_kmaps()" but still nothing. Any idea's on this issue ?
Another question, how to i restart the board (iMX53) from genode code in the secure world ?
Thanks a lot
Hi Ofer,
On 06/07/2015 12:40 PM, Ofer Hasson wrote:
I managed to pass data, solved it using "ioremap_nocache",
I think you should start with allocating the memory in an uncached fashion instead of remapping it uncached (having the same memory region with different memory attributes in the MMU can cause serious problems), have a look at the 'dma_alloc_coherent' function within Linux. Moreover, you can read this for further background: http://linuxkernelhacker.blogspot.de/2014/07/arm-dma-mapping-explained.html
With regards to the restart, still no success.
There is no restart mechanism implemented until now. The right place to do this is the platform driver. You could extend the platform session interface by a restart function. Then you can e.g. implement an input driver client, or GPIO button client that triggers this function when the key or button is pressed. To actually reset the board you should have a look at the watchdog timer in Freescale's reference manual.
Regards Stefan
Thanks.
On Sun, Jun 7, 2015 at 9:07 AM, Ofer Hasson <hassonof@...310...> wrote:
Hello,
I'm trying to pass data between worlds, currently I'm allocating kernel space buffer in the normal world (Linux), passing the address using r0 register and the size using r1 register. I manage to read the buffers reliably. When I'm trying to change the buffers in the secure world, I don't see the change in the normal world, at first i thought there was some compiler optimization issues, now I use -O0, next i thought this was CPU cache issues and now i use "flush_kernel_kmaps()" but still nothing. Any idea's on this issue ?
Another question, how to i restart the board (iMX53) from genode code in the secure world ?
Thanks a lot
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
I'll look into it, thanks a lot !
On Mon, Jun 8, 2015 at 12:51 PM, Stefan Kalkowski < stefan.kalkowski@...1...> wrote:
Hi Ofer,
On 06/07/2015 12:40 PM, Ofer Hasson wrote:
I managed to pass data, solved it using "ioremap_nocache",
I think you should start with allocating the memory in an uncached fashion instead of remapping it uncached (having the same memory region with different memory attributes in the MMU can cause serious problems), have a look at the 'dma_alloc_coherent' function within Linux. Moreover, you can read this for further background: http://linuxkernelhacker.blogspot.de/2014/07/arm-dma-mapping-explained.html
With regards to the restart, still no success.
There is no restart mechanism implemented until now. The right place to do this is the platform driver. You could extend the platform session interface by a restart function. Then you can e.g. implement an input driver client, or GPIO button client that triggers this function when the key or button is pressed. To actually reset the board you should have a look at the watchdog timer in Freescale's reference manual.
Regards Stefan
Thanks.
On Sun, Jun 7, 2015 at 9:07 AM, Ofer Hasson <hassonof@...310...>
wrote:
Hello,
I'm trying to pass data between worlds, currently I'm allocating kernel space buffer in the normal world (Linux), passing the address using r0 register and the size using r1 register. I manage to read the buffers reliably. When I'm trying to change the buffers in the secure world, I don't see
the
change in the normal world, at first i thought there was some compiler optimization issues, now I use -O0, next i thought this was CPU cache issues and now i use "flush_kernel_kmaps()" but still nothing. Any idea's on this issue ?
Another question, how to i restart the board (iMX53) from genode code in the secure world ?
Thanks a lot
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
-- Stefan Kalkowski Genode Labs
http://www.genode-labs.com/ · http://genode.org/
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main