I have an imx53 sabre tablet. I am trying to implement a reference monitor in
SW, to create a trace for memory accesses from android running in NW.
I do not need to monitor all memory accesses, but those corresponding to IPU
and I2C. I am actually interested in the OV5642 camera module - and want to
monitor in SW all memory read/writes corresponding to android camera activities
running in NW. Going through the android device driver code, saw that IPU and
I2C do the memory related operations and configurations for the camera. In
http://www.mit.edu/afs.new/sipb.mit.edu/project/freebsd/head/sys/gnu/dts/arm/imx53.dtsi,
which matches the IMX53 reference manual, the IPU and three I2C physical
address ranges are mentioned.
If I want to create a reference monitor for these physical memory addresses,
should I mark these as secure memory? According to
https://community.arm.com/thread/4852#15483, to just read/write NW pages, SW
doesn’t need extra hardware configuration like TZASC, M4IF, TZPC or CSU. This
is possibly what
https://www.informatik.tu-darmstadt.de/fileadmin/user_upload/Group_TRUST/PubsPDF/mobisys16_restricted-spaces.pdf
uses to check/modify android loaded in NW RAM. But my SW will need to know
when NW is making a particular memory access, so the ability to passively
read/write NW memory locations from SW isn’t useful.
How can I mark multiple blocks of physical address ranges (corresponding to
memory mapped IO and not SRAM/DRAM) as secure? The M4IF seems to split the DDR
external memory into two blocks. Should I use TZASC, as according to genode
documentation - "Due to experimentation, we were able to deduct the following
insights. The TZASC controller on the platform is used to secure physical
address ranges that are addressable through the Static Memory Controller (SMC).
In principal, it should be possible to secure another memory controller by a
TZASC too, but on the platform, it is restricted to the SMC. These physical
address regions correspond to the I/O resources of peripheral devices, some
SRAM, and flash memory.” Or do I need to configure the CSU? What is the way to
configure TZASC or CSU, to make particular physical address ranges secure?
When some physical memory is marked as secure, does NW access there cause a
data abort? Does it automatically trap to monitor code, and SW can see what NW
instruction caused it? I will need to record that access in SW, emulate that
instruction in SW and give back control to NW. I understand that because IPU
is needed for any display related activity (and accel/magnetometer/audio … all
seem to be I2C devices), making those memory regions secure will cause android
to fault even at booting. So I will possibly see the intended behavior, even
without using the android camera.
Thanks in advance for any suggestions on how to proceed.
Thanks!
Riju
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main