Date: Fri, 28 Jan 2000 10:43:35 +0900 From: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp> To: Mike Smith <msmith@freebsd.org> Cc: Warner Losh <imp@village.org>, Brian Beattie <beattie@aracnet.com>, Bill Fenner <fenner@research.att.com>, rcarter@pinyon.org, current@freebsd.org, yokota@zodiac.mech.utsunomiya-u.ac.jp Subject: Re: Problems installing FreeBSD 4.0 20000125-CURRENT Message-ID: <200001280143.KAA15711@zodiac.mech.utsunomiya-u.ac.jp> In-Reply-To: Your message of "Thu, 27 Jan 2000 16:14:48 PST." <200001280014.QAA03163@mass.cdrom.com> References: <200001280014.QAA03163@mass.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
>> In message <200001272329.PAA02514@mass.cdrom.com> Mike Smith writes: >> : It doesn't do anything to the keyboard, it just calls the BIOS to find >> : out whether keys have been pressed. >> >> I've been seeing the hit <CR> twice fast problem for months. > >It's always been a problem; we don't understand the mechanics of it >however. Susceptibility varies widely between systems, and the best >hypothesis I've been able to come up with is that there are issues with >taking interrupts in vm86 mode; possibly the BIOS is being re-entered in >a fashion it doesn't like. I wonder if the keyboard interrupt is blocked for a prolonged period in the boot loader because of vm86, and quite a number of (up to 16 or something) scan codes are waiting in the keyboard to be received by the host computer, when the kernel is loaded. The keyboard driver atkbd tries to flush pending scan codes, left over from the boot loader, before it starts initializing the keyboard. It may be failing to flush all the pending scan codes if there are too many of them. The following patch will make the driver wait slightly longer to flush inputs. I would like to see if this makes any difference. I should come up with something better this, though... Kazu Index: atkbd.c =================================================================== RCS file: /src/CVS/src/sys/dev/kbd/atkbd.c,v retrieving revision 1.22 diff -u -r1.22 atkbd.c --- atkbd.c 2000/01/20 13:32:53 1.22 +++ atkbd.c 2000/01/28 00:47:27 @@ -1085,7 +1098,7 @@ } /* flush any noise in the buffer */ - empty_both_buffers(kbdc, 10); + empty_both_buffers(kbdc, 200); /* save the current keyboard controller command byte */ m = kbdc_get_device_mask(kbdc) & ~KBD_KBD_CONTROL_BITS; To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001280143.KAA15711>