Skip to contentSkip to conversation

kernel hangs on DOC2000 root filesystem

DISCUSSION Brendan J Simon 3 participants 5 messages Aug 6, 2002 – Aug 7, 2002 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

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.46
rx_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()

#1 lore raw
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

#2 lore raw
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.

#4 lore raw
In reply to David Woodhouse
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.

#3 lore raw
In reply to Brendan J 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_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.

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/