simulate a bad NAND block cause kernel hang

ahgu ahgu at ahgu.homeunix.com
Thu Aug 25 09:27:32 EDT 2005


I forced the flash_erase function to fail. I expect the jffs2 will pick up 
the return error and mark the block bad and put the bad block in a bad_block 
list. But what I get is kernel failure:
I get similar error when I simulate a write error.
Am I doing the bad block simulation correctly? Is this a correct response? 
What is supposed to happen when the NAND flash grow a bad block?


-ahgu

erasing 615
Erase at 0x0001c000 failed immediately: errno 7
jffs2_erase_failedScheduling in interrupt
kernel BUG at sched.c:676!
Unable to handle kernel paging request at virtual address 00000000, epc == 
80112220, ra == 80112220
Oops in fault.c:do_page_fault, line 225:
$0 : 00000000 1000f800 0000001b 00000001 816ee000 00000000 00000001 00001893
$8 : 00001893 00000000 00000000 00000000 802a9459 fffffff9 0000000a 802edd0a
$16: 8028e260 802ec000 00000000 802ad928 818cbe2c 818cbe28 80106000 802ad924
$24: ffffffff 00000002                   802ec000 802ede38 802ede38 80112220
Hi : 000247ff
Lo : befc0000
epc  : 80112220    Not tainted
Status: 1000f803
Cause : 1080000c
Process kupdated (pid: 6, stackpage=802ec000)
Stack: 80245460 80245538 000002a4 00001875 802fe504 009a0000 818cbd10 
802ad928
       818cbe2c 818cbe28 802fe4b0 8029ae8c 00000000 801db1f8 00000010 
802edeb8
       802edea8 1000f801 00000000 802ec000 802fe508 802fe508 0000000a 
00000266
       8107c720 818cbd10 818cbd10 816af120 818cbe2c 818cbe28 00000001 
8029ae8c
       00000000 801d29b0 802fe400 8107c720 818cbd10 816af120 801852a0 
801851fc
       80253518 ...
Call Trace: [<80245460>] [<80245538>] [<801db1f8>] [<801d29b0>] [<801852a0>] 
[<801851fc>]
 [<80253518>] [<801854ac>] [<801853f8>] [<80186738>] [<80186730>] 
[<8014004c>]
 [<8013f11c>] [<8013f610>] [<8013f3d8>] [<8013f3d8>] [<801089e8>] 
[<80140eb4>]
 [<801089d8>]

Code: 24a55538  0c0458b5  240602a4 <ac000000> 0012a940  3c0a8029  254a2040 
01555021  40016000
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
 * 





More information about the linux-mtd mailing list