[U-Boot-Users] 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 :)

On Tue, Apr 22, 2008 at 09:12:11PM -0700, gforgcc wrote:
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 :(
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@0" #define OF_SOC "soc@f0000000" #define OF_TBCLK (bd->bi_busfreq / 4) #define OF_STDOUT_PATH "/soc@f0000000/serial@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 scottwood@freescale.com 04/23/2008 09:57 PM
To gforgcc narendra.ka@lntemsys.com cc u-boot-users@lists.sourceforge.net Subject Re: [U-Boot-Users] Kernel hanging after lmb_end_of_DRAM() function.
On Tue, Apr 22, 2008 at 09:12:11PM -0700, gforgcc wrote:
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 :(
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

On Thu, Apr 24, 2008 at 11:01:39AM +0530, Narendra KA wrote:
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) */
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.
#define OF_CPU "PowerPC,8248@0" #define OF_SOC "soc@f0000000" #define OF_TBCLK (bd->bi_busfreq / 4) #define OF_STDOUT_PATH "/soc@f0000000/serial@11a80"
These hardcoded things shouldn't be needed anymore.
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.
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
participants (3)
-
gforgcc
-
Narendra KA
-
Scott Wood