[#5322] From cache Write back to sd card with exception in 518ezbrd

Document created by Aaronwu Employee on Sep 4, 2013
Version 1Show Document
  • View in full screen mode

[#5322] From cache Write back to sd card with exception in 518ezbrd

Submitted By: Bill Xie

Open Date

2009-07-07 06:16:03     Close Date

2009-07-09 06:55:57

Priority:

Medium     Assignee:

Nobody

Status:

Closed     Fixed In Release:

N/A

Found In Release:

N/A     Release:

Category:

N/A     Board:

EZBRD

Processor:

BF518     Silicon Revision:

0.0

Is this bug repeatable?:

N/A     Resolution:

Rejected

Uboot version or rev.:

    Toolchain version or rev.:

toolchain-trunk

App binary format:

N/A     

Summary: From cache Write back to sd card with exception in 518ezbrd

Details:

 

When from sdram copy file to sd card,It is with next text.

 

Undefined instruction

- May be used to emulate instructions that are not defined for

   a particular processor implementation.

Kernel OOPS in progress

Deferred Exception context

CURRENT PROCESS:

COMM=pdflush PID=77

CPU = 0

invalid mm

return address: [0x0008895a]; contents of:

0x00088930:  4f18  e121  0110  5008  e131  0000  e134  003f

0x00088940:  3600  e132  001f  e130  0001  e13b  0041  3610

0x00088950:  345d  e139  001f  e137  0001 [3c9b] e093  006b

0x00088960:  2005  3220  9131  67d1  9331  9134  3002  30b8

 

ADSP-BF518-0.0 400(MHz CCLK) 80(MHz SCLK) (mpu off)

Linux version 2.6.28.10-ADI-2009R1

Built with gcc version 4.1.2 (ADI svn)

 

SEQUENCER STATUS:        Not tainted

SEQSTAT: 00060021  IPEND: 8030  SYSCFG: 0006

  EXCAUSE   : 0x21

  interrupts disabled

  physical IVG5 asserted : <0xffa00b90> { _evt_ivhw + 0x0 }

  physical IVG15 asserted : <0xffa00de0> { _evt_system_call + 0x0 }

  logical irq   6 mapped  : <0xffa00328> { _timer_interrupt + 0x0 }

  logical irq  21 mapped  : <0x000b68c8> { _bfin_rtc_interrupt + 0x0 }

  logical irq  24 mapped  : <0x000c0e6c> { _sdh_dma_irq + 0x0 }

  logical irq  27 mapped  : <0x000b939c> { _bfin_twi_interrupt_entry + 0x0 }

  logical irq  29 mapped  : <0x000a4ed0> { _bfin_serial_dma_rx_int + 0x0 }

  logical irq  30 mapped  : <0x000a520c> { _bfin_serial_dma_tx_int + 0x0 }

  logical irq  35 mapped  : <0x000ace50> { _bfin_mac_interrupt + 0x0 }

  logical irq  58 mapped  : <0x000c0e90> { _sdh_stat_irq + 0x0 }

RETE: <0x00000000> /* Maybe null pointer? */

RETN: <0x03bd7d20> /* kernel dynamic memory */

RETX: <0x00000480> /* Maybe fixed code section */

RETS: <0x0008919c> { _radix_tree_gang_lookup_tag_slot + 0x74 }

PC  : <0x0008895a> { ___lookup_tag + 0x4a }

DCPLB_FAULT_ADDR: <0x03bd7d20> /* kernel dynamic memory */

ICPLB_FAULT_ADDR: <0x0008895a> { ___lookup_tag + 0x4a }

 

PROCESSOR STATE:

R0 : 00000110    R1 : 00000110    R2 : 00000000    R3 : 03078510

R4 : 0000003f    R5 : 0000000e    R6 : 00000000    R7 : 00000000

P0 : 03078dcc    P1 : 00000000    P2 : 00000006    P3 : 03bd7e08

P4 : 03123910    P5 : 00000001    FP : 03bd7e40    SP : 03bd7c44

LB0: 0008b84a    LT0: 0008b84a    LC0: 00000000

LB1: 0000841e    LT1: 0000841e    LC1: 00000000

B0 : 00000110    L0 : 00000000    M0 : 0000003f    I0 : 00000001

B1 : 0000001f    L1 : 00000000    M1 : 0000000e    I1 : 00000000

B2 : 00000110    L2 : 00000000    M2 : 03bd7e08    I2 : 0000001f

B3 : 00000041    L3 : 00000000    M3 : 00000001    I3 : 00000001

A0.w: 0000b389   A0.x: 00000000   A1.w: 00000fb3   A1.x: 00000000

USP : 00000000  ASTAT: 02002000

 

Hardware Trace:

   0 Target : <0x00004cc4> { _trap_c + 0x0 }

     Source : <0xffa005ea> { _exception_to_level5 + 0x9e } CALL pcrel

   1 Target : <0xffa0054c> { _exception_to_level5 + 0x0 }

     Source : <0xffa0042c> { _bfin_return_from_exception + 0x18 } RTX

   2 Target : <0xffa00414> { _bfin_return_from_exception + 0x0 }

     Source : <0xffa004a2> { _ex_trap_c + 0x46 } JUMP.S

   3 Target : <0xffa0045c> { _ex_trap_c + 0x0 }

     Source : <0xffa006b4> { _trap + 0x58 } JUMP (P4)

   4 Target : <0xffa0065c> { _trap + 0x0 }

     Source : <0x00088956> { ___lookup_tag + 0x46 } 0xe137

   5 Target : <0x00088910> { ___lookup_tag + 0x0 }

     Source : <0x00089198> { _radix_tree_gang_lookup_tag_slot + 0x70 } CALL pcrel

   6 Target : <0x00089184> { _radix_tree_gang_lookup_tag_slot + 0x5c }

     Source : <0x0008917a> { _radix_tree_gang_lookup_tag_slot + 0x52 } JUMP.S

   7 Target : <0x00089128> { _radix_tree_gang_lookup_tag_slot + 0x0 }

     Source : <0x0002ba2c> { _find_get_pages_tag + 0x2c } CALL pcrel

   8 Target : <0x0002ba1a> { _find_get_pages_tag + 0x1a }

     Source : <0x0002ba18> { _find_get_pages_tag + 0x18 } JUMP.S

   9 Target : <0x0002ba00> { _find_get_pages_tag + 0x0 }

     Source : <0x00032866> { _pagevec_lookup_tag + 0x1a } CALL pcrel

  10 Target : <0x0003284c> { _pagevec_lookup_tag + 0x0 }

     Source : <0x00030f12> { _write_cache_pages + 0xbe } CALL pcrel

  11 Target : <0x00030ee0> { _write_cache_pages + 0x8c }

     Source : <0x00031054> { _write_cache_pages + 0x200 } JUMP.S

  12 Target : <0x00031040> { _write_cache_pages + 0x1ec }

     Source : <0x00030eaa> { _write_cache_pages + 0x56 } IF CC JUMP

  13 Target : <0x00030ea2> { _write_cache_pages + 0x4e }

     Source : <0x00030e88> { _write_cache_pages + 0x34 } IF CC JUMP

  14 Target : <0x00030e86> { _write_cache_pages + 0x32 }

     Source : <0x000310cc> { _write_cache_pages + 0x278 } JUMP.S

  15 Target : <0x000310c4> { _write_cache_pages + 0x270 }

     Source : <0x00030e76> { _write_cache_pages + 0x22 } IF !CC JUMP

 

Kernel Stack

Stack info:

SP: [0x03bd7f40] <0x03bd7f40> /* kernel dynamic memory */

FP: (0x03bd7fc0)

Memory from 0x03bd7f40 to 03bd8000

03bd7f40:[004d5f4c] 00000000  00000000  00000000  00000000  00000000  00000400  00000000

03bd7f60: 00000000  00000000  00000000  00000000  00000031  0000059c  000002ce <0003203c>

03bd7f80: 00183420  0017e984  001808f4  03bd7fb4  00176b18  00000000  00000000  03ed7680

03bd7fa0: 0017d360  00000000  03ed7680  000318bc  00000000  03bd7fb4  03bd7fb4  00014c2e

03bd7fc0:(00000000)<0001e3d8><00031f74> 00000000  00000000  00000000  00000000  00000000

03bd7fe0: 00000000  00000000 <0000145e> 00000000  00000000  00000000  ffffffff  00000006

03bd8000: 03ed7960

Return addresses in stack:

    address : <0x0003203c> { _pdflush + 0xc8 }

   frame  1 : <0x0001e3d8> { _kthread + 0x50 }

    address : <0x00031f74> { _pdflush + 0x0 }

    address : <0x0000145e> { _kernel_thread_helper + 0x6 }

Modules linked in: nls_iso8859_1 nls_cp437

Kernel panic - not syncing: Kernel exception

 

 

It is not  reappear exception write data to sd card when  added  debug code (printk) in lib/radix-tree.c __lookup_tag function.

 

static unsigned int

__lookup_tag(struct radix_tree_node *slot, void ***results, unsigned long index,

    unsigned int max_items, unsigned long *next_index, unsigned int tag)

{

    unsigned int nr_found = 0;

    unsigned int shift, height;

 

    height = slot->height;

    if (height == 0)

        goto out;

    shift = (height-1) * RADIX_TREE_MAP_SHIFT;

 

    while (height > 0) {

        unsigned long i = (index >> shift) & RADIX_TREE_MAP_MASK ;

#ifdef  SD_DEBU

   printk(KERN_DEBUG "%s %s %d i=%d RADIX_TREE_MAP_MASK=%d index=%d\n",__FILE__,__FUNCTION__,__LINE__,i,RADIX_TREE_MAP_MASK,index);

#endif

        for (;;) {

            if (tag_get(slot, tag, i))

                break;

            index &= ~((1UL << shift) - 1);

            index += 1UL << shift;

            if (index == 0)

                goto out;    /* 32-bit wraparound */

            i++;

            if (i == RADIX_TREE_MAP_SIZE)

                goto out;

        }

        height--;

        if (height == 0) {    /* Bottom level: grab some items */

            unsigned long j = index & RADIX_TREE_MAP_MASK;

 

            for ( ; j < RADIX_TREE_MAP_SIZE; j++) {

                index++;

                if (!tag_get(slot, tag, j))

                    continue;

                /*

                 * Even though the tag was found set, we need to

                 * recheck that we have a non-NULL node, because

                 * if this lookup is lockless, it may have been

                 * subsequently deleted.

                 *

                 * Similar care must be taken in any place that

                 * lookup ->slots[x] without a lock (ie. can't

                 * rely on its value remaining the same).

                 */

                if (slot->slots[j]) {

                    results[nr_found++] = &(slot->slots[j]);

                    if (nr_found == max_items)

                        goto out;

                }

            }

        }

        shift -= RADIX_TREE_MAP_SHIFT;

        slot = rcu_dereference(slot->slots[i]);

        if (slot == NULL)

            break;

    }

out:

    *next_index = index;

    return nr_found;

}

 

But I not found bug in __lookup_tag function.please help me fixe thi bug? Thank you.

 

 

Follow-ups

 

--- Sonic Zhang                                              2009-07-07 06:23:28

Unless you provide the correct version information of uClinux-dist and

toolchain, no one can help you.

 

You can't built 2009R1-RC1 kernel with svn trunk toolchain.

 

 

--- Bill Xie                                                 2009-07-09 06:35:49

It is ok with toolchain 2009R1-RC9 to build uClinux kernel.

 

 

 

    Files

    Changes

    Commits

    Dependencies

    Duplicates

    Associations

    Tags

 

File Name     File Type     File Size     Posted By

dmesg.txt    text/plain    4471    Bill Xie

Attachments

Outcomes