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
Hi Chirag,
On 05.05.2015 07:38, chirag garg wrote:
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
You can take this fault as a starting point by searching (e.g. via grep) for "I/O memory .* not available" in the repositories base and base-hw. Presumably, this will lead you to the code path that is responsible for allocating MMIO regions. From there, you might be able to trace back were your region gets "lost" and to whom.
Cheers, Martin
Thank you Martin.
The problem is, as you referred in your other mail.
So, if you're in the VMM, you can acces the RAM through this object. If you're in another component you would have to request the VMM to release the IO_MEM-Region to be able to allocate it through a new IO_MEM session.
Regards
Chirag Garg IIT Madras , Rise Lab
On Tue, May 5, 2015 at 1:43 PM, Martin Stein <martin.stein@...1...> wrote:
Hi Chirag,
On 05.05.2015 07:38, chirag garg wrote:
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
You can take this fault as a starting point by searching (e.g. via grep) for "I/O memory .* not available" in the repositories base and base-hw. Presumably, this will lead you to the code path that is responsible for allocating MMIO regions. From there, you might be able to trace back were your region gets "lost" and to whom.
Cheers, Martin
One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main