Subject: Re: PCVT
To: NetBSD-current Users <current-users@sun-lamp.cs.berkeley.edu>
From: Hellmuth Michaelis <hm@ernie.hcs.de>
List: current-users
Date: 04/04/1994 13:07:25
From the keyboard of Greg L. Tanaka:
> On Sun, 3 Apr 1994, Robert Shady wrote:
> 
> > Okay, I love the support for PCVT, but EVERYTIME I switch VT's I get
> > a SILO OVERFLOW.  Anybody else had this problem?  Is there a fix, or
> > do I have to go back to PC-CONS/SCREEN Combo..
> 
> That is funny... I get that with syscons as well!!

The problem seems to be the same everywhere: when you switch vt's, what 
happens is

	- protect against irq's by doing spltty()
	- copy video memory to kernel memory (old vt)
	- copy kernel memory to video memory (new vt)
	- release protection by doing splx()

The protection is neccesary to protect against keyboard interrupts while
copying memory, obviously this also masks serial port interrupts which is
the cause of the sio overflow problem.

The problem can be solved in two ways, first, drop the spltty/splx pair and
disable keyboard interrupts by reconfiguring the 8042 keyboard controller
on the mainboard. I avoided this because it creates one more piece of code
which accesses the @#$%^&-keyboard area ....

A second solution could be to create a (new ?) splkbd() routine, which just
disables the keyboard irq so serial interrupts can be processed while switching
vt's. Perhaps someone with more insight and understanding of the interrupt
system can comment on this !

hellmuth
-- 
Hellmuth Michaelis                                              hm@ernie.hcs.de

------------------------------------------------------------------------------