From owner-freebsd-bugs Wed Jan 8 19:10:03 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.4/8.8.4) id TAA21651 for bugs-outgoing; Wed, 8 Jan 1997 19:10:03 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.4/8.8.4) id TAA21638; Wed, 8 Jan 1997 19:10:02 -0800 (PST) Date: Wed, 8 Jan 1997 19:10:02 -0800 (PST) Message-Id: <199701090310.TAA21638@freefall.freebsd.org> To: freebsd-bugs Cc: From: Kazutaka YOKOTA Subject: Re: kern/2409: psm0: unable to set the command byte. psm0 not found at 0x60 Reply-To: Kazutaka YOKOTA Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The following reply was made to PR kern/2409; it has been noted by GNATS. From: Kazutaka YOKOTA To: Mark Schleifer Cc: FreeBSD-gnats-submit@freebsd.org, yokota@zodiac.mech.utsunomiya-u.ac.jp Subject: Re: kern/2409: psm0: unable to set the command byte. psm0 not found at 0x60 Date: Thu, 09 Jan 1997 12:11:18 +0900 >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.) 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. Thank you. Kazu --- 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) {