On Thu, Jan 10, 2013 at 08:56:15AM -0800, Kent Fritz wrote:
> On Wed, Jan 9, 2013 at 5:34 PM, Stefan Sperling <s...@openbsd.org> wrote:
> > Shot in the dark: Does it not hang if you disable the pms driver
> > via boot -c? See the boot_config(8) man page.
> >
> > The RAMDISK_CD kernel doesn't have pms compiled in, and it might be
> > the next thing pckbd0 is trying to initialise in the GENERIC kernel.
> 
> You must have night-vision goggles -- that did the trick.  If there's
> anything I can do to help debug this further, let me know.  Otherwise,
> I'm happy with the workaround.

Can you please try to find out which protocol probe routine is
responsible for hanging the machine?

There is a table of protocols in /usr/src/sys/dev/pckbc/pms.c.
In -current, it looks like this:

        const struct pms_protocol pms_protocols[] = {
                /* Generic PS/2 mouse */
                {
                        PMS_STANDARD, 3,
                        NULL, pms_ioctl_mouse,
                        pms_sync_mouse,
                        pms_proc_mouse,
                        NULL
                },
                /* Microsoft IntelliMouse */
                {
                        PMS_INTELLI, 4,
                        pms_enable_intelli,
                        pms_ioctl_mouse,
                        pms_sync_mouse,
                        pms_proc_mouse,
                        NULL
                },
                /* Synaptics touchpad */
                {
                        PMS_SYNAPTICS, 6,
                        pms_enable_synaptics,
                        pms_ioctl_synaptics,
                        pms_sync_synaptics,
                        pms_proc_synaptics,
                        pms_disable_synaptics
                },
                /* ALPS touchpad */
                {
                        PMS_ALPS, 6,
                        pms_enable_alps,
                        pms_ioctl_alps,
                        pms_sync_alps,
                        pms_proc_alps,
                        NULL
                },
        #ifdef notyet
                /* Elantech touchpad (hardware version 1) */
                {
                        PMS_ELANTECH_V1, 4,
                        pms_enable_elantech_v1,
                        pms_ioctl_elantech,
                        pms_sync_elantech_v1,
                        pms_proc_elantech_v1,
                        NULL
                },
                /* Elantech touchpad (hardware version 2) */
                {
                        PMS_ELANTECH_V2, 6,
                        pms_enable_elantech_v2,
                        pms_ioctl_elantech,
                        pms_sync_elantech_v2,
                        pms_proc_elantech_v2,
                        NULL
                },
        #endif
                /* Elantech touchpad (hardware version 3) */
                {
                        PMS_ELANTECH_V3, 6,
                        pms_enable_elantech_v3,
                        pms_ioctl_elantech,
                        pms_sync_elantech_v3,
                        pms_proc_elantech_v3,
                        NULL
                },
        };

Perhaps start by removing the touchpad protocols first, since
they're most likely to be the cause of this problem.
You could comment out all the touchpad protocols like this:

        const struct pms_protocol pms_protocols[] = {
                /* Generic PS/2 mouse */
                {
                        PMS_STANDARD, 3,
                        NULL, pms_ioctl_mouse,
                        pms_sync_mouse,
                        pms_proc_mouse,
                        NULL
                },
                /* Microsoft IntelliMouse */
                {
                        PMS_INTELLI, 4,
                        pms_enable_intelli,
                        pms_ioctl_mouse,
                        pms_sync_mouse,
                        pms_proc_mouse,
                        NULL
                },
        #if 0   <-- add this here
                /* Synaptics touchpad */
                {

        ...skipping all the lines in-between...

                        pms_sync_elantech_v3,
                        pms_proc_elantech_v3,
                        NULL
                },
        #endif  <-- add this here
        };

If that doesn't hang it, move the #if 0 further down to the next
protocol, and try again.

Note that elantech v1 and elantech v2 are currently disabled
anyway (via #ifdef notyet) because the code hasn't yet been
tested on real hardware. (BTW, in case an eeepc owner is reading
this, you might have such a touchpad, so please try enabling
the v1 and v2 protocols to see if that makes the synaptics
driver attach in X and if the touchpad then works properly).

Once we know which protocol probe routine is causing the
problem we can dig further.

Reply via email to