[PATCH] kbdmux(4), atkbd(4) and ddb(4)

Dominique Goncalves dominique.goncalves at gmail.com
Sat Apr 29 18:05:12 UTC 2006


Hi,

On 4/28/06, Maksim Yevmenkin <maksim.yevmenkin at savvis.net> wrote:
> dear hackers,
>
> there were many complains about atkbd(4) not working in ddb(4) with
> kbdmux(4) enabled.
>
> i had a minute of free time and looked into this. it seems to me that
> atkbd(4) is not dealing properly with "polled" mode. after looking at
> the code, i came up with the attached patch.
>
> i did some very brief testing and the patch works for me. atkbd(4) now
> works in ddb(4) and single user mode with kbdmux(4) enabled.
>
> the patch is rather ugly (imo), because it assumes that something will
> call "poll" method repeatedly (which seems like we do it). also, ukbd(4)
> has somewhat similar code.
>
> could someone (with atkbd(4), syscons(4) and ddb(4) fu) please review it
> and tell me if its ok to commit.
>
> also, i would appreciate if someone would perform more extensive testing
> to see if there are any regressions.
>
> thanks,
> max
>
>
> --- atkbd.c.orig        Thu Apr 27 16:29:26 2006
> +++ atkbd.c     Thu Apr 27 16:30:13 2006
> @@ -26,7 +26,7 @@
>   */
>
>  #include <sys/cdefs.h>
> -__FBSDID("$FreeBSD: /repoman/r/ncvs/src/sys/dev/atkbdc/atkbd.c,v 1.47 2005/06/10 20:56:37 marius Exp $");
> +__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbd.c,v 1.47 2005/06/10 20:56:37 marius Exp $");
>
>  #include "opt_kbd.h"
>  #include "opt_atkbd.h"
> @@ -1023,6 +1023,15 @@
>                 ++state->ks_polling;
>         else
>                 --state->ks_polling;
> +
> +       if (state->ks_polling) {
> +               if ((*kbdsw[kbd->kb_index]->lock)(kbd, TRUE)) {
> +                       (*kbdsw[kbd->kb_index]->lock)(kbd, FALSE);
> +                       if ((*kbdsw[kbd->kb_index]->check_char)(kbd))
> +                               (*kbdsw[kbd->kb_index]->intr)(kbd, NULL);
> +               }
> +       }
> +
>         splx(s);
>         return 0;
>  }
>

With your patch, I can use my PS/2 keyboard when I enter into ddb
(with default boot option) and it works also with 'safe mode' (tested
on my p4 box).
But on my p3 box in 'safe mode', some characters are dropped. I don't
know if this a side effect of your patch.

My p3 and p4 both use a Standard PS/2 keyboard.

FreeBSD 7.0-CURRENT #1: Sat Apr 29 18:18:47 CEST 2006
root at djdomics.sceen.net:/usr/obj/share/src/FreeBSD/HEAD/src/sys/FREESBIE

Let me know if you need more information.

Regards.

> _______________________________________________
> freebsd-current at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
>
>


--
There's this old saying: "Give a man a fish, feed him for a day. Teach
a man to fish, feed him for life."


More information about the freebsd-current mailing list