Hi, I got yaffs2 crashing my kernel on a PPC440EPx board with a very recent kernel (2.6.21-rc6), the ndfc NAND flash driver for the on-chip NAND controller and the yaffs code from todays CVS. The board uses a 256MiB NAND flash. This is what I am doing after booting: # This is how my mtd devices look like: du440:~# cat /proc/mtd dev: size erasesize name mtd0: 00200000 00010000 "kernel" mtd1: 001a0000 00010000 "initrd" mtd2: 00060000 00010000 "u-boot" mtd3: 10000000 00020000 "NAND 256MiB 3,3V 8-bit" mtd4: 10000000 00020000 "content0" # First I erase the complete NAND flash: du440:~# flash_eraseall /dev/mtd4 Erasing 128 Kibyte @ 8140000 -- 50 % complete. Skipping bad block at 0x08160000 Erasing 128 Kibyte @ f720000 -- 96 % complete. Skipping bad block at 0x0f740000 Erasing 128 Kibyte @ ffe0000 -- 99 % complete. # Then I mount it an get a lot of messages because of the checkpointing (BTW: cool stuff ... and the reason why not using JFFS2): du440:~# mount /nand0 .... find next checkpt block: search: block 2046 oid 0 seq 0 eccr 0 find next checkpt block: search: block 2047 oid 0 seq 0 eccr 0 find next checkpt block: search: block 2048 oid 0 seq 0 eccr 0 found no more checkpt blocks checkpoint byte count 0 restore exit: isCheckpointed 0 block 1036 is bad block 1979 is bad # Here we are: du440:~# df Filesystem 1K-blocks Used Available Use% Mounted on ... /dev/mtdblock4 262144 2304 259840 1% /nand0 # Writing small files seems to be fine: du440:~# dd if=/dev/zero of=/nand0/test1 bs=2k count=1 1+0 records in 1+0 records out 2048 bytes (2.0 kB) copied, 0.002135 seconds, 959 kB/s du440:~# dd if=/dev/zero of=/nand0/test2 bs=2k count=2 2+0 records in 2+0 records out 4096 bytes (4.1 kB) copied, 0.003045 seconds, 1.3 MB/s # But writing a bigger file crashes the system: du440:~# cp /bin/bash /nand0/ ------------[ cut here ]------------ Kernel BUG at c013bca8 [verbose debug info unavailable] Oops: Exception in kernel mode, sig: 5 [#1] NIP: C013BCA8 LR: C013BC34 CTR: 00000000 REGS: ef893a00 TRAP: 0700 Not tainted (2.6.21-rc6-g77c69916-dirty) MSR: 00029000 CR: 22424422 XER: 00000000 TASK = c0cd3bf0[2548] 'cp' THREAD: ef892000 GPR00: C013BC34 EF893AB0 C0CD3BF0 EF893AC8 00000005 EF893AC8 C029E50C 00000005 GPR08: 000000CC 00000000 FFFFFFF0 00000010 EF893BC0 10027788 28004422 00001000 GPR16: C0334458 EF893C3C EF893C38 00000000 00000000 00000000 00000000 00000001 GPR24: EF893BC0 00000000 00000000 C0FB2CE0 00000000 00004000 EF893BC0 C0352000 NIP [C013BCA8] nandmtd2_WriteChunkWithTagsToNAND+0xd0/0xd8 LR [C013BC34] nandmtd2_WriteChunkWithTagsToNAND+0x5c/0xd8 Call Trace: [EF893AB0] [C013BC34] nandmtd2_WriteChunkWithTagsToNAND+0x5c/0xd8 (unreliable) [EF893B10] [C013A22C] yaffs_WriteChunkWithTagsToNAND+0x7c/0x138 [EF893B30] [C0134558] yaffs_WriteNewChunkWithTagsToNAND+0x3c8/0x54c [EF893B70] [C0135E70] yaffs_WriteChunkDataToObject+0x94/0xe8 [EF893C30] [C013657C] yaffs_WriteDataToFile+0x1fc/0x2c8 [EF893C90] [C012F600] yaffs_commit_write+0xd8/0x2c8 [EF893CD0] [C003D2EC] generic_file_buffered_write+0x210/0x9c8 [EF893D90] [C003ED30] __generic_file_aio_write_nolock+0x2dc/0x578 [EF893E00] [C003F034] generic_file_aio_write+0x68/0x10c [EF893E30] [C00615E0] do_sync_write+0xc0/0x134 [EF893EF0] [C0061B8C] vfs_write+0xcc/0x16c [EF893F10] [C0062628] sys_write+0x4c/0x90 [EF893F40] [C0001C64] ret_from_syscall+0x0/0x3c Instruction dump: 7f6903a6 38e10024 4e800421 20030000 7c601914 80010064 bb410048 7c0803a6 38210060 4e800020 0fe00000 48000000 <0fe00000> 48000000 7c0802a6 7d800026 Message from syslogd@du440 at Mon Apr 16 18:30:44 2007 ... du440 kernel: ------------[ cut here ]------------ I will start debugging tomorrow to see if one of the BUG()-calls in nandmtd2_WriteChunkWithTagsToNAND() causes this crash. Am I doing anytinhg completely wrong? Matthias