[comp.unix.microport] Console Driver Bug Fix - a kernel object patch

jeff@uf.msc.umn.edu (Jeff Turner) (11/17/88)

I have experienced the keyboard lockup problem, in addition to another problem
which I haven't heard anyone else mention.  That of the driver dropping
characters!  Typing "installit" quickly might result in "intalit".  It has even
dropped the release of the shift key resulting in:  a.out | LESS

I have a Zenith 241 (AT) which functions perfectly under DOS and uport 2.2 .
The problem is probably timing related, but I don't believe anyone's keyboard
is really at fault.  I think the driver violates some protocol, timing spec,
or most likely, re-enables interrupts at the wrong time.

For those of you who have the linkkit and haven't already solved the problem
by replacing the keyboard, I suggest applying the following patch and see
if it fixes it for you.  I have been running with it for a week or so now
and have not experienced any lost characters or keyboard lockups.

What the patch does is to disable the routine that handles updating the LEDs.
It seemed more than a coincidence that whenever the keyboard locked up ctrl-q,
ctrl-s, or noscroll had just been hit.  One thing that sets these keys apart
from others is that pressing them toggles the noscroll-LED.  A fairly new
feature.

As you can see, applying this patch means you can't see when caps-lock is on
or when your output is xoff'ed.  Perhaps someone will find the time to really
fix the problem (rather than bypass it), but until then this may be an
inexpensive work-around.

To patch the driver:

	Extract kd_keyint.o from the linkkit's lib2.

	Save a copy of lib2 - just in case...

	Write a little program to open, lseek, and read 4 bytes (to verify),
	and another little program to open, lseek, and write 4 byte (to patch).

	kd_keyint.o starting @ byte 813 should be:     55 8b ec 9c
	change it to have these starting @ byte 813:   b8 01 00 cb

	Replace kd_keyint.o in lib2.

	Rebuild the kernel.

	Move the kernel to /unix.kbfix and try it out.


Jeff Turner
Minnesota Supercomputer Center Inc.                    An Affiliate of the
jeff@uc.msc.umn.edu                                    University of Minnesota
-- 

Jeff Turner
Minnesota Supercomputer Center Inc.                    An Affiliate of the
jeff@uc.msc.umn.edu                                    University of Minnesota