conf/145311: loader.conf can cause boot hang

Garrett Cooper yanefbsd at
Sun Apr 4 06:44:21 UTC 2010

On Sat, Apr 3, 2010 at 11:05 PM, Henry Grebler
<henrygrebler at> wrote:
> Hi Garrett,
> -->    Try the following steps exhibit the same problem:
> -->
> -->- Remove sem_load="YES". Execute `load sem' in the bootloader.
> -->- Empty out loader.conf. Then boot up with the bootloader once again and do:
> -->
> -->load ukbd
> -->load snd_ich
> -->
> -->Please try all of the steps with boot -v to see what happens.


> It doesn't look like module sem is relevant.
> So, both modules snd_ich and ukbd must be loaded to cause the hang.
> Is it possible there is some sort of interaction between them?

    Yes, and that's part of what I was curious about when doing these
tasks. There's some kind of incorrect interaction between ukbd and
snd_ich that's causing a hang on your system.

> 7. I don't know how these things work. When there is no reponse after
> "load sem", does that mean it did not do anything?

    Is sem already loaded? If the module was loaded it would
explicitly say it was loaded. Not sure about POSIX semaphore's module

> I tested this hypothesis: I did:
>        load ukbd
>        load ukbd
> After the first command, I got the usual response
> ("/boot/kernel/ukbd.ko text=..."); but when I repeated it, nothing:
> OK load ukbd
> /boot/kernel/ukbd.ko text=...
> OK load ukbd
> OK
> So, why is the first command loading a file when
> /usr/src/sys/i386/conf/GENERIC has a line to load the driver?
> Here it is:
> device          ukbd            # Keyboard

    I may be incorrect, but the reason why it's doing this instead of
checking is because the kernel hasn't loaded yet, and thus it hasn't
determined that the ukbd module is or is not loaded in the monolithic
kernel image (someone please correct me if I'm wrong). The loader does
actually cache which modules have been loaded though so you can't load
a module twice.

> The man page ukbd(1) says:
>     To compile this driver into the kernel, place the following line
>     in your
>     kernel configuration file:
>           device ukbd

    It can exist in the monolithic kernel image, or outside of the
kernel image as a module; it's up to you how you want to install this.

> -->play OS'. If it's currently disabled, try enabling it. Also, try
> -->disabling SMP to see if that has any affect:
> -->
> -->set machdep.hlt_cpus=1
> Is this relevant for a machine with a single CPU?

    Eh... it wouldn't be in this case. You have to build it without
SMP support :(...
    Another final thing worth trying (if you haven't tried the BIOS
support change I suggested yet), is to boot up the system without
snd_ich, but after the system is booted up try loading snd_ich. Does
the system still freeze up? Also, have you tried loading snd_ich and
ukbd in reverse order, i.e.:

load snd_ich
load ukbd


More information about the freebsd-bugs mailing list