linux-mips
[Top] [All Lists]

fail to boot with MTD root fs

To: linux-mips <linux-mips@oss.sgi.com>
Subject: fail to boot with MTD root fs
From: Kunihiko IMAI <kimai@laser5.co.jp>
Date: Sat, 25 May 2002 09:06:52 +0900
Sender: owner-linux-mips@oss.sgi.com
User-agent: Wanderlust/2.8.1 (Something) SEMI/1.14.3 (Ushinoya) FLIM/1.14.3 (Unebigoryōmae) APEL/10.3 Emacs/20.7 (i386-vine-linux-gnu) MULE/4.1 (AOI)
Hi,

I'm using Pb1500 evaluation board and met somewhat serious problem.
The problem is that failing to mount FlashROM filesystem as root fs
and go into infinite loop without any message.  Does anyone have a
good (or better) solution?

I'm using SGI kernel source tree, linux-2.4.18 of linux_2_4 branch.

When booting with nfs root, and using MTD FlashROM fs, it works well.

I traced code from init/main.c with printk.  It reached at schedule()
and go into infinite loop.  I also used kernel gdb, but fail to trace.
It may be sensible with timing or interrupt.  So printk trace may be
fake result, too.

Some month ago, I ported 2.4.16 kernel to L-Card+, a small VR4181
board.  At this time, it can boot with FlashROM root fs.  It works
well.

I compared 2.4.16 and 2.4.18 code.  And I found a difference at
mount_root().

at 2.4.18:

        for (p = fs_names; *p; p += strlen(p)+1) {
                struct file_system_type * fs_type = get_fs_type(p);
                if (!fs_type)
                        continue;
                atomic_inc(&bdev->bd_count);
                retval = blkdev_get(bdev, mode, 0, BDEV_FS); ///// <-
                                /// go into infinite loop at this line
                if (retval)
                        goto Eio;
                sb = read_super(ROOT_DEV, bdev, fs_type,
                                root_mountflags, root_mount_data);
                put_filesystem(fs_type);
                if (sb) {
                        blkdev_put(bdev, BDEV_FS);
                        goto mount_it;
                }
        }
        panic("VFS: Unable to mount root fs on %s", kdevname(ROOT_DEV));


at 2.4.16:

        for (p = fs_names; *p; p += strlen(p)+1) {
                struct file_system_type * fs_type = get_fs_type(p);
                if (!fs_type)
                        continue;
                sb = read_super(ROOT_DEV, bdev, fs_type,
                                root_mountflags, root_mount_data);
                if (sb) 
                        goto mount_it;
                put_filesystem(fs_type);
        }
        panic("VFS: Unable to mount root fs on %s", kdevname(ROOT_DEV));


Reverting this part as 2.4.16, then it can boot.  But I'm afraid that
this reverting causes another problem...

Thanks.
_._. __._  _ . ... _  .___ ._. _____ _... ._ _._ _.._. .____  _ . ... _

                                                          Kunihiko IMAI

<Prev in Thread] Current Thread [Next in Thread>