Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Feb 2011 16:56:11 +0100
From:      Maciej Milewski <milu@dat.pl>
To:        freebsd-arm@freebsd.org
Subject:   Re: Re: FreeBSD on a DockStar - doesn't mount root
Message-ID:  <201102071656.11633.milu@dat.pl>
In-Reply-To: <20110207163835.41be5884.torfinn.ingolfsen@broadpark.no>
References:  <20110206181659.869861bf.torfinn.ingolfsen@broadpark.no> <201102062331.01760.hselasky@c2i.net> <20110207163835.41be5884.torfinn.ingolfsen@broadpark.no>

next in thread | previous in thread | raw e-mail | index | archive | help
Monday 07 of February 2011 16:38:35 Torfinn Ingolfsen napisa=B3(a):
> Hello,
=2E..
> So it seems like this isn't a "delay" type problem.
=46rom these dmesg lines you posted in your first mail it looked that is to=
o=20
short time for kernel to recognize the usb device. I had similar problems o=
n=20
mips RS/RSPRO boards and had to use small patch to make the delay longer. I=
=20
admit that I didn't know of kern.cam.boot_delay that time and haven't tried=
 it=20
on my boards.

I don't know the real author of that patch.
Additionally I'm booting my board using ufs label this way:
ufs:ufs/rootfs


diff --git a/sys/kern/vfs_mountroot.c b/sys/kern/vfs_mountroot.c
index 496ea70..1956419 100644
=2D-- a/sys/kern/vfs_mountroot.c
+++ b/sys/kern/vfs_mountroot.c
@@ -87,6 +87,8 @@ __FBSDID("$FreeBSD$");
=20
 static int parse_mount(char **);
 static struct mntarg *parse_mountroot_options(struct mntarg *, const char =
*);
+static int     mount_root_delay =3D 4;
+TUNABLE_INT("mount_root_delay", &mount_root_delay);
=20
 /*
  * The vnode of the system's root (/ in the filesystem, without chroot
@@ -917,13 +919,17 @@ vfs_mountroot_wait(void)
                PICKUP_GIANT();
                mtx_lock(&mountlist_mtx);
                if (LIST_EMPTY(&root_holds)) {
=2D                       mtx_unlock(&mountlist_mtx);
=2D                       break;
+                       if(0 =3D=3D mount_root_delay--) {
+                               mtx_unlock(&mountlist_mtx);
+                               break;
+                       }
                }
                if (ppsratecheck(&lastfail, &curfail, 1)) {
                        printf("Root mount waiting for:");
                        LIST_FOREACH(h, &root_holds, list)
                                printf(" %s", h->who);
+                               if (LIST_EMPTY(&root_holds))
+                                       printf(" %d=20
secs...",mount_root_delay);
                        printf("\n");
                }
                msleep(&root_holds, &mountlist_mtx, PZERO | PDROP, "roothol=
d",

Regards,
Maciej Milewski



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102071656.11633.milu>