[U-Boot] Hanging in kmalloc of nand_scan_tail() function

Scott Wood scottwood at freescale.com
Fri Sep 18 19:52:08 CEST 2009


On Fri, Sep 18, 2009 at 01:17:48PM +0900, J.Hwan.Kim wrote:
> Hi, everyone
> 
> I'm using U-boot 2009-03.
> U-boot hangs in nand_init() function.
> I found the routine kmalloc in nand_scan_tail() cause U-boot reset.
> 
> 
> int nand_scan_tail(struct mtd_info *mtd)
> {
>     int i;
>     struct nand_chip *chip = mtd->priv;
> 
>     if (!(chip->options & NAND_OWN_BUFFERS)) {
>         chip->buffers = kmalloc(sizeof(*chip->buffers), GFP_KERNEL);   
>     }
> 
>     if (!chip->buffers)
>         return -ENOMEM;
>               ........
> 
> 
> U-boot displays message as follows :
> 
> NAND:  data abort
> pc : [<31f902b4>]\0x09   lr : [<31fa084c>]
> sp : 31f5bee0  ip : 00000076\0x09 fp : 00000000
> r10: 00001188  r9 : 00020000\0x09 r8 : 31f5bfdc
> r7 : 00000001  r6 : 00000000\0x09 r5 : 31fa42b8  r4 : 31fa4364
> r3 : 31fa052c  r2 : 00000064\0x09 r1 : 00000063  r0 : ffffffff
> Flags: NzCv  IRQs off  FIQs off  Mode SVC_32
> Resetting CPU ...
> 
> 
> Where the malloc function is defined?
> Why the kmalloc() hangs the u-boot?
> Is there any configuation definition needed?

What specific source lines do 0x31f902b4 and 0x31fa0840 correspond to,
and can you disassemble the former?

-Scott


More information about the U-Boot mailing list