Date: Tue, 27 May 2008 14:28:26 -0700 From: "Maksim Yevmenkin" <maksim.yevmenkin@gmail.com> To: rick-freebsd@kiwi-computer.com Cc: freebsd-hackers@freebsd.org, Jeremy Chadwick <koitsu@freebsd.org>, Fraser Tweedale <frase@frase.id.au> Subject: Re: temporary freezes when pressing capslock / numlock Message-ID: <bb4a86c70805271428v60e997cal9e578ea04ca0271e@mail.gmail.com> In-Reply-To: <20080527210158.GB81555@keira.kiwi-computer.com> References: <48378DA0.8040506@frase.id.au> <20080524201633.GA81364@eos.sc1.parodius.com> <20080527041236.GB68298@keira.kiwi-computer.com> <20080527051109.GA26502@eos.sc1.parodius.com> <20080527054842.GA69670@keira.kiwi-computer.com> <bb4a86c70805271034y5472efadsf239fac2995161e0@mail.gmail.com> <20080527194554.GA79741@keira.kiwi-computer.com> <bb4a86c70805271332l7d0424dau1e498e41f2c92a6b@mail.gmail.com> <20080527210158.GB81555@keira.kiwi-computer.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 5/27/08, Rick C. Petty <rick-freebsd@kiwi-computer.com> wrote: > On Tue, May 27, 2008 at 01:32:10PM -0700, Maksim Yevmenkin wrote: > > [...] > > i suspect that because physical ps2 keyboard is not actually > > present, the atkbd driver will have to timeout while talking to > > non-present hardware. > > Sure, but this timeout shouldn't be ~0.4 seconds. I believe the spec says > the maximum wait period to tell if the device is nonresponsive is around or > less than 20ms. Certainly, blocking the entire kernel for the timeout is a > bad thing, especially since the driver should make full use of the > asynchronous onboard keyboard controller. well, i just took a brief look at atkbd(4). specifically one function - wait_while_controller_busy(). this function polls status every KBDC_DELAYTIME (20) usec with retry count of 5000. so, just this function alone can give up to 100 msec delay. keep in mind that wait_while_controller_busy() is apparently called every time driver need to talk to the hardware. i can see how we could delay kernel for 400 msec or even more. > > so, as a suggestion, please try to specify 0x1 flag to atkbd, i.e. from atkbd(4) > > ... > > > > and see if this helps. you wont be able to "hot plug" ps2 keyboards, > > but i suspect you probably can live without it. > > I'm almost certain this will help, but I believe this shouldn't be the > answer to this problem. There's no reason atkbdc(4) should block the > entire kernel for any appreciable amount of time. agree. all i was trying to say is that kbdmux is only as good as underlying low level keyboard drivers. if a low level keyboard driver uses completely synchronous approach to poll the hardware, there is not much kbdmux can do about it. thanks, max
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c70805271428v60e997cal9e578ea04ca0271e>