On Sun, Feb 15, 2004 at 04:34:05PM -0500, Dennis Veatch wrote: >On Sunday 15 February 2004 04:28 pm, Scott Gifford wrote: >> Dennis Veatch <dveatch@xxxxxxxxxx> writes: >> > Version XFree86-4.4-0 >> > I'm seeing a number of these kernel errors; >> > >> > Feb 14 18:58:42 sidney kernel: atkbd.c: This is an XFree86 bug. It >> > shouldn't access hardware directly. >> > Feb 14 19:00:58 sidney kernel: atkbd.c: Unknown key released (translated >> > set 2, code 0x7a on isa0060/serio0). >> >> See Vojtech Pavlik's Input Drivers FAQ: >> >> http://kerneltrap.org/comment/reply/2199 >> >> Problem: >> ~~~~~~~ >> >> Kernel reports: >> >> atkbd.c: Unknown key released (translated set 2, code 0x7a on >> isa0060/serio0). atkbd.c: This is an XFree86 bug. It shouldn't access >> hardware directly. >> >> Solution: >> ~~~~~~~~ >> >> Well, the kernel means what it says. XFree86 boldly goes and >> accesses the keyboard controller registers when it starts up. This >> is a bad thing to do, as it can conflict with the kernel using >> these registers at the same time. The kernel spots this and >> complains, and in most cases is not affected by the problem. >> >> So, unless you are an XFree86 developer and can fix X, ignore this >> message. >> >> ----ScottG. > >Yes I know. I should have asked if there are plans to fix it. Does anyone know why the KDKBDREP ioctl fails? Maybe the attached patch would make a difference? David
Index: lnx_kbd.c =================================================================== RCS file: /home/x-cvs/xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c,v retrieving revision 1.5 diff -u -r1.5 lnx_kbd.c --- lnx_kbd.c 4 Nov 2003 03:14:39 -0000 1.5 +++ lnx_kbd.c 16 Feb 2004 00:05:47 -0000 @@ -108,7 +108,7 @@ #endif static int -KDKBDREP_ioctl_ok(int rate, int delay) { +KDKBDREP_ioctl_ok(int fd, int rate, int delay) { #if defined(KDKBDREP) && !defined(__sparc__) /* This ioctl is defined in <linux/kd.h> but is not implemented anywhere - must be in some m68k patches. */ @@ -117,7 +117,7 @@ /* don't change, just test */ kbdrep_s.rate = -1; kbdrep_s.delay = -1; - if (ioctl( 0, KDKBDREP, &kbdrep_s )) { + if (ioctl( fd, KDKBDREP, &kbdrep_s )) { return 0; } @@ -132,7 +132,7 @@ if (kbdrep_s.delay < 1) kbdrep_s.delay = 1; - if (ioctl( 0, KDKBDREP, &kbdrep_s )) { + if (ioctl( fd, KDKBDREP, &kbdrep_s )) { return 0; } @@ -200,7 +200,7 @@ if (pKbd->delay >= 0) delay = pKbd->delay; - if(KDKBDREP_ioctl_ok(rate, delay)) /* m68k? */ + if(KDKBDREP_ioctl_ok(pInfo->fd, rate, delay)) /* m68k? */ return; if(KIOCSRATE_ioctl_ok(rate, delay)) /* sparc? */