kernel hangs on DOC2000 root filesystem
I'm having trouble getting a linux-2.4.18-pre8 PowerPC kernel booting from a DOC2000 device. A similar kernel boots fine using an NFS root filesystem. I can then do a modprobe nftl and read/write to the DOC fine. The only difference between the 2 kernels is that the MTD. DOC2000 and NFTL drivers are built into one kernel and are modules on the other.
Any ideas why the kernel just hangs ?
Thanks,
Brendan Simon.
Here is a log of the console during boot with some extra printk messages.
CPM UART driver version 0.01
ttyS00 at 0x1040 is a SMC
ttyS01 at 0x8300 is a SCC
pty: 256 Unix98 ptys configured
block: 128 slots per queue, batch=32
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
NET4: Frame Diverter 0.46rx_bd_base = c01a7208, tx_bd_base = c01a7288
fec: Phy @ 0x0, type 0x001378e1
FCC Startup....
Control register = 3100
Full Duplex mode
FCC3: eth0: FCC ENET Version 0.2, 00:d0:1f:20:69:bf
Cronyx Ltd, Synchronous PPP and CISCO HDLC (c) 1994
Linux port (c) 1998 Building Number Three Ltd & Jan "Yenya" Kasprzak. Using configured DiskOnChip probe address 0xf02c0000 DiskOnChip 2000 found at address 0xF02C0000
Flash chip found: Manufacturer ID: 98, Chip ID: 73 (Toshiba TH58V128DC) 2 flash chips found. Total DiskOnChip size: 32 MiB
NFTL driver: nftlcore.c $Revision: 1.3 $, nftlmount.c $Revision: 1.6 $ Partition check:
nftla: nftla1 nftla2
IEEE 802.2 LLC for Linux 2.1 (c) 1996 Tim Alpaerts
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 4096) Linux IP multicast router 0.06 plus PIM-SM
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. prepare_namespace()
Quoted 48 lines
Quoted 48 lines
Quoted 48 lines
Quoted 48 lines
Quoted 48 lines
Quoted 48 lines
Quoted 48 lines
Quoted 48 lines
BJS:
mount_root()
BJS:mount_root():__getname()
BJS:mount_root():__getname()
BJS:mount_root():devfs_find_handle()
BJS:mount_root():bdget()
BJS:mount_root():devfs_get_ops()
BJS:mount_root():devfs_generate_path()
BJS:mount_root():blkdev_get()
BJS:mount_root():check_disk_change()
BJS:mount_root():get_super()
BJS:get_super():
BJS:get_super():spin_lock()
BJS:get_super():find_super()
BJS:get_super():spin_unlock()
BJS:get_super(): return(NULL)
BJS:mount_root():fs_name= ext2
BJS:mount_root():atomic_inc()
BJS:mount_root():blkdev_get()
BJS:mount_root():read_super()
BJS:mount_root():put_filesystem()
BJS:mount_root():blkdev_put()
BJS:blkdev_put():down()
BJS:blkdev_put():lock()
BJS:blkdev_put():fsync_no_super()
BJS:blkdev_put():release()
BJS:nftl_release():
BJS:nftl_release():
BJS:nftl_release():invalidate_device()
BJS:invalidate_device():
BJS:invalidate_device():fsync_dev()
BJS:fsync_dev():sync_buffers()
BJS:fsync_dev():lock_kernel()
BJS:fsync_dev():sync_inodes()
BJS:sync_inodes():
BJS:sync_inodes():get_super()
BJS:get_super():
BJS:get_super():spin_lock()
BJS:get_super():find_super()
BJS:get_super():spin_unlock()
BJS:get_super():down_read()
BJS:rwsem_down_read_failed(): rwsemtrace(enter)
BJS:rwsem_down_read_failed():rwsem_down_failed_common()
BJS:rwsem_down_failed_common():set_tast_state()
BJS:rwsem_down_failed_common():spin_lock()
BJS:rwsem_down_failed_common():list_add_tail()
BJS:rwsem_down_failed_common():rwsem_atomic_update()
BJS:rwsem_down_failed_common():spin_unlock()
BJS:rwsem_down_failed_common():schedule()
Quoted 3 lines · [email protected] said:
Any ideas why the kernel just hangs ?
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
BJS:
nftl_release():invalidate_device()
--
dwmw2
Quoted 6 lines · David Woodhouse
Quoted 4 lines · [email protected] said:
Any ideas why the kernel just hangs ?
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
BJS:
nftl_release():invalidate_device()
Is this because get_super() fails ???
I've done an fsck.ext2 and it passed with no problems. This should mean that the super blocks are OK, should it ???
I formatted the DOC with nftl_format if that makes any difference.
I also used the latest fdisk from util-linux for format the drive with an MSDOS partition table and one ext2 partition.
Thanks for any help or advice.
Brendan Simon.
Quoted 6 lines · David Woodhouse
Quoted 4 lines · [email protected] said:
Any ideas why the kernel just hangs ?
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
BJS:
nftl_release():invalidate_device()
I've just tried an older 2.4.1-pre11 kernel that a coleague is using. I loaded the kernel via tftp and passed it "root=/dev/nftla1 ro" parameters. It booted perfectly (except for some busybox seg faults). ie. the DOC was mounted so that implies that the super blocks are OK.
Maybe there is a bug in the 2.4.18-pre8 kernel related to MTD/NFTL ?? Maybe I've changed something that I've forgotten about ? I'll have a closer look.
Regards,
Brendan Simon.
(2.4.18)mount_root():blkdev_put():bdev->bd_op->release():invalidate_device() : invalidate_inodes(sb)
probably caused by doing invalidate_xxx() inside mount_root()? (some other driver also hang when doing release() operation inside mount_root)
----- Original Message -----
From: "Brendan J Simon" <[email protected]>
To: "linux-mtd" <[email protected]>
Sent: Wednesday, August 07, 2002 7:32 AM
Subject: Re: kernel hangs on DOC2000 root filesystem
Quoted 28 lines
Quoted 6 lines · David Woodhouse
Quoted 4 lines · [email protected] said:
Any ideas why the kernel just hangs ?
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
BJS:
nftl_release():invalidate_device()Is this because
get_super()fails ???I've done an fsck.ext2 and it passed with no problems. This should mean that the super blocks are OK, should it ???
I formatted the DOC with
nftl_formatif that makes any difference. I also used the latest fdisk from util-linux for format the drive with an MSDOS partition table and one ext2 partition.Thanks for any help or advice.
Brendan Simon.______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/