>I've noticed some odd syscons keyboard behaviour over the past
>month or so.  Sometimes I get a vty that outputs PC graphics characters
>for all of my input.  This is always at a "login:" prompt.  I think
>I can duplicate this by typing a bunch of garbage at a login prompt,
>but I don't feel like trying to test it right now and have to
>reboot my main machine.
[...]
>I think this might be some kind of timing problem.  I was starting
>to type in my username right away when I saw the boot was finishing,
>and if I recall the past incidents correctly, I may have been
>doing the same thing.
>
>I've seen this probably 4 or 5 times in the past month, maybe
>6 weeks.  Anyone have any ideas what is going on?

It appears that if you hit the keyboard before (at the boot loader
prompt or during the kernel is probing devices) or while the keyboard
driver is being initialized, you may see the problem.

The keyboard driver does try to flush keyboard input before it
manipulates the keyboard controller and the keyboard, but apparently it
is sometimes confused.

# One possible explanation for this failure of keyboard flushing is
# that the clock or timer calibration is not correctly done and I/O
# delay is not working properly.  Well, I am not sure, though...

I have no idea why this is cropping up now, rather than before...  The
AT keyboard driver has unchanged for some time.  Yes, there has been
some commits in the past couple of months, but they don't change the
basic operation of the driver.

Would you please try the following patch for /sys/dev/kbd/atkbd.c and
see how it fares?

Kazu

Index: atkbd.c
===================================================================
RCS file: /src/CVS/src/sys/dev/kbd/atkbd.c,v
retrieving revision 1.13
diff -u -r1.13 atkbd.c
--- atkbd.c     1999/08/15 06:06:14     1.13
+++ atkbd.c     1999/08/19 12:08:22
@@ -1154,7 +1189,7 @@
        }
 
        /* save the current controller command byte */
-       empty_both_buffers(kbdc, 10);
+       empty_both_buffers(kbdc, 200);
        c = get_controller_command_byte(kbdc);
        if (c == -1) {
                /* CONTROLLER ERROR */


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to