From owner-freebsd-current Mon Dec 21 00:47:48 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id AAA23629 for freebsd-current-outgoing; Mon, 21 Dec 1998 00:47:48 -0800 (PST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from st-lcremean.tidalwave.net (st-lcremean.tidalwave.net [208.213.203.186]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id AAA23621 for ; Mon, 21 Dec 1998 00:47:44 -0800 (PST) (envelope-from lee@st-lcremean.tidalwave.net) Received: (from lee@localhost) by st-lcremean.tidalwave.net (8.9.1/8.8.8) id DAA01169 for current@freebsd.org; Mon, 21 Dec 1998 03:47:41 -0500 (EST) (envelope-from lee) Message-ID: <19981221034741.A958@tidalwave.net> Date: Mon, 21 Dec 1998 03:47:41 -0500 From: Lee Cremeans To: current@FreeBSD.ORG Subject: Acer UDMA status report Reply-To: lcremean@tidalwave.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.93.2i X-OS: FreeBSD 3.0-CURRENT X-Evil: microsoft.com Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I've done some more experimentation, and it seems that what is happening is that reads work just fine (I get 13MB/s sustained from my Seagate Medalist Pro 9140). However, if I do anything that writes to the drive, the interrupt timeouts start. I'm not sure what I'm doing wrong here, since the UDMA switches seem to be set correctly, and while Acer's documentation covers the bits in the registers to set, it doesn't go into detail as to which registers go together, or if there is anything else needed to make UDMA work reliably. PS: I did find a bug in the unit handling for DMA-detected drives. Here goes: *** ide_pci.c Mon Dec 14 00:49:04 1998 --- ide_pci.c.new Mon Dec 21 03:42:10 1998 *************** *** 1195,1201 **** cp = softc.cookies.lh_first; while(cp) { ! if (cp->ctlr == unit && ((iobase_wd == 0) || (cp->iobase_wd == iobase_wd))) break; cp = cp->le.le_next; --- 1253,1259 ---- cp = softc.cookies.lh_first; while(cp) { ! if (cp->unit == unit && ((iobase_wd == 0) || (cp->iobase_wd == iobase_wd))) break; cp = cp->le.le_next; A PR for this will be forthcoming... -- +--------------------------------------------------------------------+ | Lee Cremeans -- Manassas, VA, USA (WakkyMouse on DALnet and WTnet)| | lcremean@tidalwave.net| http://st-lcremean.tidalwave.net | To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message