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