NetBSD Problem Report #21422

Received: (qmail 8197 invoked by uid 605); 1 May 2003 21:40:42 -0000
Message-Id: <m19BLnF-000B3kC@proven.weird.com>
Date: Thu, 1 May 2003 17:40:41 -0400 (EDT)
From: woods@weird.com (Greg A. Woods)
Sender: gnats-bugs-owner@netbsd.org
Reply-To: woods@planix.com (Greg A. Woods)
To: gnats-bugs@gnats.netbsd.org
Subject: 80-pin cable check is broken for ServerWorks CSB5 IDE Controller (rev. 0x93)
X-Send-Pr-Version: 3.95

>Number:         21422
>Category:       kern
>Synopsis:       80-pin cable check is broken for ServerWorks CSB5 IDE Controller (rev. 0x93)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu May 01 21:41:00 +0000 2003
>Closed-Date:    
>Last-Modified:  
>Originator:     Greg A. Woods
>Release:        2003/04/29
>Organization:
Planix, Inc.; Toronto, Ontario; Canada
>Environment:
System: NetBSD proven 1.5R
Architecture: i386
Machine: i386
>Description:

	the 80-pin cable check in src/sys/dev/pci/pciide.c is broken for
	ServerWorks CSB5 IDE Controller (rev. 0x93)

>How-To-Repeat:

	Install NetBSD-1.6R-20030425 on ASUS PR-DLS533 mainboard system
	with UDMA-5 capable disk, such as WDC WD600JB-00CRA1.  Watch it
	attach using only UDMA-2.

>Fix:

	this is a poor hack that simply avoids the issue

Index: pciide.c
===================================================================
RCS file: /cvs/master/m-NetBSD/main/src/sys/dev/pci/pciide.c,v
retrieving revision 1.191
diff -c -r1.191 pciide.c
*** pciide.c	28 Apr 2003 05:20:31 -0000	1.191
--- pciide.c	29 Apr 2003 22:54:02 -0000
***************
*** 5381,5389 ****
--- 5381,5391 ----
  		if ((chp->wdc->cap & WDC_CAPABILITY_UDMA) &&
  		    (drvp->drive_flags & DRIVE_UDMA)) {
  			/* use Ultra/DMA, check for 80-pin cable */
+ #if 0 /* this check fails on at least rev. 0x93 chips.... */
  			if (drvp->UDMA_mode > 2 &&
  			    (PCI_PRODUCT(pci_conf_read(sc->sc_pc, sc->sc_tag, PCI_SUBSYS_ID_REG)) & (1 << (14 + channel))) == 0)
  				drvp->UDMA_mode = 2;
+ #endif
  			dma_time |= dma_modes[drvp->DMA_mode] << (8 * (unit^1));
  			udma_mode |= drvp->UDMA_mode << (4 * unit + 16);
  			udma_mode |= 1 << unit;
>Release-Note:
>Audit-Trail:
>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.