From owner-freebsd-stable Fri Mar 22 1:35:28 2002 Delivered-To: freebsd-stable@freebsd.org Received: from freebsd.dk (fw-rl0.freebsd.dk [212.242.86.114]) by hub.freebsd.org (Postfix) with ESMTP id 71A7037B417; Fri, 22 Mar 2002 01:35:23 -0800 (PST) Received: (from sos@localhost) by freebsd.dk (8.11.6/8.11.6) id g2M9XGT90073; Fri, 22 Mar 2002 10:33:16 +0100 (CET) (envelope-from sos) From: Søren Schmidt Message-Id: <200203220933.g2M9XGT90073@freebsd.dk> Subject: Re: Is ATA partially broken in -STABLE? In-Reply-To: <200203220914.aa83048@salmon.maths.tcd.ie> To: Ian Dowse Date: Fri, 22 Mar 2002 10:33:16 +0100 (CET) Cc: Jon Larssen , freebsd-stable@freebsd.org, sos@freebsd.org Reply-To: sos@freebsd.dk X-Mailer: ELM [version 2.4ME+ PL94b (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=ISO-8859-1 Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG It seems Ian Dowse wrote: > In message , Jon Larssen writes: > >I have just cvsup'd my -STABLE system running under VMware 3 > >Workstation under Windows 2000. After making world and a > >GENERIC kernel I can't boot into my system. These are the > >messages I get: > > > >ata0-master: timeout waiting for interrupt > >ata0-master: ATA identify failed > >ata1-master: timeout waiting for interrupt > >ata1-master: ATAPI identify failed > > I get something similar with VMware2. The following patch seems to work > for me, but I haven't really investigated the problem. It is the change > in ata_boot_attach() below that actually makes the difference; I think > the ata_attach bit won't affect boot-time probes. Its a known problem, the old way of solving it was: diff -u -r1.50.2.30 ata-all.c --- ata-all.c 2002/03/18 08:37:33 1.50.2.30 +++ ata-all.c 2002/03/21 08:39:59 @@ -1039,13 +1039,14 @@ case ATA_WAIT_INTR: atadev->channel->active |= ATA_WAIT_INTR; + asleep((caddr_t)atadev->channel, PRIBIO, "atacmd", 10 * hz); ATA_OUTB(atadev->channel->r_io, ATA_CMD, command); /* enable interrupt */ if (atadev->channel->flags & ATA_QUEUED) ATA_OUTB(atadev->channel->r_altio, ATA_ALTSTAT, ATA_A_4BIT); - if (tsleep((caddr_t)atadev->channel, PRIBIO, "atacmd", 10 * hz)) { + if (await(PRIBIO, 10 * hz)) { ata_prtdev(atadev, "timeout waiting for interrupt\n"); atadev->channel->active &= ~ATA_WAIT_INTR; error = -1; -Søren To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message