Re: keyboard repeat speed went nuts since 2.6.0-test5, even in 2.6.0-test6-mm4

From: Jurriaan
Date: Wed Oct 08 2003 - 03:25:23 EST


From: Vojtech Pavlik <vojtech@xxxxxxx>
Date: Tue, Oct 07, 2003 at 10:40:56PM +0200
> On Tue, Oct 07, 2003 at 10:33:16PM +0200, Jurriaan wrote:
> > I like my keyboard fast (must be from playing a lot of angband).
> >
> > In 2.6.0-test5, after '/sbin/kbdrate -r 30 -d 250', I get some 2000
> > characters in a minute (pressing n continuously, stopwatch in hand).
> > In 2.6.0-test6 and 2.6.0-test6-mm4, after '/sbin/kbdrate -r 30 -d 250',
> > I get some 820 characters in a minute.
> >
> > 30 cps != 800/60 s, that's more like half that rate.
> >
> > Booting with or without atkbd_softrepeat=1 on the kernel commandline
> > makes no difference at all.
>
> It's a bug. I have a fix, it went through LKML already, but Linus
> didn't merge it yet. I'll be resending it.
>
> > It's not only the repeat-speed that has gone down, the delay before
> > repeat kicks in is notably slower as well. This is perhaps even more
> > frustrating, but harder to measure :-(
> >
> > This is on a plain Chicony KB-7903 PS/2 keyboard. It is connected via a
> > Vista Rose KVM to a VIA KT400 chipset motherboard.
> >
> > Any patches to test are very welcome here.
>
> Fix attached.
>
Sorry, but that fix is already in 2.6.0-test6-mm4; that's why I tested
that version...

Anyway, I added some printk's like this:

case EV_REP:

printk( KERN_INFO "atkbd: atkbd_softrepeat %d\n", atkbd_softrepeat);
if (atkbd_softrepeat) return 0;

i = j = 0;
while (i < 32 && period[i] < dev->rep[REP_PERIOD]) i++;
while (j < 4 && delay[j] < dev->rep[REP_DELAY]) j++;
dev->rep[REP_PERIOD] = period[i];
dev->rep[REP_DELAY] = delay[j];
printk( KERN_INFO "atkbd: period %d delay %d\n", period[i], delay[j]);
param[0] = i | (j << 5);
atkbd_command(atkbd, param, ATKBD_CMD_SETREP);

return 0;

And even if my command-line for the kernel looks like this:

Kernel command line: root=/dev/md3 video=matroxfb:xres:1600,yres:1360,depth:16,pixclock:4116,left:304,right:64,upper:46,lower:1,hslen
:192,vslen:3,fv:90,hwcursor=off hdb=scsi apm=power-off atkbd_softrepeat=1

I still see this:

:kbdrate -r 50 -d 100
atkbd: atkbd_softrepeat 0
atkbd: period 33 delay 250
atkbd: atkbd_softrepeat 0
atkbd: period 33 delay 250
Typematic Rate set to 30.3 cps (delay = 250 ms)

and I still get only 800 cpm, which means 14 cps or so.
Why it atkbd_softrepeat still 0 with this command-line?

Kind regards,
Jurriaan
--
How should I know if it works? That's what beta testers are for. I
only coded it.
Attributed to Linus Torvalds, somewhere in a posting
Debian (Unstable) GNU/Linux 2.6.0-test6-mm4 4276 bogomips 0.27 0.14
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/