Discussion:
Data-abort exception while trying to boot skalk/linux imx-53 branch with genode trustzone
Abhishek Kumar
2017-05-31 12:25:32 UTC
Permalink
Hello
I am trying to run linux in normal world on genode trustzone. I have
changed the run-script of genode to copy the uImage generated from
skalk/linux's imx-53 branch instead of downloading (default). I am making
uImage with following command:

make uImage LOADADDR=0x70010000

while executing, genode stops after starting virtual machine with following
error trace:

```
.
.
[init] child "tz_vmm"
[init] RAM quota: 10203136
[init] ELF binary: tz_vmm
[init] priority: 0
[init -> tz_vmm] Start virtual machine ...
[init -> tz_vmm] Cpu state:
[init -> tz_vmm] Register Virt Phys
[init -> tz_vmm] ---------------------------------
[init -> tz_vmm] r0 = 07000000 [00000000]
[init -> tz_vmm] r1 = f801ff50 [00000000]
[init -> tz_vmm] r2 = ffffffe4 [00000000]
[init -> tz_vmm] r3 = 40002000 [00000000]
[init -> tz_vmm] r4 = 00000000 [00000000]
[init -> tz_vmm] r5 = 00000000 [00000000]
[init -> tz_vmm] r6 = 000000ee [00000000]
[init -> tz_vmm] r7 = 00000000 [00000000]
[init -> tz_vmm] r8 = 00000000 [00000000]
[init -> tz_vmm] r9 = 00000000 [00000000]
[init -> tz_vmm] r10 = 00000000 [00000000]
[init -> tz_vmm] r11 = 00000000 [00000000]
[init -> tz_vmm] r12 = 00000000 [00000000]
[init -> tz_vmm] sp = 00000000 [00000000]
[init -> tz_vmm] lr = 00000000 [00000000]
[init -> tz_vmm] ip = 0040dfe8 [00000000]
[init -> tz_vmm] cpsr = 60000093
[init -> tz_vmm] sp_und = 00000000 [00000000]
[init -> tz_vmm] lr_und = 8000800c [00000000]
[init -> tz_vmm] spsr_und = 00000093 [00000000]
[init -> tz_vmm] sp_svc = f801ff4c [00000000]
[init -> tz_vmm] lr_svc = 0040bc97 [00000000]
[init -> tz_vmm] spsr_svc = 00000000 [00000000]
[init -> tz_vmm] sp_abt = 00000000 [00000000]
[init -> tz_vmm] lr_abt = 00000000 [00000000]
[init -> tz_vmm] spsr_abt = 00000000 [00000000]
[init -> tz_vmm] sp_irq = 00000000 [00000000]
[init -> tz_vmm] lr_irq = 00000000 [00000000]
[init -> tz_vmm] spsr_irq = 00000000 [00000000]
[init -> tz_vmm] sp_fiq = 00000000 [00000000]
[init -> tz_vmm] lr_fiq = 00000000 [00000000]
[init -> tz_vmm] spsr_fiq = 00000000 [00000000]
[init -> tz_vmm] ttbr0 = 00000000
[init -> tz_vmm] ttbr1 = 00000000
[init -> tz_vmm] ttbrc = 00000000
[init -> tz_vmm] dfar = 07000000 [00000000]
[init -> tz_vmm] exception = data_abort
[init -> tz_vmm] Could not handle data-abort will exit!


```

Initially I thought I might be giving wrong load address while making
uImage, but it seems problem is not that. Can someone help me with what
might be possibly going wrong?

Thanks
Abhishek
Stefan Kalkowski
2017-05-31 12:57:33 UTC
Permalink
Hello,
Post by Abhishek Kumar
Hello
I am trying to run linux in normal world on genode trustzone. I have
changed the run-script of genode to copy the uImage generated from
skalk/linux's imx-53 branch instead of downloading (default). I am
make uImage LOADADDR=0x70010000
You are trying to relocate the Linux kernel within the memory portion
that is used by the secure world (Genode). The secure RAM is from
0x70000000 to 0x7fffffff. Please follow these instructions to build the
guest kernel on your own, like referenced within the tz_vmm run-script:

https://genode.org/files/release-15.11/usb_armory_tz_vmm/README

Regards
Stefan
Post by Abhishek Kumar
while executing, genode stops after starting virtual machine with
```
.
.
[init] child "tz_vmm"
[init] RAM quota: 10203136
[init] ELF binary: tz_vmm
[init] priority: 0
[init -> tz_vmm] Start virtual machine ...
[init -> tz_vmm] Register Virt Phys
[init -> tz_vmm] ---------------------------------
[init -> tz_vmm] r0 = 07000000 [00000000]
[init -> tz_vmm] r1 = f801ff50 [00000000]
[init -> tz_vmm] r2 = ffffffe4 [00000000]
[init -> tz_vmm] r3 = 40002000 [00000000]
[init -> tz_vmm] r4 = 00000000 [00000000]
[init -> tz_vmm] r5 = 00000000 [00000000]
[init -> tz_vmm] r6 = 000000ee [00000000]
[init -> tz_vmm] r7 = 00000000 [00000000]
[init -> tz_vmm] r8 = 00000000 [00000000]
[init -> tz_vmm] r9 = 00000000 [00000000]
[init -> tz_vmm] r10 = 00000000 [00000000]
[init -> tz_vmm] r11 = 00000000 [00000000]
[init -> tz_vmm] r12 = 00000000 [00000000]
[init -> tz_vmm] sp = 00000000 [00000000]
[init -> tz_vmm] lr = 00000000 [00000000]
[init -> tz_vmm] ip = 0040dfe8 [00000000]
[init -> tz_vmm] cpsr = 60000093
[init -> tz_vmm] sp_und = 00000000 [00000000]
[init -> tz_vmm] lr_und = 8000800c [00000000]
[init -> tz_vmm] spsr_und = 00000093 [00000000]
[init -> tz_vmm] sp_svc = f801ff4c [00000000]
[init -> tz_vmm] lr_svc = 0040bc97 [00000000]
[init -> tz_vmm] spsr_svc = 00000000 [00000000]
[init -> tz_vmm] sp_abt = 00000000 [00000000]
[init -> tz_vmm] lr_abt = 00000000 [00000000]
[init -> tz_vmm] spsr_abt = 00000000 [00000000]
[init -> tz_vmm] sp_irq = 00000000 [00000000]
[init -> tz_vmm] lr_irq = 00000000 [00000000]
[init -> tz_vmm] spsr_irq = 00000000 [00000000]
[init -> tz_vmm] sp_fiq = 00000000 [00000000]
[init -> tz_vmm] lr_fiq = 00000000 [00000000]
[init -> tz_vmm] spsr_fiq = 00000000 [00000000]
[init -> tz_vmm] ttbr0 = 00000000
[init -> tz_vmm] ttbr1 = 00000000
[init -> tz_vmm] ttbrc = 00000000
[init -> tz_vmm] dfar = 07000000 [00000000]
[init -> tz_vmm] exception = data_abort
[init -> tz_vmm] Could not handle data-abort will exit!
```
Initially I thought I might be giving wrong load address while making
uImage, but it seems problem is not that. Can someone help me with what
might be possibly going wrong?
Thanks
Abhishek
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Abhishek Kumar
2017-05-31 14:39:38 UTC
Permalink
Hello Stefan
Thanks for your reply. I tried at 80008000 address as well.
linux: u-boot legacy uImage, Linux-2.6.35.3-01384-g9533414-di, Linux/ARM,
OS Kernel Image (Not compressed), 2933872 bytes, Wed May 31 15:52:08 2017,
Load Address: 0x80008000, Entry Point: 0x80008000, Header CRC: 0x83CD7B97,
Data CRC: 0x914C7C24
I tried to print from `start` function in
"os/src/server/tz_vmm/include/vm_base.h"
file.

void start()
{
Genode::memset((void*)_state, 0,
sizeof(Genode::Vm_state));
_load_kernel();
_load_kernel_surroundings();
_state->cpsr = 0x93; /* SVC mode and IRQs disabled
*/
_state->r0 = 0;
_state->r1 = _mach_type;
_state->r2 = _ram.base() + _board_info_offset();
}
_load_kernel() and other statements are working perfectly fine, I tried
printing after each line using PINF. I think that means kernel is loading
fine, though I'm not sure. What might be going wrong here?

Thanks
Abhishek

On Wed, May 31, 2017 at 2:57 PM, Stefan Kalkowski <
Hello,
Post by Abhishek Kumar
Hello
I am trying to run linux in normal world on genode trustzone. I have
changed the run-script of genode to copy the uImage generated from
skalk/linux's imx-53 branch instead of downloading (default). I am
make uImage LOADADDR=0x70010000
You are trying to relocate the Linux kernel within the memory portion
that is used by the secure world (Genode). The secure RAM is from
0x70000000 to 0x7fffffff. Please follow these instructions to build the
https://genode.org/files/release-15.11/usb_armory_tz_vmm/README
Regards
Stefan
Post by Abhishek Kumar
while executing, genode stops after starting virtual machine with
```
.
.
[init] child "tz_vmm"
[init] RAM quota: 10203136
[init] ELF binary: tz_vmm
[init] priority: 0
[init -> tz_vmm] Start virtual machine ...
[init -> tz_vmm] Register Virt Phys
[init -> tz_vmm] ---------------------------------
[init -> tz_vmm] r0 = 07000000 [00000000]
[init -> tz_vmm] r1 = f801ff50 [00000000]
[init -> tz_vmm] r2 = ffffffe4 [00000000]
[init -> tz_vmm] r3 = 40002000 [00000000]
[init -> tz_vmm] r4 = 00000000 [00000000]
[init -> tz_vmm] r5 = 00000000 [00000000]
[init -> tz_vmm] r6 = 000000ee [00000000]
[init -> tz_vmm] r7 = 00000000 [00000000]
[init -> tz_vmm] r8 = 00000000 [00000000]
[init -> tz_vmm] r9 = 00000000 [00000000]
[init -> tz_vmm] r10 = 00000000 [00000000]
[init -> tz_vmm] r11 = 00000000 [00000000]
[init -> tz_vmm] r12 = 00000000 [00000000]
[init -> tz_vmm] sp = 00000000 [00000000]
[init -> tz_vmm] lr = 00000000 [00000000]
[init -> tz_vmm] ip = 0040dfe8 [00000000]
[init -> tz_vmm] cpsr = 60000093
[init -> tz_vmm] sp_und = 00000000 [00000000]
[init -> tz_vmm] lr_und = 8000800c [00000000]
[init -> tz_vmm] spsr_und = 00000093 [00000000]
[init -> tz_vmm] sp_svc = f801ff4c [00000000]
[init -> tz_vmm] lr_svc = 0040bc97 [00000000]
[init -> tz_vmm] spsr_svc = 00000000 [00000000]
[init -> tz_vmm] sp_abt = 00000000 [00000000]
[init -> tz_vmm] lr_abt = 00000000 [00000000]
[init -> tz_vmm] spsr_abt = 00000000 [00000000]
[init -> tz_vmm] sp_irq = 00000000 [00000000]
[init -> tz_vmm] lr_irq = 00000000 [00000000]
[init -> tz_vmm] spsr_irq = 00000000 [00000000]
[init -> tz_vmm] sp_fiq = 00000000 [00000000]
[init -> tz_vmm] lr_fiq = 00000000 [00000000]
[init -> tz_vmm] spsr_fiq = 00000000 [00000000]
[init -> tz_vmm] ttbr0 = 00000000
[init -> tz_vmm] ttbr1 = 00000000
[init -> tz_vmm] ttbrc = 00000000
[init -> tz_vmm] dfar = 07000000 [00000000]
[init -> tz_vmm] exception = data_abort
[init -> tz_vmm] Could not handle data-abort will exit!
```
Initially I thought I might be giving wrong load address while making
uImage, but it seems problem is not that. Can someone help me with what
might be possibly going wrong?
Thanks
Abhishek
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Stefan Kalkowski
2017-06-01 06:46:13 UTC
Permalink
Hi,

the tz_vmm component does not expect an uImage to be loaded, but the
pure kernel binary instead. Within the Linux build tree for instance the
path: "arch/arm/boot/compressed/vmlinux". I wonder, whether you got the
very same exception state when not trying to execute on secure world RAM?

Regards
Stefan
Post by Abhishek Kumar
Hello Stefan
Thanks for your reply. I tried at 80008000 address as well.
linux: u-boot legacy uImage, Linux-2.6.35.3-01384-g9533414-di,
Linux/ARM, OS Kernel Image (Not compressed), 2933872 bytes, Wed May
31 15:52:08 2017, Load Address: 0x80008000, Entry Point: 0x80008000,
Header CRC: 0x83CD7B97, Data CRC: 0x914C7C24
I tried to print from `start` function in
"os/src/server/tz_vmm/include/vm_base.h" file.
void start()
{
Genode::memset((void*)_state, 0,
sizeof(Genode::Vm_state));
_load_kernel();
_load_kernel_surroundings();
_state->cpsr = 0x93; /* SVC mode and IRQs
disabled */
_state->r0 = 0;
_state->r1 = _mach_type;
_state->r2 = _ram.base() +
_board_info_offset();
}
_load_kernel() and other statements are working perfectly fine, I tried
printing after each line using PINF. I think that means kernel is
loading fine, though I'm not sure. What might be going wrong here?
Thanks
Abhishek
On Wed, May 31, 2017 at 2:57 PM, Stefan Kalkowski
Hello,
Post by Abhishek Kumar
Hello
I am trying to run linux in normal world on genode trustzone. I have
changed the run-script of genode to copy the uImage generated from
skalk/linux's imx-53 branch instead of downloading (default). I am
make uImage LOADADDR=0x70010000
You are trying to relocate the Linux kernel within the memory portion
that is used by the secure world (Genode). The secure RAM is from
0x70000000 to 0x7fffffff. Please follow these instructions to build the
https://genode.org/files/release-15.11/usb_armory_tz_vmm/README
<https://genode.org/files/release-15.11/usb_armory_tz_vmm/README>
Regards
Stefan
Post by Abhishek Kumar
while executing, genode stops after starting virtual machine with
```
.
.
[init] child "tz_vmm"
[init] RAM quota: 10203136
[init] ELF binary: tz_vmm
[init] priority: 0
[init -> tz_vmm] Start virtual machine ...
[init -> tz_vmm] Register Virt Phys
[init -> tz_vmm] ---------------------------------
[init -> tz_vmm] r0 = 07000000 [00000000]
[init -> tz_vmm] r1 = f801ff50 [00000000]
[init -> tz_vmm] r2 = ffffffe4 [00000000]
[init -> tz_vmm] r3 = 40002000 [00000000]
[init -> tz_vmm] r4 = 00000000 [00000000]
[init -> tz_vmm] r5 = 00000000 [00000000]
[init -> tz_vmm] r6 = 000000ee [00000000]
[init -> tz_vmm] r7 = 00000000 [00000000]
[init -> tz_vmm] r8 = 00000000 [00000000]
[init -> tz_vmm] r9 = 00000000 [00000000]
[init -> tz_vmm] r10 = 00000000 [00000000]
[init -> tz_vmm] r11 = 00000000 [00000000]
[init -> tz_vmm] r12 = 00000000 [00000000]
[init -> tz_vmm] sp = 00000000 [00000000]
[init -> tz_vmm] lr = 00000000 [00000000]
[init -> tz_vmm] ip = 0040dfe8 [00000000]
[init -> tz_vmm] cpsr = 60000093
[init -> tz_vmm] sp_und = 00000000 [00000000]
[init -> tz_vmm] lr_und = 8000800c [00000000]
[init -> tz_vmm] spsr_und = 00000093 [00000000]
[init -> tz_vmm] sp_svc = f801ff4c [00000000]
[init -> tz_vmm] lr_svc = 0040bc97 [00000000]
[init -> tz_vmm] spsr_svc = 00000000 [00000000]
[init -> tz_vmm] sp_abt = 00000000 [00000000]
[init -> tz_vmm] lr_abt = 00000000 [00000000]
[init -> tz_vmm] spsr_abt = 00000000 [00000000]
[init -> tz_vmm] sp_irq = 00000000 [00000000]
[init -> tz_vmm] lr_irq = 00000000 [00000000]
[init -> tz_vmm] spsr_irq = 00000000 [00000000]
[init -> tz_vmm] sp_fiq = 00000000 [00000000]
[init -> tz_vmm] lr_fiq = 00000000 [00000000]
[init -> tz_vmm] spsr_fiq = 00000000 [00000000]
[init -> tz_vmm] ttbr0 = 00000000
[init -> tz_vmm] ttbr1 = 00000000
[init -> tz_vmm] ttbrc = 00000000
[init -> tz_vmm] dfar = 07000000 [00000000]
[init -> tz_vmm] exception = data_abort
[init -> tz_vmm] Could not handle data-abort will exit!
```
Initially I thought I might be giving wrong load address while making
uImage, but it seems problem is not that. Can someone help me with
what
Post by Abhishek Kumar
might be possibly going wrong?
Thanks
Abhishek
------------------------------------------------------------------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs

https://github.com/skalk · http://genode.org/
Abhishek Kumar
2017-06-01 09:58:13 UTC
Permalink
Hello Stefan
Thanks for your help. Linux is loading now but it shows i2c error and then
dumps the same exception state as shown above `Data Abort`.

```
da9052_ssc_i2c 0-0048: 2 - da9052_i2c_read:master_xfer Failed!!
da9052_i2c_is_connected - i2c read failed.....

```

Though the linux.bin which tz_vmm script tries to download, loads fine. It
also shows above error but continues to load instead of crashing. I need
the source code of whatever binary I am running. Can you help me with
source code of the executable which is available here `
http://genode.org/files/images/imx53_qsb/linux_trustzone.bin`.

Thanks
Abhishek


On Thu, Jun 1, 2017 at 8:46 AM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi,
the tz_vmm component does not expect an uImage to be loaded, but the
pure kernel binary instead. Within the Linux build tree for instance the
path: "arch/arm/boot/compressed/vmlinux". I wonder, whether you got the
very same exception state when not trying to execute on secure world RAM?
Regards
Stefan
Post by Abhishek Kumar
Hello Stefan
Thanks for your reply. I tried at 80008000 address as well.
linux: u-boot legacy uImage, Linux-2.6.35.3-01384-g9533414-di,
Linux/ARM, OS Kernel Image (Not compressed), 2933872 bytes, Wed May
31 15:52:08 2017, Load Address: 0x80008000, Entry Point: 0x80008000,
Header CRC: 0x83CD7B97, Data CRC: 0x914C7C24
I tried to print from `start` function in
"os/src/server/tz_vmm/include/vm_base.h" file.
void start()
{
Genode::memset((void*)_state, 0,
sizeof(Genode::Vm_state));
_load_kernel();
_load_kernel_surroundings();
_state->cpsr = 0x93; /* SVC mode and IRQs
disabled */
_state->r0 = 0;
_state->r1 = _mach_type;
_state->r2 = _ram.base() +
_board_info_offset();
}
_load_kernel() and other statements are working perfectly fine, I tried
printing after each line using PINF. I think that means kernel is
loading fine, though I'm not sure. What might be going wrong here?
Thanks
Abhishek
On Wed, May 31, 2017 at 2:57 PM, Stefan Kalkowski
Hello,
Post by Abhishek Kumar
Hello
I am trying to run linux in normal world on genode trustzone. I
have
Post by Abhishek Kumar
Post by Abhishek Kumar
changed the run-script of genode to copy the uImage generated from
skalk/linux's imx-53 branch instead of downloading (default). I am
make uImage LOADADDR=0x70010000
You are trying to relocate the Linux kernel within the memory portion
that is used by the secure world (Genode). The secure RAM is from
0x70000000 to 0x7fffffff. Please follow these instructions to build
the
Post by Abhishek Kumar
guest kernel on your own, like referenced within the tz_vmm
https://genode.org/files/release-15.11/usb_armory_tz_vmm/README
<https://genode.org/files/release-15.11/usb_armory_tz_vmm/README>
Regards
Stefan
Post by Abhishek Kumar
while executing, genode stops after starting virtual machine with
```
.
.
[init] child "tz_vmm"
[init] RAM quota: 10203136
[init] ELF binary: tz_vmm
[init] priority: 0
[init -> tz_vmm] Start virtual machine ...
[init -> tz_vmm] Register Virt Phys
[init -> tz_vmm] ---------------------------------
[init -> tz_vmm] r0 = 07000000 [00000000]
[init -> tz_vmm] r1 = f801ff50 [00000000]
[init -> tz_vmm] r2 = ffffffe4 [00000000]
[init -> tz_vmm] r3 = 40002000 [00000000]
[init -> tz_vmm] r4 = 00000000 [00000000]
[init -> tz_vmm] r5 = 00000000 [00000000]
[init -> tz_vmm] r6 = 000000ee [00000000]
[init -> tz_vmm] r7 = 00000000 [00000000]
[init -> tz_vmm] r8 = 00000000 [00000000]
[init -> tz_vmm] r9 = 00000000 [00000000]
[init -> tz_vmm] r10 = 00000000 [00000000]
[init -> tz_vmm] r11 = 00000000 [00000000]
[init -> tz_vmm] r12 = 00000000 [00000000]
[init -> tz_vmm] sp = 00000000 [00000000]
[init -> tz_vmm] lr = 00000000 [00000000]
[init -> tz_vmm] ip = 0040dfe8 [00000000]
[init -> tz_vmm] cpsr = 60000093
[init -> tz_vmm] sp_und = 00000000 [00000000]
[init -> tz_vmm] lr_und = 8000800c [00000000]
[init -> tz_vmm] spsr_und = 00000093 [00000000]
[init -> tz_vmm] sp_svc = f801ff4c [00000000]
[init -> tz_vmm] lr_svc = 0040bc97 [00000000]
[init -> tz_vmm] spsr_svc = 00000000 [00000000]
[init -> tz_vmm] sp_abt = 00000000 [00000000]
[init -> tz_vmm] lr_abt = 00000000 [00000000]
[init -> tz_vmm] spsr_abt = 00000000 [00000000]
[init -> tz_vmm] sp_irq = 00000000 [00000000]
[init -> tz_vmm] lr_irq = 00000000 [00000000]
[init -> tz_vmm] spsr_irq = 00000000 [00000000]
[init -> tz_vmm] sp_fiq = 00000000 [00000000]
[init -> tz_vmm] lr_fiq = 00000000 [00000000]
[init -> tz_vmm] spsr_fiq = 00000000 [00000000]
[init -> tz_vmm] ttbr0 = 00000000
[init -> tz_vmm] ttbr1 = 00000000
[init -> tz_vmm] ttbrc = 00000000
[init -> tz_vmm] dfar = 07000000 [00000000]
[init -> tz_vmm] exception = data_abort
[init -> tz_vmm] Could not handle data-abort will exit!
```
Initially I thought I might be giving wrong load address while
making
Post by Abhishek Kumar
Post by Abhishek Kumar
uImage, but it seems problem is not that. Can someone help me with
what
Post by Abhishek Kumar
might be possibly going wrong?
Thanks
Abhishek
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
r***@mpi-sws.org
2017-06-02 12:15:48 UTC
Permalink
Hi Stefan,
We looked at the USB armory Linux:
https://github.com/m-stein/linux/tree/genode_hw_usb_armory_tz_vmm,
which has very clean interfaces to talk to the genode trustzone code,
example the following files to do serial and block device operations using
SMC hypercalls.
(1) include/genode_tz_vmm_defs.h: SMC variables and arguments #defined
(2) include/genode_tz_vmm.h: SMC function declarations
(3) kernel/genode_tz_vmm.c: SMC function definitions
(4) drivers/tty/serial/genode.c: calls SMC function to use UART via genode
in secure world
(5) drivers/block/genode.c: calls SMC function to use block device via
genode in secure world

Can you please let us know is there is a similar linux source repo for
IMX53 qsb, from which this binary was built:
http://genode.org/files/images/imx53_qsb/linux_trustzone.bin? This linux
binary works great, while the binary using
https://github.com/skalk/linux/tree/imx53-tz crashes with an external data
abort.

Thanks for your time.

Riju
Post by Abhishek Kumar
Hello Stefan
Thanks for your help. Linux is loading now but it shows i2c error and then
dumps the same exception state as shown above `Data Abort`.
```
da9052_ssc_i2c 0-0048: 2 - da9052_i2c_read:master_xfer Failed!!
da9052_i2c_is_connected - i2c read failed.....
```
Though the linux.bin which tz_vmm script tries to download, loads fine. It
also shows above error but continues to load instead of crashing. I need
the source code of whatever binary I am running. Can you help me with
source code of the executable which is available here `
http://genode.org/files/images/imx53_qsb/linux_trustzone.bin`.
Thanks
Abhishek
On Thu, Jun 1, 2017 at 8:46 AM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi,
the tz_vmm component does not expect an uImage to be loaded, but the
pure kernel binary instead. Within the Linux build tree for instance the
path: "arch/arm/boot/compressed/vmlinux". I wonder, whether you got the
very same exception state when not trying to execute on secure world RAM?
Regards
Stefan
Post by Abhishek Kumar
Hello Stefan
Thanks for your reply. I tried at 80008000 address as well.
linux: u-boot legacy uImage, Linux-2.6.35.3-01384-g9533414-di,
Linux/ARM, OS Kernel Image (Not compressed), 2933872 bytes, Wed
May
0x80008000,
Post by Abhishek Kumar
Header CRC: 0x83CD7B97, Data CRC: 0x914C7C24
I tried to print from `start` function in
"os/src/server/tz_vmm/include/vm_base.h" file.
void start()
{
Genode::memset((void*)_state, 0,
sizeof(Genode::Vm_state));
_load_kernel();
_load_kernel_surroundings();
_state->cpsr = 0x93; /* SVC mode and IRQs
disabled */
_state->r0 = 0;
_state->r1 = _mach_type;
_state->r2 = _ram.base() +
_board_info_offset();
}
_load_kernel() and other statements are working perfectly fine, I
tried
Post by Abhishek Kumar
printing after each line using PINF. I think that means kernel is
loading fine, though I'm not sure. What might be going wrong here?
Thanks
Abhishek
On Wed, May 31, 2017 at 2:57 PM, Stefan Kalkowski
Hello,
Post by Abhishek Kumar
Hello
I am trying to run linux in normal world on genode trustzone. I
have
Post by Abhishek Kumar
Post by Abhishek Kumar
changed the run-script of genode to copy the uImage generated
from
Post by Abhishek Kumar
Post by Abhishek Kumar
skalk/linux's imx-53 branch instead of downloading (default). I
am
Post by Abhishek Kumar
Post by Abhishek Kumar
make uImage LOADADDR=0x70010000
You are trying to relocate the Linux kernel within the memory
portion
Post by Abhishek Kumar
that is used by the secure world (Genode). The secure RAM is from
0x70000000 to 0x7fffffff. Please follow these instructions to
build
the
Post by Abhishek Kumar
guest kernel on your own, like referenced within the tz_vmm
https://genode.org/files/release-15.11/usb_armory_tz_vmm/README
<https://genode.org/files/release-15.11/usb_armory_tz_vmm/README>
Regards
Stefan
Post by Abhishek Kumar
while executing, genode stops after starting virtual machine
with
Post by Abhishek Kumar
Post by Abhishek Kumar
```
.
.
[init] child "tz_vmm"
[init] RAM quota: 10203136
[init] ELF binary: tz_vmm
[init] priority: 0
[init -> tz_vmm] Start virtual machine ...
[init -> tz_vmm] Register Virt Phys
[init -> tz_vmm] ---------------------------------
[init -> tz_vmm] r0 = 07000000 [00000000]
[init -> tz_vmm] r1 = f801ff50 [00000000]
[init -> tz_vmm] r2 = ffffffe4 [00000000]
[init -> tz_vmm] r3 = 40002000 [00000000]
[init -> tz_vmm] r4 = 00000000 [00000000]
[init -> tz_vmm] r5 = 00000000 [00000000]
[init -> tz_vmm] r6 = 000000ee [00000000]
[init -> tz_vmm] r7 = 00000000 [00000000]
[init -> tz_vmm] r8 = 00000000 [00000000]
[init -> tz_vmm] r9 = 00000000 [00000000]
[init -> tz_vmm] r10 = 00000000 [00000000]
[init -> tz_vmm] r11 = 00000000 [00000000]
[init -> tz_vmm] r12 = 00000000 [00000000]
[init -> tz_vmm] sp = 00000000 [00000000]
[init -> tz_vmm] lr = 00000000 [00000000]
[init -> tz_vmm] ip = 0040dfe8 [00000000]
[init -> tz_vmm] cpsr = 60000093
[init -> tz_vmm] sp_und = 00000000 [00000000]
[init -> tz_vmm] lr_und = 8000800c [00000000]
[init -> tz_vmm] spsr_und = 00000093 [00000000]
[init -> tz_vmm] sp_svc = f801ff4c [00000000]
[init -> tz_vmm] lr_svc = 0040bc97 [00000000]
[init -> tz_vmm] spsr_svc = 00000000 [00000000]
[init -> tz_vmm] sp_abt = 00000000 [00000000]
[init -> tz_vmm] lr_abt = 00000000 [00000000]
[init -> tz_vmm] spsr_abt = 00000000 [00000000]
[init -> tz_vmm] sp_irq = 00000000 [00000000]
[init -> tz_vmm] lr_irq = 00000000 [00000000]
[init -> tz_vmm] spsr_irq = 00000000 [00000000]
[init -> tz_vmm] sp_fiq = 00000000 [00000000]
[init -> tz_vmm] lr_fiq = 00000000 [00000000]
[init -> tz_vmm] spsr_fiq = 00000000 [00000000]
[init -> tz_vmm] ttbr0 = 00000000
[init -> tz_vmm] ttbr1 = 00000000
[init -> tz_vmm] ttbrc = 00000000
[init -> tz_vmm] dfar = 07000000 [00000000]
[init -> tz_vmm] exception = data_abort
[init -> tz_vmm] Could not handle data-abort will exit!
```
Initially I thought I might be giving wrong load address while
making
Post by Abhishek Kumar
Post by Abhishek Kumar
uImage, but it seems problem is not that. Can someone help me
with
Post by Abhishek Kumar
what
Post by Abhishek Kumar
might be possibly going wrong?
Thanks
Abhishek
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org!
http://sdm.link/slashdot_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
r***@mpi-sws.org
2017-06-06 13:31:37 UTC
Permalink
Hi Stefan,
The skalk linux worked on the IMX53 qsb normal world, when we compiled it
with the imx5_android_tz_defconfig config file. Earlier, we were trying
with imx_v6_v7_defconfig config.

Thanks!
Riju
Post by r***@mpi-sws.org
Hi Stefan,
https://github.com/m-stein/linux/tree/genode_hw_usb_armory_tz_vmm,
which has very clean interfaces to talk to the genode trustzone code,
example the following files to do serial and block device operations using
SMC hypercalls.
(1) include/genode_tz_vmm_defs.h: SMC variables and arguments #defined
(2) include/genode_tz_vmm.h: SMC function declarations
(3) kernel/genode_tz_vmm.c: SMC function definitions
(4) drivers/tty/serial/genode.c: calls SMC function to use UART via genode
in secure world
(5) drivers/block/genode.c: calls SMC function to use block device via
genode in secure world
Can you please let us know is there is a similar linux source repo for
http://genode.org/files/images/imx53_qsb/linux_trustzone.bin? This linux
binary works great, while the binary using
https://github.com/skalk/linux/tree/imx53-tz crashes with an external data
abort.
Thanks for your time.
Riju
Post by Abhishek Kumar
Hello Stefan
Thanks for your help. Linux is loading now but it shows i2c error and then
dumps the same exception state as shown above `Data Abort`.
```
da9052_ssc_i2c 0-0048: 2 - da9052_i2c_read:master_xfer Failed!!
da9052_i2c_is_connected - i2c read failed.....
```
Though the linux.bin which tz_vmm script tries to download, loads fine. It
also shows above error but continues to load instead of crashing. I need
the source code of whatever binary I am running. Can you help me with
source code of the executable which is available here `
http://genode.org/files/images/imx53_qsb/linux_trustzone.bin`.
Thanks
Abhishek
On Thu, Jun 1, 2017 at 8:46 AM, Stefan Kalkowski <
Post by Stefan Kalkowski
Hi,
the tz_vmm component does not expect an uImage to be loaded, but the
pure kernel binary instead. Within the Linux build tree for instance the
path: "arch/arm/boot/compressed/vmlinux". I wonder, whether you got the
very same exception state when not trying to execute on secure world RAM?
Regards
Stefan
Post by Abhishek Kumar
Hello Stefan
Thanks for your reply. I tried at 80008000 address as well.
linux: u-boot legacy uImage, Linux-2.6.35.3-01384-g9533414-di,
Linux/ARM, OS Kernel Image (Not compressed), 2933872 bytes, Wed
May
0x80008000,
Post by Abhishek Kumar
Header CRC: 0x83CD7B97, Data CRC: 0x914C7C24
I tried to print from `start` function in
"os/src/server/tz_vmm/include/vm_base.h" file.
void start()
{
Genode::memset((void*)_state, 0,
sizeof(Genode::Vm_state));
_load_kernel();
_load_kernel_surroundings();
_state->cpsr = 0x93; /* SVC mode and IRQs
disabled */
_state->r0 = 0;
_state->r1 = _mach_type;
_state->r2 = _ram.base() +
_board_info_offset();
}
_load_kernel() and other statements are working perfectly fine, I
tried
Post by Abhishek Kumar
printing after each line using PINF. I think that means kernel is
loading fine, though I'm not sure. What might be going wrong here?
Thanks
Abhishek
On Wed, May 31, 2017 at 2:57 PM, Stefan Kalkowski
Hello,
Post by Abhishek Kumar
Hello
I am trying to run linux in normal world on genode trustzone. I
have
Post by Abhishek Kumar
Post by Abhishek Kumar
changed the run-script of genode to copy the uImage generated
from
Post by Abhishek Kumar
Post by Abhishek Kumar
skalk/linux's imx-53 branch instead of downloading (default). I
am
Post by Abhishek Kumar
Post by Abhishek Kumar
make uImage LOADADDR=0x70010000
You are trying to relocate the Linux kernel within the memory
portion
Post by Abhishek Kumar
that is used by the secure world (Genode). The secure RAM is from
0x70000000 to 0x7fffffff. Please follow these instructions to
build
the
Post by Abhishek Kumar
guest kernel on your own, like referenced within the tz_vmm
https://genode.org/files/release-15.11/usb_armory_tz_vmm/README
<https://genode.org/files/release-15.11/usb_armory_tz_vmm/README>
Regards
Stefan
Post by Abhishek Kumar
while executing, genode stops after starting virtual machine
with
Post by Abhishek Kumar
Post by Abhishek Kumar
```
.
.
[init] child "tz_vmm"
[init] RAM quota: 10203136
[init] ELF binary: tz_vmm
[init] priority: 0
[init -> tz_vmm] Start virtual machine ...
[init -> tz_vmm] Register Virt Phys
[init -> tz_vmm] ---------------------------------
[init -> tz_vmm] r0 = 07000000 [00000000]
[init -> tz_vmm] r1 = f801ff50 [00000000]
[init -> tz_vmm] r2 = ffffffe4 [00000000]
[init -> tz_vmm] r3 = 40002000 [00000000]
[init -> tz_vmm] r4 = 00000000 [00000000]
[init -> tz_vmm] r5 = 00000000 [00000000]
[init -> tz_vmm] r6 = 000000ee [00000000]
[init -> tz_vmm] r7 = 00000000 [00000000]
[init -> tz_vmm] r8 = 00000000 [00000000]
[init -> tz_vmm] r9 = 00000000 [00000000]
[init -> tz_vmm] r10 = 00000000 [00000000]
[init -> tz_vmm] r11 = 00000000 [00000000]
[init -> tz_vmm] r12 = 00000000 [00000000]
[init -> tz_vmm] sp = 00000000 [00000000]
[init -> tz_vmm] lr = 00000000 [00000000]
[init -> tz_vmm] ip = 0040dfe8 [00000000]
[init -> tz_vmm] cpsr = 60000093
[init -> tz_vmm] sp_und = 00000000 [00000000]
[init -> tz_vmm] lr_und = 8000800c [00000000]
[init -> tz_vmm] spsr_und = 00000093 [00000000]
[init -> tz_vmm] sp_svc = f801ff4c [00000000]
[init -> tz_vmm] lr_svc = 0040bc97 [00000000]
[init -> tz_vmm] spsr_svc = 00000000 [00000000]
[init -> tz_vmm] sp_abt = 00000000 [00000000]
[init -> tz_vmm] lr_abt = 00000000 [00000000]
[init -> tz_vmm] spsr_abt = 00000000 [00000000]
[init -> tz_vmm] sp_irq = 00000000 [00000000]
[init -> tz_vmm] lr_irq = 00000000 [00000000]
[init -> tz_vmm] spsr_irq = 00000000 [00000000]
[init -> tz_vmm] sp_fiq = 00000000 [00000000]
[init -> tz_vmm] lr_fiq = 00000000 [00000000]
[init -> tz_vmm] spsr_fiq = 00000000 [00000000]
[init -> tz_vmm] ttbr0 = 00000000
[init -> tz_vmm] ttbr1 = 00000000
[init -> tz_vmm] ttbrc = 00000000
[init -> tz_vmm] dfar = 07000000 [00000000]
[init -> tz_vmm] exception = data_abort
[init -> tz_vmm] Could not handle data-abort will exit!
```
Initially I thought I might be giving wrong load address while
making
Post by Abhishek Kumar
Post by Abhishek Kumar
uImage, but it seems problem is not that. Can someone help me
with
Post by Abhishek Kumar
what
Post by Abhishek Kumar
might be possibly going wrong?
Thanks
Abhishek
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
<https://lists.sourceforge.net/lists/listinfo/genode-main>
------------------------------------------------------------
------------------
Post by Abhishek Kumar
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
--
Stefan Kalkowski
Genode Labs
https://github.com/skalk · http://genode.org/
------------------------------------------------------------
------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org!
http://sdm.link/slashdot_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
genode-main mailing list
https://lists.sourceforge.net/lists/listinfo/genode-main
Loading...