From owner-freebsd-usb@FreeBSD.ORG Sun May 15 17:00:26 2005 Return-Path: Delivered-To: freebsd-usb@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BB13616A4D0 for ; Sun, 15 May 2005 17:00:26 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 65FAF43D8F for ; Sun, 15 May 2005 17:00:26 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j4FH0PaL059618 for ; Sun, 15 May 2005 17:00:25 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j4FH0PFD059617; Sun, 15 May 2005 17:00:25 GMT (envelope-from gnats) Resent-Date: Sun, 15 May 2005 17:00:25 GMT Resent-Message-Id: <200505151700.j4FH0PFD059617@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-usb@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, "James E. Flemer" Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7F1F216A4CE for ; Sun, 15 May 2005 16:56:05 +0000 (GMT) Received: from psi.speednaked.com (c-24-9-89-237.hsd1.co.comcast.net [24.9.89.237]) by mx1.FreeBSD.org (Postfix) with ESMTP id E897243DCE for ; Sun, 15 May 2005 16:56:04 +0000 (GMT) (envelope-from jflemer@speednaked.com) Received: from null.speednaked.com (localhost [127.0.0.1]) by null.speednaked.com (8.13.3/8.13.3) with ESMTP id j4FGshJl004259; Sun, 15 May 2005 10:54:43 -0600 (MDT) (envelope-from jflemer@null.speednaked.com) Received: (from jflemer@localhost) by null.speednaked.com (8.13.3/8.13.3/Submit) id j4FGsgtn004258; Sun, 15 May 2005 10:54:42 -0600 (MDT) (envelope-from jflemer) Message-Id: <200505151654.j4FGsgtn004258@null.speednaked.com> Date: Sun, 15 May 2005 10:54:42 -0600 (MDT) From: "James E. Flemer" To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 cc: jflemer@alum.rpi.edu Subject: usb/81073: [patch] fix umass NO_GETMAXLUN quirk X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: "James E. Flemer" List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 15 May 2005 17:00:27 -0000 >Number: 81073 >Category: usb >Synopsis: [patch] fix umass NO_GETMAXLUN quirk >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-usb >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun May 15 17:00:24 GMT 2005 >Closed-Date: >Last-Modified: >Originator: James E. Flemer >Release: FreeBSD 6.0-CURRENT i386 >Organization: n/a >Environment: System: FreeBSD null.speednaked.com 6.0-CURRENT FreeBSD 6.0-CURRENT #1: Sun May 1 02:34:19 MDT 2005 root@null.speednaked.com:/usr/obj/usr/src/sys/NULL6 i386 >Description: The umass NO_GETMAXLUN quirk is not implemented. The flag is defined in umass.c, and several devices are tagged with it, but it is not referenced anywhere else. It would seem that this flag is there because some devices seem to get stuck when sent UR_BBB_GET_MAX_LUN. I have one such USB cd-rom device that seems to be known by the following names: Sharp CE-CD05 Panasonic KXL-840AN Kyushu Matsushita Electric (KME) UJDB131 Kyushu Matsushita Electric (KME) CD-ROM11 Apparently this drive is popular on many ultralight laptops in Japan (often rebranded). >How-To-Repeat: Load the umass driver and attach a device that has NO_GETMAXLUN as a quirk. Devices that need this quirk tend to exhibit the following behavior: umass0: Kyushu Matsushita Electric Co.,Ltd. UJDB131, rev 1.10/0.81, addr 2 umass0: Get Max Lun not supported (STALLED) umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED (cd0:umass-sim0:0:0:0): got CAM status 0x4 (cd0:umass-sim0:0:0:0): fatal error, failed to attach to device (cd0:umass-sim0:0:0:0): lost device umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED (cd0:umass-sim0:0:0:0): AutoSense Failed umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED umass0: BBB reset failed, STALLED umass0: BBB bulk-in clear stall failed, STALLED umass0: BBB bulk-out clear stall failed, STALLED (cd0:umass-sim0:0:0:0): removing device entry >Fix: The patch below enables the NO_GETMAXLUN quirk, and when set for a device sets the maxlun to 0. This patch also adds a new device and the appropriate quirks section. With this patch my drive attaches and works. This patch does not revoke the NO_GETMAXLUN quirk for any device that currently has it set. This patch might change how these devices work (hopefully making things better). --- umass-get-max-lun.diff begins here --- Index: umass.c =================================================================== RCS file: /home/ncvs/src/sys/dev/usb/umass.c,v retrieving revision 1.121 diff -u -r1.121 umass.c --- umass.c 25 Mar 2005 01:47:01 -0000 1.121 +++ umass.c 15 May 2005 01:32:33 -0000 @@ -399,6 +399,10 @@ UMASS_PROTO_ATAPI | UMASS_PROTO_BBB, NO_INQUIRY | NO_GETMAXLUN }, + { USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXL840AN, RID_WILDCARD, + UMASS_PROTO_ATAPI | UMASS_PROTO_BBB, + NO_GETMAXLUN + }, { USB_VENDOR_PANASONIC, USB_PRODUCT_PANASONIC_KXLCB20AN, RID_WILDCARD, UMASS_PROTO_SCSI | UMASS_PROTO_BBB, NO_QUIRKS @@ -1086,7 +1090,8 @@ /* Get the maximum LUN supported by the device. */ - if ((sc->proto & UMASS_PROTO_WIRE) == UMASS_PROTO_BBB) + if ((sc->proto & UMASS_PROTO_WIRE) == UMASS_PROTO_BBB && + (sc->quirks & NO_GETMAXLUN) == 0) sc->maxlun = umass_bbb_get_max_lun(sc); else sc->maxlun = 0; Index: usbdevs =================================================================== RCS file: /home/ncvs/src/sys/dev/usb/usbdevs,v retrieving revision 1.229 diff -u -r1.229 usbdevs --- usbdevs 18 Apr 2005 18:47:37 -0000 1.229 +++ usbdevs 15 May 2005 01:32:33 -0000 @@ -1252,6 +1252,7 @@ product PALM ZIRE 0x0070 Palm Zire /* Panasonic products */ +product PANASONIC KXL840AN 0x0d01 CD-R Drive KXL-840AN product PANASONIC KXLRW32AN 0x0d09 CD-R Drive KXL-RW32AN product PANASONIC KXLCB20AN 0x0d0a CD-R Drive KXL-CB20AN product PANASONIC KXLCB35AN 0x0d0e DVD-ROM & CD-R/RW --- umass-get-max-lun.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: