NetBSD Problem Report #25440

Received: (qmail 24934 invoked by uid 605); 2 May 2004 22:44:51 -0000
Message-Id: <20040502204206.CE8DCABD1A@kurtz.klockrike.net>
Date: Sun,  2 May 2004 22:42:06 +0200 (CEST)
From: mer@klockrike.net
Sender: gnats-bugs-owner@NetBSD.org
Reply-To: mer@klockrike.net
To: gnats-bugs@gnats.NetBSD.org
Cc: mer@klockrike.net
Subject: Support for iRiver IFP-3xx flash MP3 players
X-Send-Pr-Version: 3.95

>Number:         25440
>Category:       kern
>Synopsis:       Open of the umass sd disk on iRiver flash players hangs
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    kern-bug-people
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun May 02 22:45:00 +0000 2004
>Closed-Date:    Sun Aug 14 22:51:00 +0000 2011
>Last-Modified:  Sun Aug 14 22:51:00 +0000 2011
>Originator:     Michael Eriksson
>Release:        NetBSD 1.6ZK
>Organization:
>Environment:
System: NetBSD kurtz 1.6ZK NetBSD 1.6ZK (KURTZ) #0: Sun Feb 22 12:53:04 CET 2004 mer@killy:/usr/src/sys/arch/i386/compile/KURTZ i386
Architecture: i386
Machine: i386
>Description:

Opening the umass sd disk of my iRiver iFP-390T flash-based MP3-player
hangs. This most likely applies also to other players in the iFP-3xx
series, and probably to other iRiver players as well. Only the iFP-3xx
series is included in the patch below; feedback from users of other
iRiver players should be collected, and the fix extended to include
them if needed.

>How-To-Repeat:

Try this on your iRiver iFP-390T:

datan# mount -t msdos /dev/sd0d /mnt

...and watch it just hang.

>Fix:

The hang at device open is caused by the iRiver iFP-390T's inability
to handle the PREVENT_ALLOW SCSI command. The patch below adds a new
quirk, and sets it for the iFP-3xx series.


Index: src/sys/dev/scsipi/scsipiconf.h
===================================================================
RCS file: /cvsroot/src/sys/dev/scsipi/scsipiconf.h,v
retrieving revision 1.80
diff -u -r1.80 scsipiconf.h
--- scsipiconf.h	2003/09/18 00:06:34	1.80
+++ scsipiconf.h	2004/05/02 20:38:27
@@ -456,6 +456,7 @@
 #define PQUIRK_CAP_SYNC		0x00080000	/* SCSI device with ST sync op*/
 #define PQUIRK_CAP_WIDE16	0x00100000	/* SCSI device with ST wide op*/
 #define PQUIRK_CAP_NODT		0x00200000	/* signals DT, but can't. */
+#define PQUIRK_NOPREVENT	0x00400000	/* does not support PREVENT */


 /*
Index: src/sys/dev/scsipi/sd.c
===================================================================
RCS file: /cvsroot/src/sys/dev/scsipi/sd.c,v
retrieving revision 1.214
diff -u -r1.214 sd.c
--- sd.c	2003/12/23 13:12:25	1.214
+++ sd.c	2004/05/02 20:38:28
@@ -526,7 +526,8 @@

 		periph->periph_flags |= PERIPH_OPEN;

-		if (periph->periph_flags & PERIPH_REMOVABLE) {
+		if ((periph->periph_flags & PERIPH_REMOVABLE) &&
+		    (periph->periph_quirks & PQUIRK_NOPREVENT) == 0) {
 			/* Lock the pack in. */
 			error = scsipi_prevent(periph, PR_PREVENT,
 			    XS_CTL_IGNORE_ILLEGAL_REQUEST |
@@ -588,7 +589,8 @@

 bad:
 	if (sd->sc_dk.dk_openmask == 0) {
-		if (periph->periph_flags & PERIPH_REMOVABLE)
+		if ((periph->periph_flags & PERIPH_REMOVABLE) &&
+		    (periph->periph_quirks & PQUIRK_NOPREVENT) == 0)
 			scsipi_prevent(periph, PR_ALLOW,
 			    XS_CTL_IGNORE_ILLEGAL_REQUEST |
 			    XS_CTL_IGNORE_MEDIA_CHANGE);
@@ -652,7 +654,8 @@

 		scsipi_wait_drain(periph);

-		if (periph->periph_flags & PERIPH_REMOVABLE)
+		if ((periph->periph_flags & PERIPH_REMOVABLE) &&
+		    (periph->periph_quirks & PQUIRK_NOPREVENT) == 0)
 			scsipi_prevent(periph, PR_ALLOW,
 			    XS_CTL_IGNORE_ILLEGAL_REQUEST |
 			    XS_CTL_IGNORE_NOT_READY);
@@ -1139,15 +1142,15 @@
 			 * Don't force eject: check that we are the only
 			 * partition open. If so, unlock it.
 			 */
-			if ((sd->sc_dk.dk_openmask & ~(1 << part)) == 0 &&
-			    sd->sc_dk.dk_bopenmask + sd->sc_dk.dk_copenmask ==
-			    sd->sc_dk.dk_openmask) {
+			if ((sd->sc_dk.dk_openmask & ~(1 << part)) != 0 ||
+			    sd->sc_dk.dk_bopenmask + sd->sc_dk.dk_copenmask !=
+			    sd->sc_dk.dk_openmask)
+				return (EBUSY);
+			if ((periph->periph_quirks & PQUIRK_NOPREVENT) == 0) {
 				error = scsipi_prevent(periph, PR_ALLOW,
 				    XS_CTL_IGNORE_NOT_READY);
 				if (error)
 					return (error);
-			} else {
-				return (EBUSY);
 			}
 		}
 		/* FALLTHROUGH */
Index: src/sys/dev/usb/umass_quirks.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass_quirks.c,v
retrieving revision 1.64
diff -u -r1.64 umass_quirks.c
--- umass_quirks.c	2003/11/07 01:04:27	1.64
+++ umass_quirks.c	2004/05/02 20:38:40
@@ -161,6 +161,18 @@
 	  UMATCH_DEVCLASS_DEVSUBCLASS_DEVPROTO,
 	  NULL, NULL
 	},
+
+	/*
+	 * iRiver UMS firmware version V1.11 for iFP-3xx can't handle
+	 * PREVENT requests.
+	 */
+	{ { USB_VENDOR_IRIVER, USB_PRODUCT_IRIVER_IFP_3XX },
+	  UMASS_WPROTO_UNSPEC, UMASS_CPROTO_UNSPEC,
+	  0,
+	  PQUIRK_NOPREVENT,
+	  UMATCH_DEVCLASS_DEVSUBCLASS_DEVPROTO,
+	  NULL, NULL
+	},
 };

 const struct umass_quirk *
Index: src/sys/dev/usb/usbdevs
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs,v
retrieving revision 1.368
diff -u -r1.368 usbdevs
--- usbdevs	2004/02/19 01:10:42	1.368
+++ usbdevs	2004/05/02 20:38:41
@@ -389,6 +389,7 @@
 vendor DAISY		0x3579	Daisy Technology
 vendor NI		0x3923	National Instruments
 vendor IODATA2		0x40bb	I-O Data
+vendor IRIVER		0x4102	iRiver
 vendor ONSPEC2		0x55aa	OnSpec Electronic Inc.
 vendor INTEL		0x8086	Intel
 vendor HP2		0xf003	Hewlett Packard
@@ -902,6 +903,10 @@

 /* Intersil products */
 product INTERSIL PRISM_2X	0x3642	Prism2.x WLAN
+
+/* iRiver products */
+product IRIVER IFP_3XX		0x1103	iFP-3xx 
+product IRIVER IFP_5XX		0x1105	iFP-5xx 

 /* I-O DATA products */
 product IODATA IU_CD2		0x0204	DVD Multi-plus unit iU-CD2
Index: src/sys/dev/usb/usbdevs.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.371
diff -u -r1.371 usbdevs.h
--- usbdevs.h	2004/02/19 01:11:13	1.371
+++ usbdevs.h	2004/05/02 20:38:43
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdevs.h,v 1.371 2004/02/19 01:11:13 augustss Exp $	*/
+/*	$NetBSD$	*/

 /*
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -396,6 +396,7 @@
 #define	USB_VENDOR_DAISY	0x3579		/* Daisy Technology */
 #define	USB_VENDOR_NI	0x3923		/* National Instruments */
 #define	USB_VENDOR_IODATA2	0x40bb		/* I-O Data */
+#define	USB_VENDOR_IRIVER	0x4102		/* iRiver */
 #define	USB_VENDOR_ONSPEC2	0x55aa		/* OnSpec Electronic Inc. */
 #define	USB_VENDOR_INTEL	0x8086		/* Intel */
 #define	USB_VENDOR_HP2	0xf003		/* Hewlett Packard */
@@ -909,6 +910,10 @@

 /* Intersil products */
 #define	USB_PRODUCT_INTERSIL_PRISM_2X	0x3642		/* Prism2.x WLAN */
+
+/* iRiver products */
+#define	USB_PRODUCT_IRIVER_IFP_3XX	0x1103		/* iFP-3xx */
+#define	USB_PRODUCT_IRIVER_IFP_5XX	0x1105		/* iFP-5xx */

 /* I-O DATA products */
 #define	USB_PRODUCT_IODATA_IU_CD2	0x0204		/* DVD Multi-plus unit iU-CD2 */
Index: src/sys/dev/usb/usbdevs_data.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.372
diff -u -r1.372 usbdevs_data.h
--- usbdevs_data.h	2004/02/19 01:11:13	1.372
+++ usbdevs_data.h	2004/05/02 20:38:46
@@ -1,4 +1,4 @@
-/*	$NetBSD: usbdevs_data.h,v 1.372 2004/02/19 01:11:13 augustss Exp $	*/
+/*	$NetBSD$	*/

 /*
  * THIS FILE IS AUTOMATICALLY GENERATED.  DO NOT EDIT.
@@ -1954,6 +1954,18 @@
 	    "Prism2.x WLAN",
 	},
 	{
+	    USB_VENDOR_IRIVER, USB_PRODUCT_IRIVER_IFP_3XX,
+	    0,
+	    "iRiver",
+	    "iFP-3xx",
+	},
+	{
+	    USB_VENDOR_IRIVER, USB_PRODUCT_IRIVER_IFP_5XX,
+	    0,
+	    "iRiver",
+	    "iFP-5xx",
+	},
+	{
 	    USB_VENDOR_IODATA, USB_PRODUCT_IODATA_IU_CD2,
 	    0,
 	    "I-O Data",
@@ -6817,6 +6829,12 @@
 	    USB_VENDOR_IODATA2, 0,
 	    USB_KNOWNDEV_NOPROD,
 	    "I-O Data",
+	    NULL,
+	},
+	{
+	    USB_VENDOR_IRIVER, 0,
+	    USB_KNOWNDEV_NOPROD,
+	    "iRiver",
 	    NULL,
 	},
 	{
>Release-Note:
>Audit-Trail:

From: Martin Husemann <martin@duskware.de>
To: mer@klockrike.net
Cc: gnats-bugs@gnats.NetBSD.org
Subject: Re: kern/25440: Support for iRiver IFP-3xx flash MP3 players
Date: Mon, 3 May 2004 08:21:15 +0200

 On Sun, May 02, 2004 at 10:42:06PM +0200, mer@klockrike.net wrote:

 > The hang at device open is caused by the iRiver iFP-390T's inability
 > to handle the PREVENT_ALLOW SCSI command. The patch below adds a new
 > quirk, and sets it for the iFP-3xx series.

 What do you mean by "inability"?
 Does it return an error? Which one? What happens if you just ignore the
 error?

 This certainly should not be a quirk, unless you can clearly show that the
 device is just too stupid and can not be handled in any other way.

 Martin

From: Michael Eriksson <Michael.Eriksson@era-t.ericsson.se>
To: Martin Husemann <martin@duskware.de>
Cc: gnats-bugs@gnats.NetBSD.org
Subject: Re: kern/25440: Support for iRiver IFP-3xx flash MP3 players
Date: Mon, 3 May 2004 09:44:06 +0200

 Martin Husemann wrote:
 > On Sun, May 02, 2004 at 10:42:06PM +0200, mer@klockrike.net wrote:
 > 
 > > The hang at device open is caused by the iRiver iFP-390T's inability
 > > to handle the PREVENT_ALLOW SCSI command. The patch below adds a new
 > > quirk, and sets it for the iFP-3xx series.
 > 
 > What do you mean by "inability"?
 > Does it return an error? Which one? What happens if you just ignore the
 > error?

 The first sentence of the problem description pretty much tells it
 all:

 | Opening the umass sd disk of my iRiver iFP-390T flash-based
 | MP3-player hangs.

 The how-to-repeat is also pretty clear:

 | Try this on your iRiver iFP-390T:
 |
 | datan# mount -t msdos /dev/sd0d /mnt
 |
 | ...and watch it just hang.

 So to be even more explicit: sdopen() calls scsipi_prevent() for
 removable disks. The latter function never returns, at least not in
 reasonable time; I have only waited for a few minutes or so. The
 process sleeps on "xscmd" (in scsipi_execute_xs()).

 > This certainly should not be a quirk, unless you can clearly show that the
 > device is just too stupid and can not be handled in any other way.

 I can't possibly show that this can't be handled in any other way. I
 send-pr'd the patch as a service to other NetBSD users. My own problem
 is already solved in my local CVS tree. Feel free to find a better way
 to solve the problem, or ignore it if you think that's better...

 /Micke
State-Changed-From-To: open->feedback 
State-Changed-By: mycroft 
State-Changed-When: Sat Jun 26 20:53:55 UTC 2004 
State-Changed-Why:  
Please retest with a clean -current, and if it still fails, submit a log with 
USB_DEBUG compiled in and ?hcidebug=20. 


Responsible-Changed-From-To: kern-bug-people->mycroft 
Responsible-Changed-By: mycroft 
Responsible-Changed-When: Sat Jun 26 20:53:55 UTC 2004 
Responsible-Changed-Why:  
. 

From: Michael Eriksson <Michael.Eriksson@era-t.ericsson.se>
To: gnats-bugs@gnats.netbsd.org
Cc: mycroft@netbsd.org
Subject: Re: kern/25440
Date: Sun, 25 Jul 2004 23:17:42 +0200

 mycroft@netbsd.org wrote:
 > Synopsis: Open of the umass sd disk on iRiver flash players hangs
 > 
 > State-Changed-From-To: open->feedback
 > State-Changed-By: mycroft
 > State-Changed-When: Sat Jun 26 20:53:55 UTC 2004
 > State-Changed-Why: 
 > Please retest with a clean -current, and if it still fails, submit a log with
 > USB_DEBUG compiled in and ?hcidebug=20.

 I've tried a -current GENERIC + USB_DEBUG kernel from July 21 (2.0G).
 The problem remains. The stack trace is the same as before (modulo my
 typos):

 ltsleep()
 scsipi_execute_xs()
 scsi_scsipi_cmd()
 scsipi_command()
 scsipi_prevent()
 sdopen()


 The kernel USB logs:

 umass0 at uhub0 port 2 configuration 1 interface 0
 umass0: vendor 0x4102 product 0x1103, rev 1.10/1.00, addr 3
 umass0: using SCSI over Bulk-Only
 scsibus0 at umass0: 2 targets, 1 lun per target
 sd0 at scsibus0 target 0 lun 0: <iRiver, iFP Mass Driver, 1.00> disk removable
 sd0: fabricating a geometry
 sd0: 250 MB, 250 cyl, 64 head, 32 sec, 512 bytes/sect x 512000 sectors
 uhci_device_bulk_start: xfer=0xc1264f00 len=31 flags=0 ii=0xc1264f68
 uhci_alloc_std_chain: addr=3 endpt=3 len=31 speed=2 flags=0x0
 uhci_alloc_std_chain: maxp=64 ntd=1
 uhci_alloc_std_chain: nexttog=1
 uhci_device_bulk_transfer: data(1)
 TD(0xcc0a1f60) at 01bd3f60 = link=0x00000005 status=0x198003ff token=0x03c183e1 buffer=0x01cf4e40
   5<T,VF> 198003ff<ACTIVE,IOC>,errcnt=3,actlen=0 pid=e1,addr=3,endpt=3,D=0,maxlen=31
 uhci_add_bulk: sqh=0xcaafff20
 uhci_start_loop: add
 uhci_device_bulk_transfer: data(2)
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=058d, flbase=01ced634, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_softintr (0)
 uhci_check_intr: ii=0xc1264f68
 uhci_check_intr: ii=0xc1264f68 done
 uhci_idone: ii=0xc1264f68
 uhci_idone: ii=0xc1264f68, xfer=0xc1264f00, pipe=0xc1243000 ready
 TD(0xcc0a1f60) at 01bd3f60 = link=0x00000005 status=0x1900001e token=0x03c183e1 buffer=0x01cf4e40
   5<T,VF> 1900001e<IOC>,errcnt=3,actlen=31 pid=e1,addr=3,endpt=3,D=0,maxlen=31
 uhci_idone: actlen=31, status=0x0
 uhci_device_bulk_start: xfer=0xc1300c00 len=13 flags=0 ii=0xc1300c68
 uhci_alloc_std_chain: addr=3 endpt=3 len=13 speed=2 flags=0x0
 uhci_alloc_std_chain: maxp=64 ntd=1
 uhci_alloc_std_chain: nexttog=1
 uhci_device_bulk_transfer: data(1)
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x198003ff token=0x01818369 buffer=0x01cf4e40
   5<T,VF> 198003ff<ACTIVE,IOC>,errcnt=3,actlen=0 pid=69,addr=3,endpt=3,D=0,maxlen=13
 uhci_add_bulk: sqh=0xcaafff00
 uhci_device_bulk_transfer: data(2)
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=05b2, flbase=01ced6c8, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x1900000c token=0x01818369 buffer=0x01cf4e40
   5<T,VF> 1900000c<IOC>,errcnt=3,actlen=13 pid=69,addr=3,endpt=3,D=0,maxlen=13
 uhci_device_bulk_done: xfer=0xc1264f00 ii=0xc1264f68 sc=0xc1262000 upipe=0xc1243000
 uhci_remove_bulk: sqh=0xcaafff20
 uhci_find_prev_qh: pqh=0xcaafefc0 sqh=0xcaafff20
 uhci_device_bulk_done: length=31
 uhci_idone: ii=0xc1264f68 done
 uhci0: uhci_softintr (0)
 uhci_check_intr: ii=0xc1300c68
 uhci_check_intr: ii=0xc1300c68 done
 uhci_idone: ii=0xc1300c68
 uhci_idone: ii=0xc1300c68, xfer=0xc1300c00, pipe=0xc1243880 ready
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x1900000c token=0x01818369 buffer=0x01cf4e40
   5<T,VF> 1900000c<IOC>,errcnt=3,actlen=13 pid=69,addr=3,endpt=3,D=0,maxlen=13
 uhci_idone: actlen=13, status=0x0
 uhci_device_bulk_done: xfer=0xc1300c00 ii=0xc1300c68 sc=0xc1262000 upipe=0xc1243880
 uhci_remove_bulk: sqh=0xcaafff00
 uhci_end_loop: remove
 uhci_find_prev_qh: pqh=0xcaafefc0 sqh=0xcaafff00
 uhci_device_bulk_done: length=13
 uhci_idone: ii=0xc1300c68 done
 TD(0xcc0a1f60) at 01bd3f60 = link=0x00000005 status=0x1900001e token=0x03c183e1 buffer=0x01cf4e40
   5<T,VF> 1900001e<IOC>,errcnt=3,actlen=31 pid=e1,addr=3,endpt=3,D=0,maxlen=31
 uhci_device_bulk_start: xfer=0xc1264f00 len=31 flags=0 ii=0xc1264f68
 uhci_alloc_std_chain: addr=3 endpt=3 len=31 speed=2 flags=0x0
 uhci_alloc_std_chain: maxp=64 ntd=1
 uhci_alloc_std_chain: nexttog=0
 uhci_device_bulk_transfer: data(1)
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x198003ff token=0x03c983e1 buffer=0x01cf4e40
   5<T,VF> 198003ff<ACTIVE,IOC>,errcnt=3,actlen=0 pid=e1,addr=3,endpt=3,D=1,maxlen=31
 uhci_add_bulk: sqh=0xcaafff20
 uhci_start_loop: add
 uhci_device_bulk_transfer: data(2)
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=05f4, flbase=01ced7d0, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_softintr (0)
 uhci_check_intr: ii=0xc1264f68
 uhci_check_intr: ii=0xc1264f68 done
 uhci_idone: ii=0xc1264f68
 uhci_idone: ii=0xc1264f68, xfer=0xc1264f00, pipe=0xc1243000 ready
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x1900001e token=0x03c983e1 buffer=0x01cf4e40
   5<T,VF> 1900001e<IOC>,errcnt=3,actlen=31 pid=e1,addr=3,endpt=3,D=1,maxlen=31
 uhci_idone: actlen=31, status=0x0
 uhci_device_bulk_start: xfer=0xc1300c00 len=13 flags=0 ii=0xc1300c68
 uhci_alloc_std_chain: addr=3 endpt=3 len=13 speed=2 flags=0x0
 uhci_alloc_std_chain: maxp=64 ntd=1
 uhci_alloc_std_chain: nexttog=0
 uhci_device_bulk_transfer: data(1)
 TD(0xcc0a1f60) at 01bd3f60 = link=0x00000005 status=0x198003ff token=0x01898369 buffer=0x01cf4e40
   5<T,VF> 198003ff<ACTIVE,IOC>,errcnt=3,actlen=0 pid=69,addr=3,endpt=3,D=1,maxlen=13
 uhci_add_bulk: sqh=0xcaafff00
 uhci_device_bulk_transfer: data(2)
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=0619, flbase=01ced864, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 TD(0xcc0a1f60) at 01bd3f60 = link=0x00000005 status=0x1900000c token=0x01898369 buffer=0x01cf4e40
   5<T,VF> 1900000c<IOC>,errcnt=3,actlen=13 pid=69,addr=3,endpt=3,D=1,maxlen=13
 uhci_device_bulk_done: xfer=0xc1264f00 ii=0xc1264f68 sc=0xc1262000 upipe=0xc1243000
 uhci_remove_bulk: sqh=0xcaafff20
 uhci_find_prev_qh: pqh=0xcaafefc0 sqh=0xcaafff20
 uhci_device_bulk_done: length=31
 uhci_idone: ii=0xc1264f68 done
 uhci0: uhci_softintr (0)
 uhci_check_intr: ii=0xc1300c68
 uhci_check_intr: ii=0xc1300c68 done
 uhci_idone: ii=0xc1300c68
 uhci_idone: ii=0xc1300c68, xfer=0xc1300c00, pipe=0xc1243880 ready
 TD(0xcc0a1f60) at 01bd3f60 = link=0x00000005 status=0x1900000c token=0x01898369 buffer=0x01cf4e40
   5<T,VF> 1900000c<IOC>,errcnt=3,actlen=13 pid=69,addr=3,endpt=3,D=1,maxlen=13
 uhci_idone: actlen=13, status=0x0
 uhci_device_bulk_start: xfer=0xc1264f00 len=31 flags=0 ii=0xc1264f68
 uhci_alloc_std_chain: addr=3 endpt=3 len=31 speed=2 flags=0x0
 uhci_alloc_std_chain: maxp=64 ntd=1
 uhci_alloc_std_chain: nexttog=1
 uhci_device_bulk_transfer: data(1)
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x198003ff token=0x03c183e1 buffer=0x01cf4e40
   5<T,VF> 198003ff<ACTIVE,IOC>,errcnt=3,actlen=0 pid=e1,addr=3,endpt=3,D=0,maxlen=31
 uhci_add_bulk: sqh=0xcaafff20
 uhci_device_bulk_transfer: data(2)
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=064c, flbase=01ced930, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x1900001e token=0x03c183e1 buffer=0x01cf4e40
   5<T,VF> 1900001e<IOC>,errcnt=3,actlen=31 pid=e1,addr=3,endpt=3,D=0,maxlen=31
 uhci_device_bulk_done: xfer=0xc1300c00 ii=0xc1300c68 sc=0xc1262000 upipe=0xc1243880
 uhci_remove_bulk: sqh=0xcaafff00
 uhci_find_prev_qh: pqh=0xcaafefc0 sqh=0xcaafff00
 uhci_device_bulk_done: length=13
 uhci_idone: ii=0xc1300c68 done
 uhci0: uhci_softintr (0)
 uhci_check_intr: ii=0xc1264f68
 uhci_check_intr: ii=0xc1264f68 done
 uhci_idone: ii=0xc1264f68
 uhci_idone: ii=0xc1264f68, xfer=0xc1264f00, pipe=0xc1243000 ready
 TD(0xcc0a1fa0) at 01bd3fa0 = link=0x00000005 status=0x1900001e token=0x03c183e1 buffer=0x01cf4e40
   5<T,VF> 1900001e<IOC>,errcnt=3,actlen=31 pid=e1,addr=3,endpt=3,D=0,maxlen=31
 uhci_idone: actlen=31, status=0x0
 uhci_device_bulk_start: xfer=0xc11cf600 len=32 flags=5 ii=0xc11cf668
 uhci_alloc_std_chain: addr=3 endpt=3 len=32 speed=2 flags=0x5
 uhci_alloc_std_chain: maxp=64 ntd=1
 uhci_alloc_std_chain: nexttog=1
 uhci_device_bulk_transfer: data(1)
 TD(0xcc0a1f60) at 01bd3f60 = link=0x00000005 status=0x398003ff token=0x03e18369 buffer=0x01bd4000
   5<T,VF> 398003ff<ACTIVE,IOC,SPD>,errcnt=3,actlen=0 pid=69,addr=3,endpt=3,D=0,maxlen=32
 uhci_add_bulk: sqh=0xcaafff00
 uhci_device_bulk_transfer: data(2)
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=067f, flbase=01ced9fc, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=0685, flbase=01ceda14, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=068b, flbase=01ceda2c, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=0691, flbase=01ceda44, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=0697, flbase=01ceda5c, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=069d, flbase=01ceda74, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06a3, flbase=01ceda8c, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06a9, flbase=01cedaa4, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06af, flbase=01cedabc, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06b5, flbase=01cedad4, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06bc, flbase=01cedaf0, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06c2, flbase=01cedb08, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06c8, flbase=01cedb20, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06ce, flbase=01cedb38, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06d4, flbase=01cedb50, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit
 uhci0: uhci_intr1
 uhci0 regs: cmd=0081, sts=0001, intr=000f, frnum=06da, flbase=01cedb68, sof=0040, portsc1=01a5, portsc2=0095
 uhci0: uhci_intr: exit


 The log printouts continue to loop until I reset uhcidebug.

 /Micke
State-Changed-From-To: feedback->open 
State-Changed-By: mycroft 
State-Changed-When: Sun Aug 29 21:28:28 UTC 2004 
State-Changed-Why:  
. 

From: "Julien Gabel" <jpeg@thilelli.net>
To: gnats-bugs@NetBSD.org
Cc:  
Subject: Re: kern/25440
Date: Sat, 2 Oct 2004 19:03:17 +0200 (CEST)

 Hello,

 I am using an iRiver IFP-395. Although it seems discorvered correctly
 when the device is plugged in, i encountred the same problem here on
 a fresh newly build NetBSD (netbsd-2-0) system:

 # uname -a
 NetBSD titeuf.thilelli.net 2.0_RC2 NetBSD 2.0_RC2 (TITEUF) #0: \
  Sat Oct  2 15:59:51 CEST 2004 \
  root@titeuf.thilelli.net:/usr/obj/sys/arch/i386/compile/TITEUF i386

 # dmesg
 [...]
 umass0 at uhub0 port 1 configuration 1 interface 0
 umass0: vendor 0x4102 product 0x1103, rev 1.10/1.00, addr 2
 umass0: using SCSI over Bulk-Only
 scsibus0 at umass0: 2 targets, 1 lun per target
 sd0 at scsibus0 target 0 lun 0: <iRiver, iFP Mass Driver, 1.00> disk
 removable
 sd0: fabricating a geometry
 sd0: 500 MB, 500 cyl, 64 head, 32 sec, 512 bytes/sect x 1024000 sectors

 The symptoms are very similar as already said: using "fdisk sd0",
 "disklabel sd0" or try to mount the device (msdos fs) it hangs without
 giving the hand at the shell prompt.

 Is there anything to do in order to be able to use this kind of device?

 I can reproduce the problem, test any suggestions and build a kernel
 with the option USB_DEBUG if wanted.
 --
 -jpeg.

Responsible-Changed-From-To: mycroft->bin-bug-people
Responsible-Changed-By: wiz@netbsd.org
Responsible-Changed-When: Sun, 03 Sep 2006 01:12:13 +0000
Responsible-Changed-Why:
Back to role account, mycroft doesn't have commit access any longer.


Responsible-Changed-From-To: bin-bug-people->kern-bug-people
Responsible-Changed-By: wiz@netbsd.org
Responsible-Changed-When: Sun, 03 Sep 2006 13:31:22 +0000
Responsible-Changed-Why:
Proper role account.


From: "Jonathan A. Kollasch" <jakllsch@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/25440 CVS commit: src/sys/dev/usb
Date: Mon, 7 Jun 2010 01:56:51 +0000

 Module Name:	src
 Committed By:	jakllsch
 Date:		Mon Jun  7 01:56:51 UTC 2010

 Modified Files:
 	src/sys/dev/usb: umass_quirks.c

 Log Message:
 Four more quirky umass(4)es.
 These include the Philips SA235, and iRiver iFP-series audio players.
 Mostly from PR#25440 and PR#43264.


 To generate a diff of this commit:
 cvs rdiff -u -r1.79 -r1.80 src/sys/dev/usb/umass_quirks.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: open->closed
State-Changed-By: shattered@NetBSD.org
State-Changed-When: Sun, 14 Aug 2011 22:51:00 +0000
State-Changed-Why:
Fix committed.


>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.