[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Debugng the flash watchdog problem



On Monday 03 April 2006 10:14, Mikael Starvik wrote:
> jffs2_scan_medium probably causes a lot of page faults for the pages it
> traverses and therefor you see mtd stuff and zlib stuff. I've made a 
> modified watchog_brp implementation 
> which dumps the stack to be able to retrieve the callstack to find the
> culprit who disables the interrupts.

OK, here's the output:

JFFS2: Erase block at 0x001a0000 is not formatted. It will be erased
jffs2_scan_empty(): Empty block at 0x001f0e94 ends at 0x001f0e94 (with 
0xffdfffff)! Marking dirty
ERP 600DEE66
AD050ED2 57AEE724 2F9D613 EE879F67 9AE149CE 31454139 39333134 36360020 A 
61989CA4 1 0 61988000 6000D300 A13156E3 61989CA4
2 24000000 1 6000D49E 24000000 61989CA4 60061056 24000000 61989CE0 1 0 
61988000 6000D300 FFFFFFFF 6005F4C8 0
8DB0555 61F441B8 61C 8058C1A8 8DB0555 4F079084 50D6A1CA D110227E 82A5E863 
E90F88FA AD050ED2 57AEE724 2F9D613 EE879F67 9AE149CE 0
400 6007CAD6 600DEE66 F F 0 61F44000 61F44000 0 61988000 800 603DAD6A 0 
58BFC4 603DAD5A 58BFC4
17 17 E9848 61F22240 12 27 61948618 61F423A5 800 0 58BFC4 61988000 61F44000 
800 60128178 603DAD20
60128178 800 0 61988000 0 0 0 61988000 0 0 6007FE6E 61989DD0 61F44000 
61989E44 61F80CE8 61F44000
61F423A0 6005B892 61989DD0 61F44000 27 27BF80 844 61F80CE8 61948618 C002 0 
C0021985 844 96E4AAA5 1B9 350
81A4 0 C4800 441A7AD7 441A7AD7 441A7AD7 C4000 800 800 0 A3C0CB3D 7ABE6724 
6005B35C 61989E3C 61989E48 0
61948600 1 61F80CE8 61948618 61F80CF0 C A 27BF80 C0021985 844 96E4AAA5 
6005AD84 61951F02 6195A000 61F80D3C 61F80CE8
61F80CE8 61F80C00 61F80CF0 6005D094 61F80D1C 61F80CE8 61F80C00 1 61F80D4C 
6005A490 61F80C00 60118724 0 60114F08 61F80C28 1
0 61F80D1C 61F80D1C 6002509E 0 6195E000 6195A000 0 FFFFFFF4 6195C000 
60118724 603F44C0 619C4420 603F43C0 603F44C0 FFFFFFF4
6195C000 9 1 6002525A 6195A000 61989F50 0 0 61989F50 6195E000 60033BC2 
61989F50 0 6195C000 61F3A000 0
60033E0A 6195C000 6195A000 84710 0 C0ED0000 E9858 60033C72 61F3A000 0 
619C4520 603F43C0 2000 E9858 60033C72 9
1 6003412C 6195A000 4FFFFF46 EB878 E9858 C0ED0000 0 6195A000 6195C000 
6195E000 6005F366 E9848 B73E2 61989FA4 0
E9858 C0ED0000 4FFFFF46 EB878 FFFFFFDA 15 E9848 0 84710 0 4FFFFF46 EB878 
E9858 C0ED0000 C0ED0000 E9848
5A0 B73E2 1AC26168 F0000180 1AC26160 1AAB44AE 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

How do we get anything out of this?

A few addresses that occur in the stack, and are in the kernel's range:

objdump-cris -t os/linux/vmlinux | grep 60033
60033044 l     F .text  00000028 next_mnt
6003306c l     F .text  00000074 clone_mnt
6003310c l     F .text  00000044 m_start
60033150 l     F .text  0000002a m_next
6003317a l     F .text  0000000c m_stop
60033186 l     F .text  00000292 show_vfsmnt
600334e4 l     F .text  000000bc do_umount
60033628 l     F .text  00000028 mount_is_safe
60033650 l     F .text  000000aa copy_tree
600336fa l     F .text  0000011a graft_tree
60033814 l     F .text  000000fe do_loopback
60033912 l     F .text  0000008e do_remount
600339a0 l     F .text  000001be do_move_mount
60033b5e l     F .text  00000114 do_add_mount
60033c72 l     F .text  000000a4 copy_mount_options
60033e22 g     F .text  0000029e copy_namespace
6003342a g     F .text  000000ba umount_tree
60033d16 g     F .text  0000010c do_mount
600335a0 g     F .text  00000080 sys_umount
60033418 g     F .text  00000012 may_umount
60033620 g     F .text  00000008 sys_oldumount
600330e0 g     F .text  0000002c __mntput

objdump-cris -t os/linux/vmlinux | grep 6005a
6005a260 l     F .text  00000082 jffs2_statfs
6005a2e2 l     F .text  00000290 jffs2_read_super
6005a830 l     F .text  0000007e mtd_fake_writev
6005a8ae l     F .text  000000e6 writecheck
6005af0c l     F .text  0000068c jffs2_scan_eraseblock
6005ad40 g     F .text  000001cc jffs2_scan_medium
6005a168 g     F .text  000000e8 jffs2_clear_inode
6005a632 g     F .text  0000003a jffs2_write_super
6005a5de g     F .text  00000054 jffs2_remount_fs
6005a680 g     F .text  000001b0 jffs2_new_inode
6005a994 g     F .text  000001b0 jffs2_write_dnode
6005ab44 g     F .text  000001ec jffs2_write_dirent
6005a572 g     F .text  0000006c jffs2_put_super

objdump-cris -t os/linux/vmlinux | grep 6005d
6005d736 l     F .text  000000d0 jffs2_erase_callback
6005d806 l     F .text  00000044 jffs2_free_all_node_refs
6005dc7e l     F .text  0000007a jffs2_remove_node_refs_from_ino_list
6005dfda l     F .text  00000022 thread_should_wake
6005de54 l     F .text  00000186 jffs2_garbage_collect_thread
6005d240 g     F .text  00000184 jffs2_build_inode_pass1
6005d3c4 g     F .text  000000ac jffs2_build_remove_unlinked_inode
6005d046 g     F .text  00000034 jffs2_follow_link
6005dd4c g     F .text  000000bc jffs2_start_garbage_collect_thread
6005d856 g     F .text  00000428 jffs2_mark_erased_blocks
6005d84a g     F .text  0000000c jffs2_erase_pending_trigger
6005d07c g     F .text  000001c4 jffs2_build_filesystem
6005dcf8 g     F .text  00000054 jffs2_garbage_collect_trigger
6005d63a g     F .text  000000fc jffs2_erase_pending_blocks
6005d00a g     F .text  0000003c jffs2_readlink
6005d470 g     F .text  000001ca jffs2_erase_block
6005de08 g     F .text  0000004c jffs2_stop_garbage_collect_thread

objdump-cris -t os/linux/vmlinux | grep 6005b
6005bed0 l     F .text  000000b4 jffs2_rotate_lists
6005b598 l     F .text  00000126 jffs2_scan_empty
6005b74e l     F .text  00000416 jffs2_scan_inode_node
6005bb64 l     F .text  0000032a jffs2_scan_dirent_node
6005b6be l     F .text  00000090 jffs2_scan_make_ino_cache
6005be8e l     F .text  00000014 count_list
6005bea2 l     F .text  0000002e rotate_list
6005bfa0 l     F .text  000000ba jffs2_find_gc_block

objdump-cris -t os/linux/vmlinux | grep 600610
6006102a l     F .text  0000009c timer_interrupt
60061002 g     F .text  00000028 update_xtime_from_cmos
600610e0 g     F .text  00000032 sys_pipe

objdump-cris -t os/linux/vmlinux | grep 6007f
6007f2d8 l     F .text  000000e6 mtd_read_proc
6007f3c0 l     F .text  000000ae concat_read
6007f46e l     F .text  000000cc concat_write
6007f53a l     F .text  0000000e concat_erase_callback
6007f548 l     F .text  000000b2 concat_dev_erase
6007f5fa l     F .text  00000206 concat_erase
6007f800 l     F .text  000000aa concat_lock
6007f8aa l     F .text  000000a8 concat_unlock
6007f952 l     F .text  00000036 concat_sync
6007f988 l     F .text  00000044 concat_suspend
6007f9cc l     F .text  00000038 concat_resume
6007fe00 l     F .text  00000074 part_read
6007fe74 l     F .text  00000074 part_point
6007fee8 l     F .text  00000034 part_unpoint
6007ff1c l     F .text  00000084 part_read_ecc
6007ffa0 l     F .text  00000074 part_read_oob
6007fa04 g     F .text  000003d0 mtd_concat_create
6007fdd4 g     F .text  00000026 mtd_concat_destroy
6007f07a g     F .text  000000b2 unregister_mtd_user
6007f002 g     F .text  00000078 register_mtd_user
6007f1bc g     F .text  0000008e default_mtd_writev
6007f24a g     F .text  0000008e default_mtd_readv
6007f12c g     F .text  00000090 __get_mtd_device

objdump-cris -t os/linux/vmlinux | grep 600dee
600dee06 l       .text  00000000 _no_fold
600dee1a l       .text  00000000 _no_words
600dee0e l       .text  00000000 _wloop
600dee24 l       .text  00000000 _do_byte
600dee30 g     F .text  0000019e memcpy