Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Jul 1995 14:35:41 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        dennis@et.htp.com, freebsd-hackers@freebsd.org
Subject:   Re: Booting with no kbd
Message-ID:  <199507050435.OAA16358@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>On 1 machine the system won't even try to load the kernel. With boot manager
>installed it just sits at the prompt and never times out. As soon as the
>keyboard is plugged in it continues ok. Without boot manager it just hangs
>without ever displaying the initial boot: prompt. The machine boots MS-DOS
>OK in the same configuration.

Does DOS + boot manager boot OK?

Which boot manager?  bteasy loops checking the keyboard status and the time
and should time out provided there are no BIOS bugs such as waiting for
the keyboard status when there is no keyboard.

>The other machine loads the kernel ok, but then hangs at the sc0 probe. As
>soon as the kbd is plugged in, it continues.

scprobe() has 2 possibly endless loops:

E1) At the start, to "flush any noise in the buffer".  Perhaps endless noise
is picked up by the unattached-to keyboard socket.  Unlikely.

E2) If `gotack' is reached (for the first character of the ack or for
the following bug) then there is an endless loop if the second character
of the ack never arrives.

and at least 2 logic bugs:

B1) `retries' ends up as -1 if the `while (retries--)' loop is executed the
maximum number of times, but the test for this is `if (!retries)'.

B2) The value read from the keyboard in the loop in B2) is not waited for
so it may be garbage.  Some garbage values would result in E2) being
reached even if B1) is fixed.

On my test system, the keyboard controller apparently responds to the
KB_RESET command with 2 KB_RESEND's when there is no keyboard attached,
so there is no problem.

Bruce



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