Hi all,
I am working on i.MX6 Sabre Lite board. Total ram available in this board
is 1GB (0x10000000-0x50000000). To demonstrate TrustZone, i tried to run
tz_vmm with Genode in Normal world also. So i divide the available RAM as
secure (0x10000000-0x30000000) and normal (0x30000000-0x50000000).
On the normal world ram, secure world also have the access which is
programmed in tzasc (tsc_380.h) driver. I tried to access normal world
region (0x40000000) through IO_MEM from the secure world but when i am
trying to create the iomem object for 0x40000000 region in tz_vmm. It gives
me the following fault.
I/O memory [40000000,50000000) not available
Local MMIO mapping failed!
[init -> tz_vmm] C++ runtime: Genode::Parent::Service_denied
I have included this region in mmio_regions inside the platform_support.cc
also. What could be the reason for this fault. ?
Log :
Starting kernel ...
kernel initialized
Core virtual memory allocator
---------------------
Allocator 10135250 dump:
Block: [00001000,00002000) size=00001000 avail=00000000 max_avail=00000000
Block: [00002000,00003000) size=00001000 avail=00000000 max_avail=00000000
Block: [00003000,00004000) size=00001000 avail=00000000 max_avail=ef832000
Block: [00004000,00005000) size=00001000 avail=00000000 max_avail=00000000
Block: [00005000,00006000) size=00001000 avail=00000000 max_avail=ef832000
Block: [00006000,00007000) size=00001000 avail=00000000 max_avail=00000000
Block: [00007000,10001000) size=0fffa000 avail=0fffa000 max_avail=ef832000
Block: [107be000,ffff0000) size=ef832000 avail=ef832000 max_avail=ef832000
=> mem_size=4286783488 (4088 MB) / mem_avail=4286758912 (4088 MB)
RAM memory allocator
---------------------
Allocator 101341f4 dump:
Block: [10000000,10001000) size=00001000 avail=00000000 max_avail=00000000
Block: [107be000,107bf000) size=00001000 avail=00000000 max_avail=00000000
Block: [107bf000,107c0000) size=00001000 avail=00000000 max_avail=00000000
Block: [107c0000,107c1000) size=00001000 avail=00000000 max_avail=0f83d000
Block: [107c1000,107c2000) size=00001000 avail=00000000 max_avail=00000000
Block: [107c2000,107c3000) size=00001000 avail=00000000 max_avail=0f83d000
Block: [107c3000,20000000) size=0f83d000 avail=0f83d000 max_avail=0f83d000
=> mem_size=260321280 (248 MB) / mem_avail=260296704 (248 MB)
IO memory allocator
-------------------
Allocator 101362b8 dump:
Block: [00000000,10000000) size=10000000 avail=10000000 max_avail=20000000
Block: [30000000,50000000) size=20000000 avail=20000000 max_avail=20000000
=> mem_size=805306368 (768 MB) / mem_avail=805306368 (768 MB)
IRQ allocator
-------------------
Allocator 10137314 dump:
Block: [00000000,00000400) size=00000400 avail=00000400 max_avail=00000400
=> mem_size=1024 (0 MB) / mem_avail=1024 (0 MB)
Genode 15.02
int main(): --- create local services ---
int main(): --- start init ---
:
:
[init] child "tz_vmm"
[init] RAM quota: 3932160
[init] ELF binary: tz_vmm
[init] priority: 0
I/O memory [40000000,50000000) not available
Local MMIO mapping failed!
[init -> tz_vmm] C++ runtime: Genode::Parent::Service_denied
[init -> tz_vmm] void* abort(): abort called
Regards
Chirag Garg
IIT Madras , Rise Lab