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