Re: Wait for console to become available, v3.2

From: Ingo Molnar
Date: Tue Apr 21 2009 - 02:44:26 EST



* David VomLehn <dvomlehn@xxxxxxxxx> wrote:

> Parallelization to improve boot times has been successful enough
> that race conditions now exist between the init_post() open of
> /dev/console and initialization of the console device. When this
> occurs, opening /dev/console fails and any applications inherited
> from init have no standard in/out/error devices. This is expected
> behavior if no console device is available, but quite unfortunate
> in the case where the console is just a bit slow waking up.
>
> Some buses, such as USB, offer no guarantees about how long it
> takes to discover devices, so there is no reliable way to
> distinguish between a missing console and a slow one. The
> pragmatic approach taken in this patch is to wait for a while to
> see if a console shows up, and just go on if it doesn't. The
> default delay is 1000 msec (1 second). This value is conjured out
> of thing air; any suggestions for a value that more closely
> approximates the effective delays from the olden days before USB
> consoles starting failing are more than welcome.

hm, this really seems like a bad hack and a workaround to me and as
such it is not really an acceptable solution.

The proper approach would be to use one of the async_synchronize*()
facilities in kernel/async.c to properly order the opening of the
console with device init.

Certain subsystems like storage (SCSI, libata, mount code and
modules) has already been extended to this scheme.

So i think the right approach, if you want to speed up bootup, would
be to extend the same concepts to console discovery, init and open
methods.

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/