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>