Skip U-Boot and Jump to kernel from U-Boot SPL (Falcon Boot)

Target Board: DART iMX8M (A-53)

I am trying to falcon boot by jumping directly into the kernel from U-Boot SPL. I see following error

"Synchronous Abort" handler, esr 0x86000000 
ELR: ffff00000893017c 
LR: 40aa825c 
x0 : 0000000040400000 x1 : 0000000040e7a000 
x2 : 0000000040e7d000 x3 : 000000000000003f 
x4 : 0000000000000001 x5 : 00000000fcffffff 
x6 : 0000000034d5d91d x7 : 0000000000000711 
x8 : ffff00000893017c x9 : 0000000000000000 
x10: 00000032b5103510 x11: 0000000000000002 
x12: 00000000ffffffff x13: 00000000ffffffff 
x14: 000000000000006a x15: 0000000000000790 
x16: 00000000000000b7 x17: 0000000000000108 
x18: 0000000000185e40 x19: 0000000040480000 
x20: 0000000043000000 x21: 0000000000000000 
x22: 0000000000185df0 x23: 0000000000000000 
x24: 00000000007f2000 x25: 00000000007f2fa0 
x26: 00000000deadbeef x27: 0000000000000000 
x28: 0000000040d30018 x29: 0000000000185d70

Seems like control gets passed onto kernel. Kernel runs fine until it enables MMU and swicthes to virtual addresses. Once it jumps to VA, exception is raised which means MMU is not initialized properly.

I have tried using "armv8_switch_to_el2" instead of conventional function pointer call but it hangs. I have understood that U-Boot calls kernel in EL2 mode and U-Boot SPL is in EL3. Can I get help in changing the EL to EL2. Also, I am curious to know where in proper U-Boot is it switching to EL2 .


Bharat Kumar Bacha

No Data
Reply Children
No Data