Kernel hanging after lmb_end_of_DRAM() function.
Hi geeks,
i am trying to bring up the latest kernel on EP8248 target,
i am using U-boot-1.3.2 and linux-2.6.25-rc8, i started debugging using BDI2000 which helped me to know atleast what is going wrong, i have added some printk's in the kernel source but still i am not able to find where and what exactly is going wrong, The first statement it is printing in the log buffer is
""Using Embedded Planet EP8248E machine description"" and thats it the next message is
Unable to handle kernel paging request for data at address 0xbfff0000
Faulting instruction address:0xc0012070 (This nearest address to this address in System.map file is cacheable_memzero)
and tracing like this i came to know that in the file arch/powerpc/mm/ppc_mmu_32.c , here in the function __init MMU_init_hw() and in the line n_hpteg = total_memory / (PAGE_SIZE * 8); probably it is getting problem because when i tried to print the variable total_memory it is printing zero !!! :( :( so probably i am thinking it is not able to find some memory for Hash table :(
Please share your knowledge and skills and help me to resolve this issue.. thanks :)
Signature · 2 lines
View this message in context: http://www.nabble.com/Kernel-hanging-after-lmb_end_of_DRAM%28%29-function.-tp16830552p16830552.html Sent from the Uboot - Users mailing list archive at Nabble.com.
Quoted 9 lines · gforgcc
i am trying to bring up the latest kernel on EP8248 target,
i am using U-boot-1.3.2 and linux-2.6.25-rc8, i started debugging using BDI2000 which helped me to know atleast what is going wrong, i have added some printk's in the kernel source but still i am not able to find where and what exactly is going wrong, The first statement it is printing in the log buffer is
""Using Embedded Planet EP8248E machine description"" and thats it the next message isUnable to handle kernel paging request for data at address 0xbfff0000
Quoted 8 lines
Faulting instruction address:0xc0012070 (This nearest address to this address in System.map file is
cacheable_memzero)
and tracing like this i came to know that in the filearch/powerpc/mm/ppc_mmu_32.c, here in the function__initMMU_init_hw()and in the linen_hpteg=total_memory/ (PAGE_SIZE* 8); probably it is getting problem because when i tried to print the variabletotal_memoryit is printing zero !!! :( :( so probably i am thinking it is not able to find some memory for Hash table :(
Are you using a device-tree-aware u-boot with uImage, or are you using cuImage.pq2? Do not use dtbImage.ep8248e; that's for PlanetCore.
ep8248e in mainline u-boot doesn't appear to be device-tree aware.
If you're using cuImage.pq2, do you get any output from the bootwrapper? Make sure you add /chosen/linux,stdout-path. There may be other device tree changes you need to make it work with u-boot as well.
-Scott
Thanks for the reply scott, :)
i forgot to mention , yes i am using device tree aware u-boot but the problem is when i tried to build the u-boot source ( first i did ""make ep8248_config"" and then ""make"") it was giving undefined reference related to ft_board_setup() function so i altered the U-boot-1.3.2 source code... i added the below code to the following file board/ep8248/ep8248.c
#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) void ft_board_setup(void *blob, bd_t *bd)
{
ft_cpu_setup(blob, bd);
}#endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
and also added the below lines to the file include/configs/ep8248.h by looking into the corresponding .dts file in the kernel source....
/* pass open firmware flat tree */
#define CONFIG_OF_LIBFDT 1
#define CONFIG_OF_BOARD_SETUP 1
#define OF_CPU "PowerPC,8248 at 0"
#define OF_SOC "soc at f0000000"
#define OF_TBCLK (bd->bi_busfreq / 4)
#define OF_STDOUT_PATH "/soc at f0000000/serial at 11a80"
Now afte doing the above 2 alterations i was able to build the u-boot-1.3.2 source for ep8248e....
then i created the uImage with the latest kernel source linux-2.6.25-rc8 and put that uImage to the target...also i created the ep8248e.dtb from the dtc (DEVICE TREE COMPILER) and put that to the target and passed this as an argument to the bootm
I also cross checked in the U-boot environment for the fdt command ... it was present
this is what i have done till now
Finally when it hanged I started debugging using BDI2000...so it was stuck as i said in my previous post
and how to use cuImage.pq2 ? also i dint get what is dtbImage.ep8248e ? is that same to ep8248e.dtb ??
Can you Please tell me how can i proceed further to get the Kernel up on the ep8248e target ??
Regards,
Naren
Scott Wood <[email protected]>
04/23/2008 09:57 PM
To
gforgcc <[email protected]>
cc
u-boot-users at lists.sourceforge.net
Subject
Re: [U-Boot-Users] Kernel hanging after lmb_end_of_DRAM() function.
Quoted 3 lines · gforgcc
i am trying to bring up the latest kernel on EP8248 target, i am using U-boot-1.3.2 and linux-2.6.25-rc8, i started debugging using BDI2000 which helped me to know atleast what is going wrong, i have
added
Quoted 1 line
some printk's in the kernel source but still i am not able to find where
and
Quoted 1 line
what exactly is going wrong, The first statement it is printing in the
log
Quoted 2 lines
buffer is
""Using Embedded Planet EP8248E machine description"" and thats it the
next
Quoted 6 lines
message is
Unable to handle kernel paging request for data at address 0xbfff0000Faulting instruction address:0xc0012070 (This nearest address to this address in System.map file is
cacheable_memzero)
and tracing like this i came to know that in the filearch/powerpc/mm/ppc_mmu_32.c, here in the function__initMMU_init_hw()
and
Quoted 1 line
in the line
n_hpteg=total_memory/ (PAGE_SIZE* 8); probably it is
getting
Quoted 2 lines
problem because when i tried to print the variable
total_memoryit is printing zero !!! :( :( so probably i am thinking it is not able to
find
Quoted 1 line
some memory for Hash table :(
Are you using a device-tree-aware u-boot with uImage, or are you using cuImage.pq2? Do not use dtbImage.ep8248e; that's for PlanetCore.
ep8248e in mainline u-boot doesn't appear to be device-tree aware.
If you're using cuImage.pq2, do you get any output from the bootwrapper? Make sure you add /chosen/linux,stdout-path. There may be other device tree changes you need to make it work with u-boot as well.
-Scott
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20080424/e0e518f0/attachment.htm
Quoted 8 lines · Narendra KA
Thanks for the reply scott, :)
i forgot to mention , yes i am using device tree aware u-boot but the problem is when i tried to build the u-boot source ( first i did ""make
ep8248_config"" and then ""make"") it was giving undefined reference related toft_board_setup()function so i altered the U-boot-1.3.2 source code... i added the below code to the following fileboard/ep8248/ep8248.c
Quoted 6 lines
#if
defined(CONFIG_OF_LIBFDT)&&defined(CONFIG_OF_BOARD_SETUP)voidft_board_setup(void *blob, bd_t *bd){ ft_cpu_setup(blob, bd); }#endif /*
defined(CONFIG_OF_LIBFDT)&&defined(CONFIG_OF_BOARD_SETUP)*/
The 8260 ft_cpu_setup() seems a bit deficient -- most pertinently, it's not calling fdt_fixup_memory(), but it's also missing brg frequency setup and maybe some other things. Look at other_cpu_setup() functions (e.g. 8xx, 83xx, 85xx) for an example of what to do.
Quoted 4 lines
#define
OF_CPU"PowerPC,8248 at 0"
#defineOF_SOC"soc atf0000000"
#defineOF_TBCLK(bd->bi_busfreq/ 4)
#defineOF_STDOUT_PATH"/soc at f0000000/serial at 11a80"
These hardcoded things shouldn't be needed anymore.
Quoted 1 line
and how to use cuImage.pq2 ?
You'd need to change the makefile to tell it to build that target for this board. I recommend fixing u-boot, though, if you're already inclined to go down that path.
Quoted 2 lines
also i dint get what is dtbImage.ep8248e ? is
that same to ep8248e.dtb ??
No, that's an image for the PlanetCore bootloader. If you don't have it, you probably built with 'make uImage' rather than 'make zImage'.
-Scott