Subject: Re: Ancient disk no longer probes correctly
To: Dave Huang <khym@bga.com>
From: Charles M. Hannum <mycroft@mit.edu>
List: port-i386
Date: 05/09/1998 00:40:34
> wd1 at wdc0 drive 1: <MICROSCIENCE>
> wd1: using 1-sector 16-bit pio transfers, lba mode
> wd1: 13348MB, 27337054 sec, 512 bytes/sec

What this means is that there's an error in the ATA/ATAPI-4 spec.
*sigh*

Could I get you to boot a kernel with the following additional change
on the same machine, and tell me what it outputs?  It would help a lot
in determining which way to work around this problem.


Index: wd.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ata/wd.c,v
retrieving revision 1.173
diff -c -2 -r1.173 wd.c
*** wd.c	1998/04/26 06:03:23	1.173
--- wd.c	1998/05/09 04:41:49
***************
*** 223,233 ****
--- 223,241 ----
  		      WDC_CAPABILITY_DATA32) == 0 ? 16 : 32);
  
+ 	printf("XXX config=%04x, capabilities=%04x,%04x, ataversion=%04x\n",
+ 	    d_link->sc_params.wdp_config,
+ 	    d_link->sc_params.wdp_capabilities1,
+ 	    d_link->sc_params.wdp_capabilities2,
+ 	    d_link->sc_params.wdp_ataversion);
+ 
  	/* Prior to ATA-4, LBA was optional. */
  	if ((d_link->sc_params.wdp_capabilities1 & WD_CAP_LBA) != 0)
  		d_link->sc_flags |= WDF_LBA;
+ #if 0
  	/* ATA-4 requires LBA. */
  	if (d_link->sc_params.wdp_ataversion != 0xffff &&
  	    d_link->sc_params.wdp_ataversion >= WD_VER_ATA4)
  		d_link->sc_flags |= WDF_LBA;
+ #endif
  
  	if ((d_link->sc_flags & WDF_LBA) != 0) {