From owner-freebsd-stable Sun Apr 12 19:49:03 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id TAA16193 for freebsd-stable-outgoing; Sun, 12 Apr 1998 19:49:03 -0700 (PDT) (envelope-from owner-freebsd-stable@FreeBSD.ORG) Received: from tokyonet-entrance.astec.co.jp (tokyonet-entrance.astec.co.jp [202.239.16.2]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id TAA16187 for ; Sun, 12 Apr 1998 19:48:53 -0700 (PDT) (envelope-from junichi@astec.co.jp) Received: from amont.astec.co.jp (amont.astec.co.jp [172.20.10.1]) by tokyonet-entrance.astec.co.jp (8.8.8+2.7Wbeta7/3.6W-astecMX2.3) with ESMTP id LAA05378; Mon, 13 Apr 1998 11:48:46 +0900 (JST) Received: from kamui.astec.co.jp (kamui.astec.co.jp [172.20.10.5]) by amont.astec.co.jp (8.7.6/3.6W-astecMX2.4) with ESMTP id LAA02809; Mon, 13 Apr 1998 11:48:44 +0900 (JST) Received: (from junichi@localhost) by kamui.astec.co.jp (8.8.5/3.5W-solaris1-1.2) id LAA01315; Mon, 13 Apr 1998 11:48:43 +0900 (JST) Message-Id: <199804130248.LAA01315@kamui.astec.co.jp> To: jeays@statcan.ca Cc: freebsd-stable@FreeBSD.ORG, junichi@astec.co.jp Subject: Re: ATAPI Zip drive In-Reply-To: Your message of "Tue, 31 Mar 1998 17:32:21 +0900" References: <199803310832.RAA24379@tamtam.astec.co.jp> X-Mailer: Mew version 1.06 on Emacs 19.34.1, Mule 2.3 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Apr_13_11:48:40_1998)--" Date: Mon, 13 Apr 1998 11:48:43 +0900 From: Satoh Junichi Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk ----Next_Part(Mon_Apr_13_11:48:40_1998)-- Content-Type: Text/Plain; charset=us-ascii > > When I attempt to mount either the CD-ROM or the ZIP drive, mount > > hangs, and I have to interrupt it with ctrl-C. If I do this > > a second time, the system crashes. (X stops. Attempts to > > log on through another tty don't work - characters entered after > > the login prompt just get echoed to the screen. It is big red > > switch time!) > > Hmm... I don't know why. I tested some combination of ATAPI devices, CD-ROM, ZIP and LS-120, on an IDE channel. I found the kernel is down by combination of the 'accel' and the 'intr' devices. For example, MATSUSHITA x24 CD-ROM drive and IOMEGA ZIP drive: =========================================================================== wdc1: unit 0 (atapi): , removable, accel, dma, iordis ^^^^^ wdc1: unit 1 (atapi): , removable, intr, ^^^^ =========================================================================== Now, when one device supports the 'intr', the atapi driver also supports it. It's not correct. The driver should *NOT* support it when the other device doesn't support it. I made a patch against the 2.2.6R atapi driver. After apply it, any combinations are acceptable. --- Junichi ----Next_Part(Mon_Apr_13_11:48:40_1998)-- Content-Type: Text/Plain; charset=us-ascii diff -r -c isa.ORG/atapi.c isa/atapi.c *** isa.ORG/atapi.c Sat Jan 17 07:28:42 1998 --- isa/atapi.c Sun Apr 12 17:10:54 1998 *************** *** 218,229 **** switch (ap->drqtype) { case AT_DRQT_MPROC: ata->slow = 1; break; case AT_DRQT_INTR: printf (", intr"); ata->intrcmd = 1; break; ! case AT_DRQT_ACCEL: printf (", accel"); break; default: printf (", drq%d", ap->drqtype); } /* When 'slow' is set, clear 'intrcmd' */ if (ata->slow) ata->intrcmd = 0; /* overlap operation supported */ if (ap->ovlapflag) --- 218,235 ---- switch (ap->drqtype) { case AT_DRQT_MPROC: ata->slow = 1; break; case AT_DRQT_INTR: printf (", intr"); ata->intrcmd = 1; break; ! case AT_DRQT_ACCEL: printf (", accel"); ata->accel = 1; break; default: printf (", drq%d", ap->drqtype); } /* When 'slow' is set, clear 'intrcmd' */ if (ata->slow) ata->intrcmd = 0; + + /* When 'accel' and 'intrcmd' are set, clear 'intrcmd' and set 'slow' */ + if (ata->accel && ata->intrcmd) { + ata->intrcmd = 0; + ata->slow = 1; + } /* overlap operation supported */ if (ap->ovlapflag) diff -r -c isa.ORG/atapi.h isa/atapi.h *** isa.ORG/atapi.h Sat Jan 17 07:28:42 1998 --- isa/atapi.h Sun Apr 12 17:12:37 1998 *************** *** 234,239 **** --- 234,240 ---- u_char cmd16 : 1; /* 16-byte command flag */ u_char intrcmd : 1; /* interrupt before cmd flag */ u_char slow : 1; /* slow reaction device */ + u_char accel : 1; /* accell reaction device */ u_char attached[2]; /* units are attached to subdrivers */ struct atapi_params *params[2]; /* params for units 0,1 */ struct atapicmd *queue; /* queue of commands to perform */ ----Next_Part(Mon_Apr_13_11:48:40_1998)---- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message