From owner-freebsd-hackers Wed Jul 5 07:46:47 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id HAA25554 for hackers-outgoing; Wed, 5 Jul 1995 07:46:47 -0700 Received: from mail.htp.com (mail.htp.com [199.171.4.2]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id HAA25546 for ; Wed, 5 Jul 1995 07:46:44 -0700 Received: from et.htp.com (et.htp.com [199.171.4.228]) by mail.htp.com (8.6.5/8.6.5) with SMTP id KAA12288 for ; Wed, 5 Jul 1995 10:45:16 -0400 Date: Wed, 5 Jul 1995 10:45:16 -0400 Message-Id: <199507051445.KAA12288@mail.htp.com> X-Sender: dennis@mail.htp.com X-Mailer: Windows Eudora Version 2.0.3 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: freebsd-hackers@freebsd.org From: dennis@et.htp.com (dennis) Subject: Re: Booting with no kbd Sender: hackers-owner@freebsd.org Precedence: bulk >>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? > I don't have a dos partition on this machine, but I can boot from a floppy so the system will boot with no keyboard installed. Any suggestions for a hack to make this work? Which particular module is involved? >>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. > I'll test this and see what I find. thanks, dennis