Re: XFree shouldn't access hardware directly errors.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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? */

[Index of Archives]     [X Forum]     [Xorg]     [XFree86 Newbie]     [IETF Announce]     [Security]     [Font Config]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux Kernel]

  Powered by Linux