Subject: Re: kern/25659
To: John Refling <refling@stanfordalumni.org>
From: Manuel Bouyer <bouyer@antioche.eu.org>
List: netbsd-bugs
Date: 06/19/2005 20:22:54
--Qxx1br4bt0+wmkIi
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sat, Jun 18, 2005 at 02:08:05PM -0700, John Refling wrote:
> 
>   I also have a "superdisk" which has an ide
> controller connected to the usb port... the
> controller is detected, but the drives are
> not... wonder if this is a similar issue...
> some delays need to be added somewhere.

Could be, if so the attached patch should make it work. Not the right fix,
but I don't know if we can tsleep in this part of the code.

-- 
Manuel Bouyer <bouyer@antioche.eu.org>
     NetBSD: 26 ans d'experience feront toujours la difference
--

--Qxx1br4bt0+wmkIi
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=diff

Index: umass_isdata.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass_isdata.c,v
retrieving revision 1.13
diff -u -r1.13 umass_isdata.c
--- umass_isdata.c	20 Aug 2004 23:26:54 -0000	1.13
+++ umass_isdata.c	19 Jun 2005 18:22:10 -0000
@@ -220,6 +220,7 @@
 	adev.adev_drv_data = &scbus->sc_drv_data;
 	scbus->sc_drv_data.drive_flags = DRIVE_ATA;
 	scbus->sc_drv_data.chnl_softc = sc;
+	delay(1000000);
 	scbus->base.sc_child = config_found(&sc->sc_dev, &adev, uwdprint);
 
 	return (0);
Index: umass_scsipi.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass_scsipi.c,v
retrieving revision 1.24
diff -u -r1.24 umass_scsipi.c
--- umass_scsipi.c	21 Feb 2005 00:29:08 -0000	1.24
+++ umass_scsipi.c	19 Jun 2005 18:22:10 -0000
@@ -138,6 +138,8 @@
 	DPRINTF(UDMASS_USB, ("%s: umass_attach_bus: SCSI\n",
 			     USBDEVNAME(sc->sc_dev)));
 
+	delay(1000000);
+
 	sc->sc_refcnt++;
 	scbus->base.sc_child =
 	    config_found(&sc->sc_dev, &scbus->sc_channel, scsipiprint);
@@ -165,6 +167,8 @@
 	DPRINTF(UDMASS_USB, ("%s: umass_attach_bus: ATAPI\n",
 			     USBDEVNAME(sc->sc_dev)));
 
+	delay(1000000);
+
 	sc->sc_refcnt++;
 	scbus->base.sc_child =
 	    config_found(&sc->sc_dev, &scbus->sc_channel, scsipiprint);

--Qxx1br4bt0+wmkIi--