I think J?rgen mentioned hitting this when he was testing the jumping mouse
issue, and the WOS RE's hit it today on two of their machines testing the
newly built nv_119 images.    It looks like it will hit any machine in which
the path to the PS/2 keyboard & mouse reported when walking the devinfo tree
contains "pci" - I don't know if that basically means all PC's or not, but
there's a simple workaround, and possibly a simple fix.

        -alan-

-------- Original Message --------

*Synopsis*: non-USB mice and keyboards not usable in Xorg after installing 
nvx_119

CR 6861767 changed on Jul 17 2009 by alan.coopersmith at sun.com

=== Field ============ === New Value ============= === Old Value =============

Evaluation             New Note
Status                 5-Cause Known               3-Accepted
====================== =========================== ===========================


*Change Request ID*: 6861767

*Synopsis*: non-USB mice and keyboards not usable in Xorg after installing 
nvx_119

  Product: solaris
  Category: utility
  Subcategory: hal
  Type: Defect
  Subtype:
  Status: 5-Cause Known
  Substatus:
  Priority: 1-Very High
  Introduced In Release:
  Introduced In Build:
  Keywords:

=== *Description* ============================================================
While testing Nevada 119 on a couple of x86 systems with non-Sun mice and 
keyboards,
everything worked fine until after the install was complete and the system 
rebooted.
I was able to type in input before the install started, but after the system
rebooted,
the keyboard and mouse were unresponsive.  I plugged in a USB Sun mouse and 
keyboard
and was able to continue on, but I believe these other devices should still be
supported.

The systems are 'rat', a V60x and 'jetstream-re', a V40z.  Here are the devices
hooked up to them:
rat:
Microsoft IntelliMouse 1.1A PS/2 Compatible mouse
IBM keyboard - Model: KB-9910

jetstream-re:
Logitech mouse - Model: M-S48a
Gateway keyboard - Model: G9900H

Attached are the Xorg.0.logs, Xerrors logs, and output from lshal on each
system.

*** (#1 of 2): 2009-07-17 15:03:30 GMT+00:00

This was introduced in snv_119 by 6855537, in which Xorg switched completely
to HAL to discover input devices.   Unfortunately, HAL in snv_119 is only
reporting USB mice & keyboards as input devices, and not PS/2 mice and 
keyboards.

As can be seen in the following portion of lshal output from these machines,
while HAL recognizes the PS/2 mice & keyboards are there, it is not adding the
info.capabilities property settings of input.mouse and input.keys that
are needed for Xorg to know they are input devices:

udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/keyboard_0_0'
  pci.subsys_product_id = 0  (0x0)  (int)
  pci.subsys_vendor_id = 0  (0x0)  (int)
  pci.product_id = 0  (0x0)  (int)
  pci.vendor_id = 0  (0x0)  (int)
  info.subsystem = 'pci'  (string)
  info.solaris.driver = 'kb8042'  (string)
  solaris.devfs_path = '/pci at 0,0/isa at 1f/i8042 at 1,60/keyboard at 0'  
(string)
  info.product = 'System keyboard'  (string)
  info.udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/keyboard_0_
0'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60_0'  (str
ing)

udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/mouse_1_0'
  pci.subsys_product_id = 0  (0x0)  (int)
  pci.subsys_vendor_id = 0  (0x0)  (int)
  pci.product_id = 0  (0x0)  (int)
  pci.vendor_id = 0  (0x0)  (int)
  info.subsystem = 'pci'  (string)
  info.solaris.driver = 'mouse8042'  (string)
  solaris.devfs_path = '/pci at 0,0/isa at 1f/i8042 at 1,60/mouse at 1'  
(string)
  info.product = 'Logitech PS/2-style Mouse'  (string)
  info.udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/mouse_1_0'
 (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60_0'  (str
ing)

*** (#2 of 2): 2009-07-17 18:26:57 GMT+00:00 alan.coopersmith at sun.com


=== *Public Comments* ========================================================

=== *Comments* ===============================================================
Note that the attached lshal outputs were taken after switching from PS/2 to
USB keyboards/mice so that Wendy could login, and won't show the PS/2 state
of the machine.

*** (#1 of 1): 2009-07-17 18:26:57 GMT+00:00 alan.coopersmith at sun.com


=== *Evaluation* =============================================================
This appears to be because of the order in which HAL runs through the device
handlers when walking the devinfo tree - for these devices, the PCI card handler
is being used, since it's ahead of keyboard and mouse in the probe order and
these devices have pci in their device path:
udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/keyboard_0_0'
udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/mouse_1_0'

This is why lshal shows PCI vendor & subsystem ids for them in the lshal output.

Moving the generic/unknown pci device handler to after the keyboard & mouse 
handlers
causes lshal to show the expected output:

udi =
'/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/keyboard_0_0_logicaldev_input'
  input.x11_options.XkbVariant = ''  (string)
  input.x11_options.XkbLayout = 'us'  (string)
  input.x11_options.XkbModel = 'sun_type6_usb'  (string)
  input.x11_driver = 'kbd'  (string)
  input.x11_options.XkbRules = 'base'  (string)
  input.originating_device = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_
1_60/keyboard_0_0'  (string)
  input.device = '/dev/kbd'  (string)
  info.category = 'input'  (string)
  info.subsystem = 'input'  (string)
  info.capabilities = {'input', 'input.keyboard', 'input.keys', 'button'} (strin
g list)
  info.solaris.driver = 'kb8042'  (string)
  solaris.devfs_path = '/pci at 0,0/isa at 1f/i8042 at 1,60/keyboard at 0'  
(string)
  info.product = 'System keyboard'  (string)
  info.udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/keyboard_0_
0_logicaldev_input'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60_0'  (str
ing)

udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/mouse_1_0_logicald
ev_input'
  input.x11_driver = 'mouse'  (string)
  input.originating_device = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_
1_60/mouse_1_0'  (string)
  input.device = '/dev/mouse'  (string)
  info.category = 'input'  (string)
  info.subsystem = 'input'  (string)
  info.capabilities = {'input', 'input.mouse'} (string list)
  info.solaris.driver = 'mouse8042'  (string)
  solaris.devfs_path = '/pci at 0,0/isa at 1f/i8042 at 1,60/mouse at 1'  
(string)
  info.product = 'Logitech PS/2-style Mouse'  (string)
  info.udi = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60/mouse_1_0_l
ogicaldev_input'  (string)
  info.parent = '/org/freedesktop/Hal/devices/pci_0_0/isa_1f/i8042_1_60_0'  (str
ing)

The diffs for this change is simply:

diff --git a/usr/src/cmd/hal/hald/solaris/devinfo.c
b/usr/src/cmd/hal/hald/solaris/devinfo.c
--- a/usr/src/cmd/hal/hald/solaris/devinfo.c
+++ b/usr/src/cmd/hal/hald/solaris/devinfo.c
@@ -136,12 +136,12 @@
        &devinfo_floppy_handler,
        &devinfo_usb_handler,
        &devinfo_ieee1394_handler,
-       &devinfo_pci_handler,
        &devinfo_lofi_handler,
        &devinfo_acpi_handler,
        &devinfo_power_button_handler,
        &devinfo_keyboard_handler,
        &devinfo_mouse_handler,
+       &devinfo_pci_handler,
        &devinfo_default_handler,
        NULL
 };

I'll leave it up to the hal team to determine if this is the best fix, but
certainly "generic pci card" seems more generic than the other devices, and
the list is supposed to put generic devices later than specific ones.

*** (#1 of 1): 2009-07-17 21:28:21 GMT+00:00 alan.coopersmith at sun.com


=== *Suggested Fix* ==========================================================

=== *Workaround* =============================================================
Tell Xorg to not rely exclusively on HAL for finding input devices
by creating an /etc/X11/xorg.conf file that contains:

Section "ServerFlags"
        Option "AllowEmptyInput" "False"
EndSection


[Add to existing xorg.conf if you already have one.  If you don't have one,
 the above three lines are all you need to have - the rest will be taken from
 default settings in current Xorg releases.]

*** (#1 of 1): 2009-07-17 18:26:57 GMT+00:00 alan.coopersmith at sun.com


=== *Justification* ==========================================================

PS/2 keyboards & mice need to work, especially for laptop users, since most
laptops use PS/2 for the builtin keyboard & trackpad.
alan.coopersmith at sun.com 2009-07-17 18:26:57 GMT

=== *Additional Details* =====================================================
        Targeted Release: solaris_nevada
        Commit To Fix In Build:
        Fixed In Build:
        Integrated In Build:
        Verified In Build:
  See Also: 6778270, 6855537
  Duplicate of:


-- 
        -Alan Coopersmith-           alan.coopersmith at sun.com
         Sun Microsystems, Inc. - X Window System Engineering


Reply via email to