From owner-freebsd-bugs Tue Jan 7 20:20:04 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.4/8.8.4) id UAA11635 for bugs-outgoing; Tue, 7 Jan 1997 20:20:04 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.4/8.8.4) id UAA11625; Tue, 7 Jan 1997 20:20:02 -0800 (PST) Date: Tue, 7 Jan 1997 20:20:02 -0800 (PST) Message-Id: <199701080420.UAA11625@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: FreeBSD-gnats-submit@freebsd.org Cc: marks@digex.net, yokota@zodiac.mech.utsunomiya-u.ac.jp Subject: Re: kern/2409: psm0: unable to set the command byte. psm0 not found at 0x60 Date: Wed, 08 Jan 1997 10:23:25 +0900 >>Number: 2409 >>Category: kern >>Synopsis: psm0: unable to set the command byte. psm0 not found at 0x60 >>Confidential: no >>Severity: serious >>Priority: high >>Responsible: freebsd-bugs >>State: open >>Class: sw-bug >>Submitter-Id: current-users >>Arrival-Date: Tue Jan 7 15:40:03 PST 1997 >>Last-Modified: >>Originator: Mark Schleifer >>Organization: >DIGEX >>Release: FreeBSD 2.2-BETA_A i386 >>Environment: > >DEC HiNote Ultra II Laptop >Pentium 133MHz >32 MB Ram > >>Description: > >On Boot: > >psm0: unable to set the command byte. >psm0 not found at 0x60 The message means that the `psm' driver has difficulty with the keyboard controller, and gives up probing the PS/2 mouse device. As far as the driver is concerned, no PS/2 mouse exists in the system. >Worked under SNAPs and ALPHA. Seems to be root cause of moused and >X crashing system. There recently was a patch to the `psm' driver. It cures system crash occurring when the `psm' driver thinks there is no PS/2 mouse attached, and someone, such as moused or X, tries to open `psm'. (See the end of this mail.) But, this patch doesn't solve the problem of your built-in(?) PS/2 pointing device not detected... BTW, did `moused' work properly to access the PS/2 mouse under SNAPs and ALPHA in your system? How did X access the mouse, directly or via `moused'? >>How-To-Repeat: > >Kernel made with following config file. This file worked with SNAPs and >ALPHA after applying PAO patches. Also tried with PSM_NO_RESET with BETA >but that caused the keyboard to lockup at first input request. PSM_NO_RESET is no longer available in 2.2-BETA, thus, has nothing to do with the keyboard lockup; the lockup which shouldn't be happening *sigh* Did you see any message from the `sc' (syscons) driver on boot? I would also ask you to add options "KBDIO_DEBUG=2" to your config file. With this option `sc' and `psm' drivers will log quite a few messages via `syslogd' on boot and later. The messages are marked with "kbdio: blugh blugh". Kazu -- patch to psm.c --- RCS file: /home/ncvs/src/sys/i386/isa/psm.c,v retrieving revision 1.25.2.3 retrieving revision 1.25.2.4 diff -u -r1.25.2.3 -r1.25.2.4 --- src/sys/i386/isa/psm.c 1996/12/03 10:47:24 1.25.2.3 +++ src/sys/i386/isa/psm.c 1997/01/05 06:34:11 1.25.2.4 @@ -19,7 +19,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: psm.c,v 1.25.2.3 1996/12/03 10:47:24 phk Exp $ + * $Id: psm.c,v 1.25.2.4 1997/01/05 06:34:11 nate Exp $ */ /* @@ -508,6 +508,8 @@ if (unit >= NPSM) return (0); + psm_softc[unit] = NULL; + sc = malloc(sizeof *sc, M_DEVBUF, M_NOWAIT); bzero(sc, sizeof *sc); @@ -745,6 +747,9 @@ int unit = dvp->id_unit; struct psm_softc *sc = psm_softc[unit]; + if (sc == NULL) /* shouldn't happen */ + return (0); + /* initial operation mode */ sc->mode.accelfactor = PSM_ACCEL; sc->mode.protocol = MOUSE_PROTO_PS2; @@ -786,7 +791,7 @@ /* Get device data */ sc = psm_softc[unit]; - if ((sc->state & PSM_VALID) == 0) + if ((sc == NULL) || (sc->state & PSM_VALID) == 0) /* the device is no longer valid/functioning */ return (ENXIO); ioport = sc->addr;