[U-Boot] Help!Some memory doesn't work on PPC405Ex based board!

SunNeo sunwx2001 at hotmail.com
Thu Apr 23 07:00:13 CEST 2009



I got a new board with 1GB DDRII memory and only 1 Rank, but the problem still exist. 

 

The following is a summary of my job:

1. My board combines 4 Hynix H5PS2G83AFR (256MB * 8bits) to make a 1GB memory, use only one 1 rank, no ECC. 
2. My board is similar to AMCC Kilauea EVB. For U-Boot-2009.01, I created my configuration file from Kilauea's, and remove Nand flash, FPGA related configuration.
3. For DDR SDRAM controller, I use same configuration as Kilauea's, memory size (MB0CF) excepted. Have enabled auto-calibration.
4. Have performed memory test with "mtest" command at U-Boot, no error happened.
5. There is no PCI device on my board. U-Boot hangs when it perform PCI scan. So I remove all PCI related configuration from my configuration file at U-Boot.
6. I use "kilauea_defconfig" to compile Linux-2.6.25. Also, I disabled Nand Flash and PCI from "menuconfig".
7. To boot my Linux, I use Kilauea's dtb file directly. I have to keep PCIE node in this dtb file, because my Ethernet port will not work well without this PCIE node.
8. Use the 1GB memory to boot Linux, an error info "Kernel stack overflow in process ee8153e0, r1=ee82bfa0" is reported, and kernel hangs.
9. Add the parameter "mem=516M" to bootargs, Linux can boot up normally. But if add "mem=517M" to bootargs, Linux hangs.

 

The following is error info dumped during Linux Boot:

 

## Transferring control to Linux (at address 00000000) ...
   Booting using OF flat tree...
id mach(): done
MMU:enter
MMU:hw init
MMU:mapin
MMU:setio
MMU:exit
Using Kilauea machine description
Linux version 2.6.25-rc2-00492-g8adfc2c (root at localhost.localdomain) (gcc versio
n 4.2.2) #2 Wed Apr 22 14:15:31 CST 2009
Found initrd at 0xeedaa000:0xeffff8f3
Found legacy serial port 0 for /plb/opb/serial at ef600200
  mem=ef600200, taddr=ef600200, irq=0, clk=7407407, speed=0
Found legacy serial port 1 for /plb/opb/serial at ef600300
  mem=ef600300, taddr=ef600300, irq=0, clk=7407407, speed=0
console [udbg0] enabled
Entering add_active_range(0, 0, 196608) 0 entries of 256 used
setup_arch: bootmem
arch: exit
Top of RAM: 0x30000000, Total RAM: 0x30000000
Memory hole size: 0MB
Zone PFN ranges:
  DMA             0 ->   196608
  Normal     196608 ->   196608
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
    0:        0 ->   196608
On node 0 totalpages: 196608
  DMA zone: 1536 pages used for memmap
  DMA zone: 0 pages reserved
  DMA zone: 195072 pages, LIFO batch:31
  Normal zone: 0 pages used for memmap
  Movable zone: 0 pages used for memmap
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 195072
Kernel command line: ramdisk_size=65536 root=/dev/ram rw ip=10.204.29.214:10.204
.29.153:10.204.28.1:255.255.252.0:obs600:eth0:off panic=1 console=ttyS0,115200 n
oflashcfg=1
UIC0 (32 IRQ sources) at DCR 0xc0
UIC1 (32 IRQ sources) at DCR 0xd0
UIC2 (32 IRQ sources) at DCR 0xe0
PID hash table entries: 4096 (order: 12, 16384 bytes)
time_init: decrementer frequency = 600.000000 MHz
time_init: processor frequency   = 600.000000 MHz
clocksource: timebase mult[6aaaab] shift[22] registered
clockevent: decrementer mult[9999] shift[16] cpu[0]
Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
Memory: 757504k/786432k available (2804k kernel code, 28764k reserved, 108k data
, 88k bss, 132k init)
SLUB: Genslabs=10, HWalign=32, Order=0-1, MinObjects=4, CPUs=1, Nodes=1
Calibrating delay loop... 1196.03 BogoMIPS (lpj=2392064)
Mount-cache hash table entries: 512
Kernel stack overflow in process ee8153e0, r1=ee82bfa0
NIP: c02e0000 LR: ee82bfb0 CTR: ee8153e0
REGS: ee82bef0 TRAP: ee82bfb0   Not tainted  (2.6.25-rc2-00492-g8adfc2c)
MSR: fffffffb <EE,PR,FP,ME,IR,DR>  CR: 00029030  XER: c0016c3c
TASK = ee8153e0[2] 'kthreadd' THREAD: ee82a000
GPR00: 00000078 ee82bfa0 ee8153e0 00800711 ee82bf20 ffffffff ffffffff ffffffff
GPR08: c02e3b30 ee815408 c02e3b30 c02e3b00 ee82bf40 ffffffff c02e3b00 00000000
GPR16: ee8153e0 ee815408 c02e3b30 c02e3b00 ee82bf60 c0016398 3ffb0648 c02e2a7c
GPR24: 00000078 ee8153e0 c02e3b00 ee8153e0 ee82bf80 c0015260 3ffb0648 c02e2a7c
NIP [c02e0000] exception_stack_bottom+0x0/0x1000
LR [ee82bfb0] 0xee82bfb0
Call Trace:
[ee82bfa0] [ee8153e0] 0xee8153e0 (unreliable)
[ee82bfb0] [c0032d80] kthreadd+0x38/0x164
[ee82bff0] [c000d460] kernel_thread+0x44/0x60
Kernel panic - not syncing: kernel stack overflow
Rebooting in 1 seconds..<0>System Halted, OK to turn off power


Best Regards

Sun

 
> From: sr at denx.de
> To: sunwx2001 at hotmail.com
> Subject: Re: Help!Some memory doesn't work on PPC405Ex based board!
> Date: Wed, 15 Apr 2009 10:08:40 +0200
> CC: fkan at amcc.com; gerickson at nuovations.com; support at amcc.com; u-boot at lists.denx.de
> 
> Sun,
> 
> On Wednesday 15 April 2009, SunNeo wrote:
> > I tried to add auto-calibration related configuration to my configuation
> > file, but Linux still hangs at the same location. It seems error happened
> > when threads of Linux Kernel tried to access the high 512m memory.
> 
> I suggest you debug this further, either by adding some printk's or using a 
> debugger to see where exactly the crash happens.
> 
> > Just like the Kilauea evb, there is no ECC on my board, and I use the same
> > regisger setting for DDR Controller as Kilauea. Maybe you know, Kilauea
> > uses the "MT47H64M16HR" DDRII SDRAM and only one rank. My board uses the
> > "MT47H256M8THN" and two ranks. So, I changed setting of MB0CF & MB1CF.
> 
> When using the 2nd rank you need to change the termination settings as well 
> (SDRAM0_MODT0, SDRAM_MODT1, SDRAM0_CODT). Using the original values from 
> Kilauea is definitely a problem which could lead to all kind of problems.
> 
> > I think I can confirm all 1024M memory can work well at U-Boot.
> 
> Again, you don't really know if the whole memory is working correctly just 
> because you are able to boot to the U-Boot prompt. Intensive memory tests 
> (with and without burst access) are necessary here.
> 
> > And if I 
> > add the parameter "mem=512M" to bootargs, and set "initrd_high" to
> > "20000000", Linux can boot normally.
> 
> Understood. I still think that this is a problem with incorrect SDRAM 
> configuration. Take a look at the termination registers mentioned above and 
> configure them correctly. 
> 
> Best regards,
> Stefan
> 
> =====================================================================
> DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
> =====================================================================

_________________________________________________________________
打工,挣钱,买房子,快来MClub一起”金屋藏娇”!
http://club.msn.cn/?from=10


More information about the U-Boot mailing list