Hi, I am trying to boot SDK 1.6 kernel in my P1012 board. I have Linux source files provided by Yocto and I have set some variables on the kernel configuration file but the kernel hangs without showing any console output.
I have been using BDI3000 to debug and found out that the problem is that the kernel access a bad area. Kernel stops at arch/PowerPC/kernel/head_fsl_booke.S:
/* Data Storage Interrupt */
START_EXCEPTION(DataStorage)
NORMAL_EXCEPTION_PROLOG(DATA_STORAGE)
mfspr r5,SPRN_ESR /* Grab the ESR, save it, pass arg3 */
stw r5,_ESR(r11)
mfspr r4,SPRN_DEAR /* Grab the DEAR, save it, pass arg2 */
andis. r10,r5,(ESR_ILK|ESR_DLK)@h
bne 1f
EXC_XFER_LITE(0x0300, handle_page_fault) <--Kernel stops here
I have used the kernel image prebuilt in the SDK and it boots correctly so I guess my problem has nothing to do with my device tree or my uboot environment settings passed to the kernel. Has anybody faced a similar problem trying to boot the kernel?
Thanks in advance,
Maria
Hello Maria Saiz,
When first time accessing pages mapped addresses, the program will enter into data storage interrupt or instruction storage interrupt, and the interrupt handler creates a corresponding PTE entry, handle_page_fault will be invoked in arch/powerpc/kernel/head_fsl_booke.S.
handle_page_fault->do_page_fault->handle_mm_fault->handle_pte_fault
Would you please provide more information about what modification you have done with Kernel configuration file?
Have a great day,
Yiping
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
If they haven't gotten any console output yet it's too early to be taking that page fault path. If they're seeing this when they stop execution in the BDI, they're probably stuck in a recursive fault loop.
In addition to describing what is different about this kernel versus the one that works (these are both on the custom board, right?), please put a branch-to-self at the entry to DataStorage so that the original SRR0/SRR1 can be read using the BDI. Then, look up the address in SRR0.