Date: Tue, 09 Apr 2002 22:48:34 -0400 (EDT) From: John Baldwin <jhb@FreeBSD.org> To: Brian Somers <brian@freebsd-services.com> Cc: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/kern kern_linker.c Message-ID: <XFMail.20020409224834.jhb@FreeBSD.org> In-Reply-To: <200204100231.g3A2VEOF005953@hak.lan.Awfulhak.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 10-Apr-2002 Brian Somers wrote: >> On 10-Apr-2002 Brian Somers wrote: >> >> brian 2002/04/09 18:14:45 PDT >> >> >> >> Modified files: >> >> sys/kern kern_linker.c >> >> Log: >> >> In linker_load_module(), check that rootdev != NODEV before calling >> >> linker_search_module(). >> >> >> >> Without this, modules loaded from loader.conf that then try to load >> >> in additional modules (such as digi.ko loading a card's BIOS) die >> >> badly in the vn_open() called from linker_search_module(). >> >> >> >> It may be worth checking (KASSERTing?) that rootdev != NODEV in >> >> vn_open() too. >> >> >> >> Revision Changes Path >> >> 1.88 +5 -3 src/sys/kern/kern_linker.c >> > >> > After these changes, it's possible for digi to find it's BIOS/FEPOS >> > from one of the digi_* modules at boot time - as long as that >> > digi_* module is already available (either built into the kernel or >> > ``loaded'' at boot time). However, digi fails to initialise the >> > card - I think due to tsleep failing... but I'm not sure yet. >> >> tsleep/wakeup don't work during the boot device probe. More >> specifically, interrupt handlers don't run, so you will never get woken >> up. Also, since timeouts aren't working yet the tsleep() won't timeout >> either. Thus, if you try to tsleep() during this time period, tsleep() >> will return immediately. > > Is DELAY() the only alternative ? It seems that if I DELAY(), it has > a rather noticeable effect on the machine (everything seems to lock > up 'till the DELAY()s are done). > > Maybe I should look at having the driver ``test'' tsleep and use > DELAY() instead if it doesn't work ? During boot you want to defer things that depend on interrupts until later like the ATA probe does. DELAY() will basically hang the machine, yes. You can tell if tsleep works or not by testing the 'cold' variable. If it is true, then tsleep doesn't work. -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20020409224834.jhb>