From owner-freebsd-amd64@FreeBSD.ORG Sun Feb 8 10:46:11 2004 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8654916A4CE; Sun, 8 Feb 2004 10:46:11 -0800 (PST) Received: from bigtex.jrv.org (rrcs-sw-24-73-246-106.biz.rr.com [24.73.246.106]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2A29F43D1D; Sun, 8 Feb 2004 10:46:11 -0800 (PST) (envelope-from james@bigtex.jrv.org) Received: from bigtex.jrv.org (localhost [127.0.0.1]) by bigtex.jrv.org (8.12.1/8.12.1) with ESMTP id i18IkAo8000262 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO); Sun, 8 Feb 2004 12:46:10 -0600 (CST) Received: (from james@localhost) by bigtex.jrv.org (8.12.1/8.12.1/Submit) id i18IkA81000259; Sun, 8 Feb 2004 12:46:10 -0600 (CST) Date: Sun, 8 Feb 2004 12:46:10 -0600 (CST) Message-Id: <200402081846.i18IkA81000259@bigtex.jrv.org> From: James Van Artsdalen To: obrien@freebsd.org In-reply-to: <20040202095652.GA25017@dragon.nuxi.com> (obrien@freebsd.org) References: <20040202095652.GA25017@dragon.nuxi.com> cc: freebsd-amd64@freebsd.org Subject: Re: SiImg 3114 was: (FWD) FreeBSD 5.2.1-RC available X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Feb 2004 18:46:11 -0000 > Date: Mon, 2 Feb 2004 01:56:52 -0800 > From: "David O'Brien" > > Note 5.2.1 also adds the Silicon Image 3114 SATA support needed to > install on a SATA drive in many Opteron systems. Is anyone else having trouble with this? The 3114 is found no problem but the drive is not seen. The culprit may be this code in ata_reset(). It does not recognize any drive unless (err & 0x7f) == ATA_E_ILI is true immediately after BUSY is deasserted, which isn't the case for me (and definitely isn't true for older ATA disks; could this be a typo of some kind?). stat0 = ATA_IDX_INB(ch, ATA_STATUS); if (bootverbose) ata_printf(ch, ATA_MASTER, "stat=0x%02x err=0x%02x lsb=0x%02x msb=0x%02x\n", stat0, err, lsb, msb); if (!(stat0 & ATA_S_BUSY)) { if ((err & 0x7f) == ATA_E_ILI) { if (lsb == ATAPI_MAGIC_LSB && msb == ATAPI_MAGIC_MSB) { ch->devices |= ATA_ATAPI_MASTER; } else if (stat0 & ATA_S_READY) { ch->devices |= ATA_ATA_MASTER; } } else if ((stat0 & 0x4f) && err == lsb && err == msb) { stat0 |= ATA_S_BUSY; }