[#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