From owner-freebsd-hackers@FreeBSD.ORG Thu Dec 4 00:35:45 2003 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CD31C16A4CE for ; Thu, 4 Dec 2003 00:35:45 -0800 (PST) Received: from smtp.covadmail.net (mx05.covadmail.net [63.65.120.65]) by mx1.FreeBSD.org (Postfix) with SMTP id AC6D743FDD for ; Thu, 4 Dec 2003 00:35:43 -0800 (PST) (envelope-from strick@covad.net) Received: (covad.net 26030 invoked from network); 4 Dec 2003 08:35:38 -0000 Received: from unknown (HELO mist.nodomain) (67.101.150.88) by sun-qmail09 with SMTP; 4 Dec 2003 08:35:37 -0000 Received: from mist.nodomain (localhost [127.0.0.1]) by mist.nodomain (8.12.9p2/8.12.9) with ESMTP id hB48ZX0v009506; Thu, 4 Dec 2003 00:35:33 -0800 (PST) (envelope-from dan@mist.nodomain) Received: (from dan@localhost) by mist.nodomain (8.12.9p2/8.12.9/Submit) id hB48ZX0F009505; Thu, 4 Dec 2003 00:35:33 -0800 (PST) (envelope-from dan) Date: Thu, 4 Dec 2003 00:35:33 -0800 (PST) From: Dan Strick Message-Id: <200312040835.hB48ZX0F009505@mist.nodomain> To: freebsd-hackers@FreeBSD.ORG, freebsd-hardware@FreeBSD.ORG cc: dan@mist.nodomain Subject: Incorrect identification of ultra dma ATA cables X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Dec 2003 08:35:45 -0000 I have a couple of ATA133 (UDMA6) disk drives connected to an Intel ICH5 IDE (parallel ATA) controller. My FreeBSD 4.9-release ATA driver limits them to ATA33 (UDMA2) without comment. (I.E. There are no warning messages.) The reason is that when the ata_dmainit() routine reads the PCI config space "IDE I/O Configuration Register" for the IDE controller (offset 0x54, known in the driver as "word54"), it gets nothing but zero bits. In the Intel ICH5 datasheet, bits 4-7 (one for each possible IDE device) are described as: xxx xxx Channel Cable Reporting - R/W. BIOS should program this bit to tell the IDE driver which cable is plugged into the channel. 0 = 40 conductor cable is present 1 = 80 conductor cable is present I tried three different 80 conductor UDMA cables. I examined them carefully. I even checked for correct wiring of the PDIAG/CBLID signal lines with an ohmmeter. My question is this: is the problem likely to be the BIOS failing to correctly set the bits or could something in FreeBSD somehow be incorrectly clearing the bits before the ata_dmainit() routine runs? (I grepped the driver sources for occurrences of 0x54 and found no culprit.) My motherboard is a Gigabyte 8KNXP and the BIOS is an AWARD BIOS, version F8. Dan Strick strick@covad.net