Date: Thu, 9 Jan 1997 08:30:03 -0800 (PST) From: Mark Schleifer <marks@roto.digex.net> To: freebsd-bugs Subject: Re: kern/2409: psm0: unable to set the command byte. psm0 not found at 0x60 Message-ID: <199701091630.IAA08141@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/2409; it has been noted by GNATS.
From: Mark Schleifer <marks@roto.digex.net>
To: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
Cc: Mark Schleifer <marks@roto.digex.net>, FreeBSD-gnats-submit@freebsd.org
Subject: Re: kern/2409: psm0: unable to set the command byte. psm0 not found
at 0x60
Date: Thu, 9 Jan 1997 11:23:27 -0500 (EST)
On 1/9/1997 (12:11:18 +0900), Kazutaka YOKOTA wrote:
]
] >w/ kernel.GENERIC:
] >
] >psm0 enabled in the kernel: System boots but doesn't take anything I
] > type. I have to powercycle after boot to
] > get out.
] >psm0 disabled in the kernel: System works OK unless something tries to
] > open psm0.
] >
] >w/ config OTOR-SCSI (the one sent in with the bug report):
] >
] >psm0 enabled in the kernel: System works OK unless something tries to
] > open psm0.
] >
] >w/ config OTOR-SCSI + PSM_NO_RESET:
] >
] >psm0 enabled in the kernel: System boots but doesn't take anything I
] > type. I have to powercycle after boot to
] > get out.
] >
] [...]
] >Jan 8 09:03:03 otor /kernel: Probing for devices on the ISA bus:
] >Jan 8 09:03:03 otor /kernel: kbdio: RESET_KBD return code:00fa
] >Jan 8 09:03:04 otor /kernel: kbdio: RESET_KBD status:00aa
] >Jan 8 09:03:04 otor /kernel: sc0 at 0x60-0x6f irq 1 on motherboard
] >Jan 8 09:03:04 otor /kernel: sc0: VGA color <16 virtual consoles, flags=0x0>
] >[...]
] >Jan 8 09:03:04 otor /kernel: kbdio: TEST_AUX_PORT status:0000
] >Jan 8 09:03:04 otor /kernel: kbdio: RESET_AUX return code:00fa
] >Jan 8 09:03:04 otor /kernel: kbdio: RESET_AUX status:00aa
] >Jan 8 09:03:04 otor /kernel: kbdio: RESET_AUX ID:0000
] >Jan 8 09:03:04 otor /kernel: psm0: unable to set the command byte.
] >Jan 8 09:03:04 otor /kernel: psm0 not found at 0x60
]
] I see... The probe routine of the `psm' driver successfully reset the
] PS/2 mouse, but somehow the driver failed to talk to the keyboard
] controller just before finishing the probe. This is a nasty problem.
]
] Something went wrong after the device reset. I would be very grateful
] if you could take the following steps to narrow down the problem area.
]
] 1. Add the following #define to the top of /usr/src/sys/i386/isa/psm.c.
] #define PSM_DEBUG 2
] Recompile the kernel, reboot the system, and see what it gives.
] There will be a lot of messages. Please examine `dmesg' output,
] if possible, as well as `syslogd' output, (Some messages are logged
] under kern.err.)
Well, I did this and the messages did increase...And psm0 was found
and operates correctly. I was able to run X with no trouble.
Jan 9 10:20:18 otor /kernel: psm0: current command byte:0047
Jan 9 10:20:18 otor /kernel: kbdio: TEST_AUX_PORT status:0000
Jan 9 10:20:18 otor /kernel: kbdio: RESET_AUX return code:00fa
Jan 9 10:20:18 otor /kernel: kbdio: RESET_AUX status:00aa
Jan 9 10:20:18 otor /kernel: kbdio: RESET_AUX ID:0000
Jan 9 10:20:18 otor /kernel: psm: ENABLE_DEV return code:00fa
Jan 9 10:20:19 otor /kernel: psm: DISABLE_DEV return code:00fa
Jan 9 10:20:19 otor /kernel: psm: SEND_AUX_STATUS return code:00fa
Jan 9 10:20:19 otor /kernel: psm0: status after reset 00 02 64
Jan 9 10:20:19 otor /kernel: psm: SEND_DEV_ID return code:00fa
Jan 9 10:20:19 otor /kernel: psm: device ID: 0000
Jan 9 10:20:19 otor /kernel: psm: SET_RESOLUTION (0) 00fa
Jan 9 10:20:19 otor /kernel: psm: SET_SCALING11 return code:00fa
Jan 9 10:20:19 otor last message repeated 2 times
Jan 9 10:20:19 otor /kernel: psm: SEND_AUX_STATUS return code:00fa
Jan 9 10:20:19 otor /kernel: psm: status 00 00 64 (get_mouse_buttons)
Jan 9 10:20:19 otor /kernel: psm: SET_SAMPLING_RATE (100) 00fa
Jan 9 10:20:19 otor /kernel: psm: SET_RESOLUTION (2) 00fa
Jan 9 10:20:19 otor /kernel: psm: SET_SCALING11 return code:00fa
Jan 9 10:20:19 otor /kernel: psm: SET_STREAM_MODE return code:00fa
Jan 9 10:20:19 otor /kernel: psm: SEND_AUX_STATUS return code:00fa
Jan 9 10:20:19 otor /kernel: psm0: status 00 02 64
Jan 9 10:20:19 otor /kernel: psm0 at 0x60-0x64 irq 12 on motherboard
Jan 9 10:20:19 otor /kernel: psm0: device ID 0, 2 buttons?
And when I ran X:
Jan 9 10:23:06 otor /kernel: psm: ENABLE_DEV return code:00fa
Jan 9 10:23:06 otor /kernel: psm: SEND_AUX_STATUS return code:00fa
Jan 9 10:23:06 otor /kernel: psm0: status 20 02 64
Jan 9 10:23:15 otor /kernel: psm: button 4 down (0000) (mkps2)
Jan 9 10:23:26 otor last message repeated 167 times
Jan 9 10:23:26 otor /kernel: psm: button 4 down (0001) (mkps2)
Jan 9 10:23:29 otor last message repeated 69 times
Jan 9 10:23:29 otor /kernel: psm: button 4 down (0000) (mkps2)
Jan 9 10:23:29 otor /kernel: psm: DISABLE_DEV return code:00fa
Jan 9 10:23:29 otor /kernel: psm0: failed to disable the aux port (psmclose).
I rebooted twice just to be sure everything worked. Then I removed
the #define and rebooted. The problem returned as expected
] 2. Apply the following patch to `psm.c' and see if it works. The patch
] reduces the amount of interaction between the driver and the keyboard
] controller, and uses less variety of mouse commands, thus, there should
] be less chance of communication failure.
I added your patch without the '#define PSM_DEBUG 2' (since that by
itself avoids the problem) and the the problem was still there:
kbdio: TEST_AUX_PORT status:0000
kbdio: RESET_AUX return code:00fa
kbdio: RESET_AUX status:00aa
kbdio: RESET_AUX ID:0000
psm0: unable to set the command byte.
psm0 not found at 0x60
What's next to try? Also, do you want be to remove the patch below
before the next test?
- Mark
]
] --- psm.c.orig Sat Jan 4 11:54:32 1997
] +++ psm.c Thu Jan 9 11:15:48 1997
] @@ -695,6 +695,7 @@
]
] /* set mouse parameters */
] /* FIXME:XXX should we set them in `psmattach()' rather than here? */
] +#if 0
] if (setparams) {
] if (sc->mode.rate > 0)
] sc->mode.rate = set_mouse_sampling_rate(ioport, sc->mode.rate);
] @@ -705,6 +706,11 @@
] /* FIXME:XXX I don't know if these parameters are reasonable */
] set_mouse_scaling(ioport); /* 1:1 scaling */
] set_mouse_mode(ioport); /* stream mode */
] +#else
] + i = send_aux_command(ioport, 0x00f6);
] + if (verbose)
] + log(LOG_DEBUG, "psm%d: SET_DEFAULT return code:%04x\n", unit, i);
] +#endif
]
] /* just check the status of the mouse */
] if (verbose) {
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701091630.IAA08141>
