Skip site navigation (1)Skip section navigation (2)
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>