Date: Sat, 29 Apr 2006 20:05:10 +0200 From: "Dominique Goncalves" <dominique.goncalves@gmail.com> To: "Maksim Yevmenkin" <maksim.yevmenkin@savvis.net> Cc: freebsd-current@freebsd.org Subject: Re: [PATCH] kbdmux(4), atkbd(4) and ddb(4) Message-ID: <7daacbbe0604291105h1ad03c78w428dc770b38bc542@mail.gmail.com> In-Reply-To: <44515720.8020908@savvis.net> References: <44515720.8020908@savvis.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, On 4/28/06, Maksim Yevmenkin <maksim.yevmenkin@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 20= 05/06/10 20:56:37 marius Exp $"); > +__FBSDID("$FreeBSD: src/sys/dev/atkbdc/atkbd.c,v 1.47 2005/06/10 20:56:3= 7 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@djdomics.sceen.net:/usr/obj/share/src/FreeBSD/HEAD/src/sys/FREESBIE Let me know if you need more information. Regards. > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@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."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7daacbbe0604291105h1ad03c78w428dc770b38bc542>