NetBSD Problem Report #42225
From www@NetBSD.org Sat Oct 24 20:38:12 2009
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
by www.NetBSD.org (Postfix) with ESMTP id 5823A63B902
for <gnats-bugs@gnats.netbsd.org>; Sat, 24 Oct 2009 20:38:12 +0000 (UTC)
Message-Id: <20091024203812.1519E63B8B6@www.NetBSD.org>
Date: Sat, 24 Oct 2009 20:38:12 +0000 (UTC)
From: kretschm@cs.uni-bonn.de
Reply-To: kretschm@cs.uni-bonn.de
To: gnats-bugs@NetBSD.org
Subject: can't read data from SuperTop IDE Bridge (umass)
X-Send-Pr-Version: www-1.0
>Number: 42225
>Category: kern
>Synopsis: can't read data from SuperTop IDE Bridge (umass)
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: martin
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Oct 24 20:40:00 +0000 2009
>Closed-Date: Tue Nov 05 11:43:13 +0000 2019
>Last-Modified: Tue Nov 05 11:43:13 +0000 2019
>Originator: Matthias Kretschmer
>Release: NetBSD 5.0.1_PATCH
>Organization:
>Environment:
NetBSD fourier.hangelar.local 5.0.1_PATCH NetBSD 5.0.1_PATCH (GENERIC) #0: Sat Oct 24 21:33:44 CEST 2009 matthias pts/4 Oct 24 20:55 (:0:S.2)@fourier.hangelar.local:/home/matthias/src/netbsd/5-0/src/sys/arch/amd64/compile/obj/GENERIC amd64
>Description:
Whenever I try to read data from a SuperTop IDE Bridge (an usb to ide bridge), I do not get any output. NetBSD is unable to read any data. Writing does not work as expected, too.
The problem is, that the device has some quirk, such that the residue information is bad (always zero).
>How-To-Repeat:
Just attach the device and try to read/write data using dd.
>Fix:
The following patches for netbsd-5-0, netbsd-5 and HEAD branches correct the problem.
I introduced a new umass quirk UMASS_QUIRK_IGNORE_RESIDUE and added a corresponding entry to umass_quirks.c for the specific device. I used the code on 5.0.0_PATCH and 5.0.1_PATCH systems for some months without any problems. I created patches against the code of netbsd-5-0, netbsd-5 and HEAD branches of today. They are given below. I compiled kernels of all three branches and tried the device to check if it performs properly.
According to other operating systems' quirk lists there are many other umass-devices with this quirk. Using this patch and adding a corresponding quirk entry in umass_quirk.c might solve the problem with those devices, too. I did not add further entries, because I only have this single device with the quirk and I'm unable to test the others.
--
Patch for netbsd-5-0:
Index: umass.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass.c,v
retrieving revision 1.129.4.1
diff -r1.129.4.1 umass.c
998a999
> int residue;
1170a1172,1176
> if (sc->sc_quirks & UMASS_QUIRK_IGNORE_RESIDUE)
> residue = sc->transfer_datalen - sc->transfer_actlen;
> else
> residue = UGETDW(sc->csw.dCSWDataResidue);
>
1213,1214c1219
< USBDEVNAME(sc->sc_dev),
< UGETDW(sc->csw.dCSWDataResidue));
---
> USBDEVNAME(sc->sc_dev), residue);
1226c1231
< != UGETDW(sc->csw.dCSWDataResidue)) {
---
> != residue) {
1230c1235
< UGETDW(sc->csw.dCSWDataResidue)));
---
> residue));
1237,1238c1242
< USBDEVNAME(sc->sc_dev),
< UGETDW(sc->csw.dCSWDataResidue)));
---
> USBDEVNAME(sc->sc_dev), residue));
1242,1243c1246
< sc->transfer_cb(sc, sc->transfer_priv,
< UGETDW(sc->csw.dCSWDataResidue),
---
> sc->transfer_cb(sc, sc->transfer_priv, residue,
1250,1251c1253
< sc->transfer_cb(sc, sc->transfer_priv,
< UGETDW(sc->csw.dCSWDataResidue),
---
> sc->transfer_cb(sc, sc->transfer_priv, residue,
Index: umass_quirks.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass_quirks.c,v
retrieving revision 1.76
diff -r1.76 umass_quirks.c
223a224,234
>
> /*
> * Devices with bad residue.
> */
> { { USB_VENDOR_SUPERTOP, USB_PRODUCT_SUPERTOP_IDEBRIDGE },
> UMASS_WPROTO_UNSPEC, UMASS_CPROTO_UNSPEC,
> UMASS_QUIRK_IGNORE_RESIDUE,
> 0,
> UMATCH_VENDOR_PRODUCT,
> NULL, NULL
> },
Index: umassvar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umassvar.h,v
retrieving revision 1.27
diff -r1.27 umassvar.h
182a183
> #define UMASS_QUIRK_IGNORE_RESIDUE 0x00000010
Index: usbdevs
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs,v
retrieving revision 1.519.4.1
diff -r1.519.4.1 usbdevs
456a457
> vendor SUPERTOP 0x14cd SuperTop
2193a2195,2197
> /* SuperTop products */
> product SUPERTOP IDEBRIDGE 0x6600 SuperTop IDE Bridge
>
Index: usbdevs.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.515.4.1
diff -r1.515.4.1 usbdevs.h
1c1
< /* $NetBSD: usbdevs.h,v 1.515.4.1 2008/11/22 05:12:18 snj Exp $ */
---
> /* $NetBSD$ */
463a464
> #define USB_VENDOR_SUPERTOP 0x14cd /* SuperTop */
2200a2202,2204
> /* SuperTop products */
> #define USB_PRODUCT_SUPERTOP_IDEBRIDGE 0x6600 /* SuperTop IDE
Bridge */
>
Index: usbdevs_data.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.516.4.1
diff -r1.516.4.1 usbdevs_data.h
1c1
< /* $NetBSD: usbdevs_data.h,v 1.516.4.1 2008/11/22 05:12:18 snj Exp $
*/
---
> /* $NetBSD$ */
1641a1642,1645
> USB_VENDOR_SUPERTOP,
> "SuperTop",
> },
> {
1858c1862
< const int usb_nvendors = 454;
---
> const int usb_nvendors = 455;
6349a6354,6357
> USB_VENDOR_SUPERTOP, USB_PRODUCT_SUPERTOP_IDEBRIDGE,
> "SuperTop IDE Bridge",
> },
> {
6826c6834
< const int usb_nproducts = 1241;
---
> const int usb_nproducts = 1242;
--
Patch for netbsd-5:
Index: umass.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass.c,v
retrieving revision 1.129.4.1
diff -r1.129.4.1 umass.c
998a999
> int residue;
1170a1172,1176
> if (sc->sc_quirks & UMASS_QUIRK_IGNORE_RESIDUE)
> residue = sc->transfer_datalen - sc->transfer_actlen;
> else
> residue = UGETDW(sc->csw.dCSWDataResidue);
>
1213,1214c1219
< USBDEVNAME(sc->sc_dev),
< UGETDW(sc->csw.dCSWDataResidue));
---
> USBDEVNAME(sc->sc_dev), residue);
1226c1231
< != UGETDW(sc->csw.dCSWDataResidue)) {
---
> != residue) {
1230c1235
< UGETDW(sc->csw.dCSWDataResidue)));
---
> residue));
1237,1238c1242
< USBDEVNAME(sc->sc_dev),
< UGETDW(sc->csw.dCSWDataResidue)));
---
> USBDEVNAME(sc->sc_dev), residue));
1242,1243c1246
< sc->transfer_cb(sc, sc->transfer_priv,
< UGETDW(sc->csw.dCSWDataResidue),
---
> sc->transfer_cb(sc, sc->transfer_priv, residue,
1250,1251c1253
< sc->transfer_cb(sc, sc->transfer_priv,
< UGETDW(sc->csw.dCSWDataResidue),
---
> sc->transfer_cb(sc, sc->transfer_priv, residue,
Index: umass_quirks.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass_quirks.c,v
retrieving revision 1.76
diff -r1.76 umass_quirks.c
223a224,234
>
> /*
> * Devices with bad residue.
> */
> { { USB_VENDOR_SUPERTOP, USB_PRODUCT_SUPERTOP_IDEBRIDGE },
> UMASS_WPROTO_UNSPEC, UMASS_CPROTO_UNSPEC,
> UMASS_QUIRK_IGNORE_RESIDUE,
> 0,
> UMATCH_VENDOR_PRODUCT,
> NULL, NULL
> },
Index: umassvar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umassvar.h,v
retrieving revision 1.27
diff -r1.27 umassvar.h
182a183
> #define UMASS_QUIRK_IGNORE_RESIDUE 0x00000010
Index: usbdevs
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs,v
retrieving revision 1.519.4.2
diff -r1.519.4.2 usbdevs
456a457
> vendor SUPERTOP 0x14cd SuperTop
2193a2195,2197
> /* SuperTop products */
> product SUPERTOP IDEBRIDGE 0x6600 SuperTop IDE Bridge
>
Index: usbdevs.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.515.4.2
diff -r1.515.4.2 usbdevs.h
1c1
< /* $NetBSD: usbdevs.h,v 1.515.4.2 2009/10/10 20:35:19 sborrill Exp $
*/
---
> /* $NetBSD$ */
463a464
> #define USB_VENDOR_SUPERTOP 0x14cd /* SuperTop */
2200a2202,2204
> /* SuperTop products */
> #define USB_PRODUCT_SUPERTOP_IDEBRIDGE 0x6600 /* SuperTop IDE
Bridge */
>
Index: usbdevs_data.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.516.4.2
diff -r1.516.4.2 usbdevs_data.h
1c1
< /* $NetBSD: usbdevs_data.h,v 1.516.4.2 2009/10/10 20:35:20 sborrill Exp $
*/
---
> /* $NetBSD$ */
1641a1642,1645
> USB_VENDOR_SUPERTOP,
> "SuperTop",
> },
> {
1858c1862
< const int usb_nvendors = 454;
---
> const int usb_nvendors = 455;
6353a6358,6361
> USB_VENDOR_SUPERTOP, USB_PRODUCT_SUPERTOP_IDEBRIDGE,
> "SuperTop IDE Bridge",
> },
> {
6830c6838
< const int usb_nproducts = 1242;
---
> const int usb_nproducts = 1243;
--
Patch for HEAD:
Index: umass.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass.c,v
retrieving revision 1.134
diff -r1.134 umass.c
1014a1015
> int residue;
1186a1188,1192
> if (sc->sc_quirks & UMASS_QUIRK_IGNORE_RESIDUE)
> residue = sc->transfer_datalen - sc->transfer_actlen;
> else
> residue = UGETDW(sc->csw.dCSWDataResidue);
>
1229,1230c1235
< device_xname(sc->sc_dev),
< UGETDW(sc->csw.dCSWDataResidue));
---
> device_xname(sc->sc_dev), residue);
1242c1247
< != UGETDW(sc->csw.dCSWDataResidue)) {
---
> != residue) {
1246c1251
< UGETDW(sc->csw.dCSWDataResidue)));
---
> residue));
1253,1254c1258
< device_xname(sc->sc_dev),
< UGETDW(sc->csw.dCSWDataResidue)));
---
> device_xname(sc->sc_dev), residue));
1258,1259c1262
< sc->transfer_cb(sc, sc->transfer_priv,
< UGETDW(sc->csw.dCSWDataResidue),
---
> sc->transfer_cb(sc, sc->transfer_priv, residue,
1266,1267c1269
< sc->transfer_cb(sc, sc->transfer_priv,
< UGETDW(sc->csw.dCSWDataResidue),
---
> sc->transfer_cb(sc, sc->transfer_priv, residue,
Index: umass_quirks.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass_quirks.c,v
retrieving revision 1.77
diff -r1.77 umass_quirks.c
231a232,242
>
> /*
> * Devices with bad residue.
> */
> { { USB_VENDOR_SUPERTOP, USB_PRODUCT_SUPERTOP_IDEBRIDGE },
> UMASS_WPROTO_UNSPEC, UMASS_CPROTO_UNSPEC,
> UMASS_QUIRK_IGNORE_RESIDUE,
> 0,
> UMATCH_VENDOR_PRODUCT,
> NULL, NULL
> },
Index: umassvar.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umassvar.h,v
retrieving revision 1.27
diff -r1.27 umassvar.h
182a183
> #define UMASS_QUIRK_IGNORE_RESIDUE 0x00000010
Index: usbdevs
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs,v
retrieving revision 1.534
diff -r1.534 usbdevs
466a467
> vendor SUPERTOP 0x14cd SuperTop
2236a2238,2240
> /* SuperTop products */
> product SUPERTOP IDEBRIDGE 0x6600 SuperTop IDE Bridge
>
Index: usbdevs.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs.h,v
retrieving revision 1.528
diff -r1.528 usbdevs.h
1c1
< /* $NetBSD: usbdevs.h,v 1.528 2009/10/12 22:29:16 wiz Exp $ */
---
> /* $NetBSD$ */
473a474
> #define USB_VENDOR_SUPERTOP 0x14cd /* SuperTop */
2243a2245,2247
> /* SuperTop products */
> #define USB_PRODUCT_SUPERTOP_IDEBRIDGE 0x6600 /* SuperTop IDE
Bridge */
>
Index: usbdevs_data.h
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs_data.h,v
retrieving revision 1.529
diff -r1.529 usbdevs_data.h
1c1
< /* $NetBSD: usbdevs_data.h,v 1.529 2009/10/12 22:29:16 wiz Exp $ */
---
> /* $NetBSD$ */
1665a1666,1669
> USB_VENDOR_SUPERTOP,
> "SuperTop",
> },
> {
1886c1890
< const int usb_nvendors = 461;
---
> const int usb_nvendors = 462;
6457a6462,6465
> USB_VENDOR_SUPERTOP, USB_PRODUCT_SUPERTOP_IDEBRIDGE,
> "SuperTop IDE Bridge",
> },
> {
6938c6946
< const int usb_nproducts = 1262;
---
> const int usb_nproducts = 1263;
>Release-Note:
>Audit-Trail:
From: christos@zoulas.com (Christos Zoulas)
To: gnats-bugs@NetBSD.org, kern-bug-people@netbsd.org,
gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Cc:
Subject: Re: kern/42225: can't read data from SuperTop IDE Bridge (umass)
Date: Sat, 24 Oct 2009 16:42:17 -0400
On Oct 24, 8:40pm, kretschm@cs.uni-bonn.de (kretschm@cs.uni-bonn.de) wrote:
-- Subject: kern/42225: can't read data from SuperTop IDE Bridge (umass)
| The problem is, that the device has some quirk, such that the residue information is bad (always zero).
| >How-To-Repeat:
| Just attach the device and try to read/write data using dd.
| >Fix:
| The following patches for netbsd-5-0, netbsd-5 and HEAD branches correct the problem.
|
| I introduced a new umass quirk UMASS_QUIRK_IGNORE_RESIDUE and added a corresponding entry to umass_quirks.c for the specific device. I used the code on 5.0.0_PATCH and 5.0.1_PATCH systems for some months without any problems. I created patches against the code of netbsd-5-0, netbsd-5 and HEAD branches of today. They are given below. I compiled kernels of all three branches and tried the device to check if it performs properly.
|
| According to other operating systems' quirk lists there are many other umass-devices with this quirk. Using this patch and adding a corresponding quirk entry in umass_quirk.c might solve the problem with those devices, too. I did not add further entries, because I only have this single device with the quirk and I'm unable to test the others.
|
Can you please send the 'diff -u' output?
Thanks,
christos
From: Matthias Kretschmer <kretschm@cs.uni-bonn.de>
To: gnats-bugs@NetBSD.org
Cc: christos@zoulas.com, kern-bug-people@netbsd.org,
gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: kern/42225: can't read data from SuperTop IDE Bridge (umass)
Date: Sun, 25 Oct 2009 07:21:57 +0100
--MP_/4T/71M2Z8Xq_A51UiZoIeJ5
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Here it comes ...
On Sat, 24 Oct 2009 20:45:02 +0000 (UTC)
christos@zoulas.com (Christos Zoulas) wrote:
> Can you please send
> the 'diff -u' output? Thanks, christos
--MP_/4T/71M2Z8Xq_A51UiZoIeJ5
Content-Type: application/octet-stream; name=patch-sansun-5-0-u
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=patch-sansun-5-0-u
SW5kZXg6IHVtYXNzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9kZXYv
dXNiL3VtYXNzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTI5LjQuMQpkaWZmIC11IC1yMS4x
MjkuNC4xIHVtYXNzLmMKLS0tIHVtYXNzLmMJMTMgRGVjIDIwMDggMjE6NDQ6NDIgLTAwMDAJMS4x
MjkuNC4xCisrKyB1bWFzcy5jCTI1IE9jdCAyMDA5IDA2OjE2OjQzIC0wMDAwCkBAIC05OTYsNiAr
OTk2LDcgQEAKIHsKIAlzdHJ1Y3QgdW1hc3Nfc29mdGMgKnNjID0gKHN0cnVjdCB1bWFzc19zb2Z0
YyAqKSBwcml2OwogCXVzYmRfeGZlcl9oYW5kbGUgbmV4dF94ZmVyOworCWludCByZXNpZHVlOwog
CiAJS0FTU0VSVChzYy0+c2Nfd2lyZSAmIFVNQVNTX1dQUk9UT19CQkIsCiAJCSgic2MtPnNjX3dp
cmUgPT0gMHglMDJ4IHdyb25nIGZvciB1bWFzc19iYmJfc3RhdGVcbiIsCkBAIC0xMTY4LDYgKzEx
NjksMTEgQEAKIAogCQlESUYoVURNQVNTX0JCQiwgdW1hc3NfYmJiX2R1bXBfY3N3KHNjLCAmc2Mt
PmNzdykpOwogCisJCWlmIChzYy0+c2NfcXVpcmtzICYgVU1BU1NfUVVJUktfSUdOT1JFX1JFU0lE
VUUpCisJCSAgICByZXNpZHVlID0gc2MtPnRyYW5zZmVyX2RhdGFsZW4gLSBzYy0+dHJhbnNmZXJf
YWN0bGVuOworCQllbHNlCisJCSAgICByZXNpZHVlID0gVUdFVERXKHNjLT5jc3cuZENTV0RhdGFS
ZXNpZHVlKTsKKwogCQkvKiBUcmFuc2xhdGUgd2VpcmQgY29tbWFuZC1zdGF0dXMgc2lnbmF0dXJl
cy4gKi8KIAkJaWYgKChzYy0+c2NfcXVpcmtzICYgVU1BU1NfUVVJUktfV1JPTkdfQ1NXU0lHKSAm
JgogCQkgICAgVUdFVERXKHNjLT5jc3cuZENTV1NpZ25hdHVyZSkgPT0gQ1NXU0lHTkFUVVJFX09M
WU1QVVNfQzEpCkBAIC0xMjEwLDggKzEyMTYsNyBAQAogCQkJcmV0dXJuOwogCQl9IGVsc2UgaWYg
KHNjLT5jc3cuYkNTV1N0YXR1cyA9PSBDU1dTVEFUVVNfUEhBU0UpIHsKIAkJCXByaW50ZigiJXM6
IFBoYXNlIEVycm9yLCByZXNpZHVlID0gJWRcbiIsCi0JCQkJVVNCREVWTkFNRShzYy0+c2NfZGV2
KSwKLQkJCQlVR0VURFcoc2MtPmNzdy5kQ1NXRGF0YVJlc2lkdWUpKTsKKwkJCQlVU0JERVZOQU1F
KHNjLT5zY19kZXYpLCByZXNpZHVlKTsKIAogCQkJdW1hc3NfYmJiX3Jlc2V0KHNjLCBTVEFUVVNf
V0lSRV9GQUlMRUQpOwogCQkJcmV0dXJuOwpAQCAtMTIyMywzMiArMTIyOCwyOSBAQAogCQkJCXNj
LT50cmFuc2Zlcl9hY3RsZW4sIHNjLT50cmFuc2Zlcl9kYXRhbGVuKTsKICNpZiAwCiAJCX0gZWxz
ZSBpZiAoc2MtPnRyYW5zZmVyX2RhdGFsZW4gLSBzYy0+dHJhbnNmZXJfYWN0bGVuCi0JCQkgICAh
PSBVR0VURFcoc2MtPmNzdy5kQ1NXRGF0YVJlc2lkdWUpKSB7CisJCQkgICAhPSByZXNpZHVlKSB7
CiAJCQlEUFJJTlRGKFVETUFTU19CQkIsICgiJXM6IGFjdGxlbj0lZCAhPSByZXNpZHVlPSVkXG4i
LAogCQkJCVVTQkRFVk5BTUUoc2MtPnNjX2RldiksCiAJCQkJc2MtPnRyYW5zZmVyX2RhdGFsZW4g
LSBzYy0+dHJhbnNmZXJfYWN0bGVuLAotCQkJCVVHRVREVyhzYy0+Y3N3LmRDU1dEYXRhUmVzaWR1
ZSkpKTsKKwkJCQlyZXNpZHVlKSk7CiAKIAkJCXVtYXNzX2JiYl9yZXNldChzYywgU1RBVFVTX1dJ
UkVfRkFJTEVEKTsKIAkJCXJldHVybjsKICNlbmRpZgogCQl9IGVsc2UgaWYgKHNjLT5jc3cuYkNT
V1N0YXR1cyA9PSBDU1dTVEFUVVNfRkFJTEVEKSB7CiAJCQlEUFJJTlRGKFVETUFTU19CQkIsICgi
JXM6IENvbW1hbmQgRmFpbGVkLCByZXMgPSAlZFxuIiwKLQkJCQlVU0JERVZOQU1FKHNjLT5zY19k
ZXYpLAotCQkJCVVHRVREVyhzYy0+Y3N3LmRDU1dEYXRhUmVzaWR1ZSkpKTsKKwkJCQlVU0JERVZO
QU1FKHNjLT5zY19kZXYpLCByZXNpZHVlKSk7CiAKIAkJCS8qIFNDU0kgY29tbWFuZCBmYWlsZWQg
YnV0IHRyYW5zZmVyIHdhcyBzdWNjZXNmdWwgKi8KIAkJCXNjLT50cmFuc2Zlcl9zdGF0ZSA9IFRT
VEFURV9JRExFOwotCQkJc2MtPnRyYW5zZmVyX2NiKHNjLCBzYy0+dHJhbnNmZXJfcHJpdiwKLQkJ
CQkJVUdFVERXKHNjLT5jc3cuZENTV0RhdGFSZXNpZHVlKSwKKwkJCXNjLT50cmFuc2Zlcl9jYihz
Yywgc2MtPnRyYW5zZmVyX3ByaXYsIHJlc2lkdWUsCiAJCQkJCVNUQVRVU19DTURfRkFJTEVEKTsK
IAogCQkJcmV0dXJuOwogCiAJCX0gZWxzZSB7CS8qIHN1Y2Nlc3MgKi8KIAkJCXNjLT50cmFuc2Zl
cl9zdGF0ZSA9IFRTVEFURV9JRExFOwotCQkJc2MtPnRyYW5zZmVyX2NiKHNjLCBzYy0+dHJhbnNm
ZXJfcHJpdiwKLQkJCQkJVUdFVERXKHNjLT5jc3cuZENTV0RhdGFSZXNpZHVlKSwKKwkJCXNjLT50
cmFuc2Zlcl9jYihzYywgc2MtPnRyYW5zZmVyX3ByaXYsIHJlc2lkdWUsCiAJCQkJCVNUQVRVU19D
TURfT0spOwogCiAJCQlyZXR1cm47CkluZGV4OiB1bWFzc19xdWlya3MuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Rldi91c2IvdW1hc3NfcXVpcmtzLmMsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNzYKZGlmZiAtdSAtcjEuNzYgdW1hc3NfcXVpcmtzLmMKLS0tIHVtYXNz
X3F1aXJrcy5jCTI3IE9jdCAyMDA4IDIxOjQ2OjQzIC0wMDAwCTEuNzYKKysrIHVtYXNzX3F1aXJr
cy5jCTI1IE9jdCAyMDA5IDA2OjE2OjQzIC0wMDAwCkBAIC0yMjEsNiArMjIxLDE3IEBACiAJICBV
TUFUQ0hfVkVORE9SX1BST0RVQ1QsCiAJICBOVUxMLCBOVUxMCiAJfSwKKworCS8qCisJICogRGV2
aWNlcyB3aXRoIGJhZCByZXNpZHVlLgorCSAqLworCXsgeyBVU0JfVkVORE9SX1NVUEVSVE9QLCBV
U0JfUFJPRFVDVF9TVVBFUlRPUF9JREVCUklER0UgfSwKKwkgIFVNQVNTX1dQUk9UT19VTlNQRUMs
IFVNQVNTX0NQUk9UT19VTlNQRUMsCisJICBVTUFTU19RVUlSS19JR05PUkVfUkVTSURVRSwKKwkg
IDAsCisJICBVTUFUQ0hfVkVORE9SX1BST0RVQ1QsCisJICBOVUxMLCBOVUxMCisJfSwKIH07CiAK
IGNvbnN0IHN0cnVjdCB1bWFzc19xdWlyayAqCkluZGV4OiB1bWFzc3Zhci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvZGV2L3VzYi91bWFzc3Zhci5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjI3CmRpZmYgLXUgLXIxLjI3IHVtYXNzdmFyLmgKLS0tIHVtYXNzdmFyLmgJ
NiBTZXAgMjAwOCAyMTo0OTowMCAtMDAwMAkxLjI3CisrKyB1bWFzc3Zhci5oCTI1IE9jdCAyMDA5
IDA2OjE2OjQzIC0wMDAwCkBAIC0xODAsNiArMTgwLDcgQEAKICNkZWZpbmUJVU1BU1NfUVVJUktf
V1JPTkdfQ1NXVEFHCTB4MDAwMDAwMDIKICNkZWZpbmUJVU1BU1NfUVVJUktfUkJDX1BBRF9UT18x
MgkweDAwMDAwMDA0CiAjZGVmaW5lCVVNQVNTX1FVSVJLX05PR0VUTUFYTFVOCQkweDAwMDAwMDA4
CisjZGVmaW5lIFVNQVNTX1FVSVJLX0lHTk9SRV9SRVNJRFVFCTB4MDAwMDAwMTAKIAogI2RlZmlu
ZSBVTUFTU19RVUlSS19VU0VfREVGQVVMVE1BVENICS0xCiAKSW5kZXg6IHVzYmRldnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9kZXYvdXNiL3VzYmRldnMsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNTE5LjQuMQpkaWZmIC11IC1yMS41MTkuNC4xIHVzYmRldnMKLS0tIHVz
YmRldnMJMjIgTm92IDIwMDggMDU6MTA6MDcgLTAwMDAJMS41MTkuNC4xCisrKyB1c2JkZXZzCTI1
IE9jdCAyMDA5IDA2OjE2OjQ0IC0wMDAwCkBAIC00NTQsNiArNDU0LDcgQEAKIHZlbmRvciBSQUxJ
TksJCTB4MTQ4NQlSYWxpbmsgVGVjaG5vbG9neQogdmVuZG9yIFJBTElOS18yCQkweDE0OGYJUmFs
aW5rIFRlY2hub2xvZ3kKIHZlbmRvciBDT05DRVBUUk9OSUMJMHgxNGIyCUNvbmNlcHRyb25pYwor
dmVuZG9yIFNVUEVSVE9QCQkweDE0Y2QJU3VwZXJUb3AKIHZlbmRvciBQTEFORVgzCQkweDE0ZWEJ
UGxhbmV4IENvbW11bmljYXRpb25zCiB2ZW5kb3IgU0lMSUNPTlBPUlRBTFMJMHgxNTI3CVNpbGlj
b24gUG9ydGFscwogdmVuZG9yIE9RTwkJMHgxNTU3CU9RTwpAQCAtMjE5MSw2ICsyMTkyLDkgQEAK
IC8qIFhYWCBUaGUgYWJvdmUgaXMgYSBOb3J0aCBBbWVyaWNhbiBQQyBzdHlsZSBrZXlib2FyZCBw
b3NzaWJseSAqLwogcHJvZHVjdCBTVU4gTU9VU0UJCTB4MDEwMAlUeXBlIDYgVVNCIG1vdXNlCiAK
Ky8qIFN1cGVyVG9wIHByb2R1Y3RzICovCitwcm9kdWN0IFNVUEVSVE9QIElERUJSSURHRQkweDY2
MDAJU3VwZXJUb3AgSURFIEJyaWRnZQorCiAvKiBTdXByYSBwcm9kdWN0cyAqLwogcHJvZHVjdCBE
SUFNT05EMiBTVVBSQUVYUFJFU1M1NksgMHgwN2RhIFN1cHJhIEV4cHJlc3MgNTZLIG1vZGVtCiBw
cm9kdWN0IERJQU1PTkQyIFNVUFJBMjg5MAkweDBiNGEJU3VwcmFNYXggMjg5MCA1NksgTW9kZW0K
SW5kZXg6IHVzYmRldnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Rl
di91c2IvdXNiZGV2cy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUxNS40LjEKZGlmZiAtdSAt
cjEuNTE1LjQuMSB1c2JkZXZzLmgKLS0tIHVzYmRldnMuaAkyMiBOb3YgMjAwOCAwNToxMjoxOCAt
MDAwMAkxLjUxNS40LjEKKysrIHVzYmRldnMuaAkyNSBPY3QgMjAwOSAwNjoxNjo0NiAtMDAwMApA
QCAtMSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IHVzYmRldnMuaCx2IDEuNTE1LjQuMSAyMDA4LzEx
LzIyIDA1OjEyOjE4IHNuaiBFeHAgJAkqLworLyoJJE5ldEJTRCQJKi8KIAogLyoKICAqIFRISVMg
RklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRFRC4gIERPIE5PVCBFRElULgpAQCAtNDYxLDYg
KzQ2MSw3IEBACiAjZGVmaW5lCVVTQl9WRU5ET1JfUkFMSU5LCTB4MTQ4NQkJLyogUmFsaW5rIFRl
Y2hub2xvZ3kgKi8KICNkZWZpbmUJVVNCX1ZFTkRPUl9SQUxJTktfMgkweDE0OGYJCS8qIFJhbGlu
ayBUZWNobm9sb2d5ICovCiAjZGVmaW5lCVVTQl9WRU5ET1JfQ09OQ0VQVFJPTklDCTB4MTRiMgkJ
LyogQ29uY2VwdHJvbmljICovCisjZGVmaW5lCVVTQl9WRU5ET1JfU1VQRVJUT1AJMHgxNGNkCQkv
KiBTdXBlclRvcCAqLwogI2RlZmluZQlVU0JfVkVORE9SX1BMQU5FWDMJMHgxNGVhCQkvKiBQbGFu
ZXggQ29tbXVuaWNhdGlvbnMgKi8KICNkZWZpbmUJVVNCX1ZFTkRPUl9TSUxJQ09OUE9SVEFMUwkw
eDE1MjcJCS8qIFNpbGljb24gUG9ydGFscyAqLwogI2RlZmluZQlVU0JfVkVORE9SX09RTwkweDE1
NTcJCS8qIE9RTyAqLwpAQCAtMjE5OCw2ICsyMTk5LDkgQEAKIC8qIFhYWCBUaGUgYWJvdmUgaXMg
YSBOb3J0aCBBbWVyaWNhbiBQQyBzdHlsZSBrZXlib2FyZCBwb3NzaWJseSAqLwogI2RlZmluZQlV
U0JfUFJPRFVDVF9TVU5fTU9VU0UJMHgwMTAwCQkvKiBUeXBlIDYgVVNCIG1vdXNlICovCiAKKy8q
IFN1cGVyVG9wIHByb2R1Y3RzICovCisjZGVmaW5lCVVTQl9QUk9EVUNUX1NVUEVSVE9QX0lERUJS
SURHRQkweDY2MDAJCS8qIFN1cGVyVG9wIElERSBCcmlkZ2UgKi8KKwogLyogU3VwcmEgcHJvZHVj
dHMgKi8KICNkZWZpbmUJVVNCX1BST0RVQ1RfRElBTU9ORDJfU1VQUkFFWFBSRVNTNTZLCTB4MDdk
YQkJLyogU3VwcmEgRXhwcmVzcyA1NksgbW9kZW0gKi8KICNkZWZpbmUJVVNCX1BST0RVQ1RfRElB
TU9ORDJfU1VQUkEyODkwCTB4MGI0YQkJLyogU3VwcmFNYXggMjg5MCA1NksgTW9kZW0gKi8KSW5k
ZXg6IHVzYmRldnNfZGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMv
ZGV2L3VzYi91c2JkZXZzX2RhdGEuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41MTYuNC4xCmRp
ZmYgLXUgLXIxLjUxNi40LjEgdXNiZGV2c19kYXRhLmgKLS0tIHVzYmRldnNfZGF0YS5oCTIyIE5v
diAyMDA4IDA1OjEyOjE4IC0wMDAwCTEuNTE2LjQuMQorKysgdXNiZGV2c19kYXRhLmgJMjUgT2N0
IDIwMDkgMDY6MTY6NDggLTAwMDAKQEAgLTEsNCArMSw0IEBACi0vKgkkTmV0QlNEOiB1c2JkZXZz
X2RhdGEuaCx2IDEuNTE2LjQuMSAyMDA4LzExLzIyIDA1OjEyOjE4IHNuaiBFeHAgJAkqLworLyoJ
JE5ldEJTRCQJKi8KIAogLyoKICAqIFRISVMgRklMRSBJUyBBVVRPTUFUSUNBTExZIEdFTkVSQVRF
RC4gIERPIE5PVCBFRElULgpAQCAtMTYzOSw2ICsxNjM5LDEwIEBACiAJICAgICJDb25jZXB0cm9u
aWMiLAogCX0sCiAJeworCSAgICBVU0JfVkVORE9SX1NVUEVSVE9QLAorCSAgICAiU3VwZXJUb3Ai
LAorCX0sCisJewogCSAgICBVU0JfVkVORE9SX1BMQU5FWDMsCiAJICAgICJQbGFuZXggQ29tbXVu
aWNhdGlvbnMiLAogCX0sCkBAIC0xODU1LDcgKzE4NTksNyBAQAogCSAgICAiR05VIFJhZGlvIFVT
UlAiLAogCX0sCiB9OwotY29uc3QgaW50IHVzYl9udmVuZG9ycyA9IDQ1NDsKK2NvbnN0IGludCB1
c2JfbnZlbmRvcnMgPSA0NTU7CiAKIGNvbnN0IHN0cnVjdCB1c2JfcHJvZHVjdCB1c2JfcHJvZHVj
dHNbXSA9IHsKIAl7CkBAIC02MzQ3LDYgKzYzNTEsMTAgQEAKIAkgICAgIlR5cGUgNiBVU0IgbW91
c2UiLAogCX0sCiAJeworCSAgICBVU0JfVkVORE9SX1NVUEVSVE9QLCBVU0JfUFJPRFVDVF9TVVBF
UlRPUF9JREVCUklER0UsCisJICAgICJTdXBlclRvcCBJREUgQnJpZGdlIiwKKwl9LAorCXsKIAkg
ICAgVVNCX1ZFTkRPUl9ESUFNT05EMiwgVVNCX1BST0RVQ1RfRElBTU9ORDJfU1VQUkFFWFBSRVNT
NTZLLAogCSAgICAiU3VwcmEgRXhwcmVzcyA1NksgbW9kZW0iLAogCX0sCkBAIC02ODIzLDQgKzY4
MzEsNCBAQAogCSAgICAiUHJlc3RpZ2UiLAogCX0sCiB9OwotY29uc3QgaW50IHVzYl9ucHJvZHVj
dHMgPSAxMjQxOworY29uc3QgaW50IHVzYl9ucHJvZHVjdHMgPSAxMjQyOwo=
--MP_/4T/71M2Z8Xq_A51UiZoIeJ5
Content-Type: application/octet-stream; name=patch-sansun-5-u
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=patch-sansun-5-u
SW5kZXg6IHVtYXNzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9kZXYv
dXNiL3VtYXNzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTI5LjQuMQpkaWZmIC11IC1yMS4x
MjkuNC4xIHVtYXNzLmMKLS0tIHVtYXNzLmMJMTMgRGVjIDIwMDggMjE6NDQ6NDIgLTAwMDAJMS4x
MjkuNC4xCisrKyB1bWFzcy5jCTI1IE9jdCAyMDA5IDA2OjE3OjA3IC0wMDAwCkBAIC05OTYsNiAr
OTk2LDcgQEAKIHsKIAlzdHJ1Y3QgdW1hc3Nfc29mdGMgKnNjID0gKHN0cnVjdCB1bWFzc19zb2Z0
YyAqKSBwcml2OwogCXVzYmRfeGZlcl9oYW5kbGUgbmV4dF94ZmVyOworCWludCByZXNpZHVlOwog
CiAJS0FTU0VSVChzYy0+c2Nfd2lyZSAmIFVNQVNTX1dQUk9UT19CQkIsCiAJCSgic2MtPnNjX3dp
cmUgPT0gMHglMDJ4IHdyb25nIGZvciB1bWFzc19iYmJfc3RhdGVcbiIsCkBAIC0xMTY4LDYgKzEx
NjksMTEgQEAKIAogCQlESUYoVURNQVNTX0JCQiwgdW1hc3NfYmJiX2R1bXBfY3N3KHNjLCAmc2Mt
PmNzdykpOwogCisJCWlmIChzYy0+c2NfcXVpcmtzICYgVU1BU1NfUVVJUktfSUdOT1JFX1JFU0lE
VUUpCisJCSAgICByZXNpZHVlID0gc2MtPnRyYW5zZmVyX2RhdGFsZW4gLSBzYy0+dHJhbnNmZXJf
YWN0bGVuOworCQllbHNlCisJCSAgICByZXNpZHVlID0gVUdFVERXKHNjLT5jc3cuZENTV0RhdGFS
ZXNpZHVlKTsKKwogCQkvKiBUcmFuc2xhdGUgd2VpcmQgY29tbWFuZC1zdGF0dXMgc2lnbmF0dXJl
cy4gKi8KIAkJaWYgKChzYy0+c2NfcXVpcmtzICYgVU1BU1NfUVVJUktfV1JPTkdfQ1NXU0lHKSAm
JgogCQkgICAgVUdFVERXKHNjLT5jc3cuZENTV1NpZ25hdHVyZSkgPT0gQ1NXU0lHTkFUVVJFX09M
WU1QVVNfQzEpCkBAIC0xMjEwLDggKzEyMTYsNyBAQAogCQkJcmV0dXJuOwogCQl9IGVsc2UgaWYg
KHNjLT5jc3cuYkNTV1N0YXR1cyA9PSBDU1dTVEFUVVNfUEhBU0UpIHsKIAkJCXByaW50ZigiJXM6
IFBoYXNlIEVycm9yLCByZXNpZHVlID0gJWRcbiIsCi0JCQkJVVNCREVWTkFNRShzYy0+c2NfZGV2
KSwKLQkJCQlVR0VURFcoc2MtPmNzdy5kQ1NXRGF0YVJlc2lkdWUpKTsKKwkJCQlVU0JERVZOQU1F
KHNjLT5zY19kZXYpLCByZXNpZHVlKTsKIAogCQkJdW1hc3NfYmJiX3Jlc2V0KHNjLCBTVEFUVVNf
V0lSRV9GQUlMRUQpOwogCQkJcmV0dXJuOwpAQCAtMTIyMywzMiArMTIyOCwyOSBAQAogCQkJCXNj
LT50cmFuc2Zlcl9hY3RsZW4sIHNjLT50cmFuc2Zlcl9kYXRhbGVuKTsKICNpZiAwCiAJCX0gZWxz
ZSBpZiAoc2MtPnRyYW5zZmVyX2RhdGFsZW4gLSBzYy0+dHJhbnNmZXJfYWN0bGVuCi0JCQkgICAh
PSBVR0VURFcoc2MtPmNzdy5kQ1NXRGF0YVJlc2lkdWUpKSB7CisJCQkgICAhPSByZXNpZHVlKSB7
CiAJCQlEUFJJTlRGKFVETUFTU19CQkIsICgiJXM6IGFjdGxlbj0lZCAhPSByZXNpZHVlPSVkXG4i
LAogCQkJCVVTQkRFVk5BTUUoc2MtPnNjX2RldiksCiAJCQkJc2MtPnRyYW5zZmVyX2RhdGFsZW4g
LSBzYy0+dHJhbnNmZXJfYWN0bGVuLAotCQkJCVVHRVREVyhzYy0+Y3N3LmRDU1dEYXRhUmVzaWR1
ZSkpKTsKKwkJCQlyZXNpZHVlKSk7CiAKIAkJCXVtYXNzX2JiYl9yZXNldChzYywgU1RBVFVTX1dJ
UkVfRkFJTEVEKTsKIAkJCXJldHVybjsKICNlbmRpZgogCQl9IGVsc2UgaWYgKHNjLT5jc3cuYkNT
V1N0YXR1cyA9PSBDU1dTVEFUVVNfRkFJTEVEKSB7CiAJCQlEUFJJTlRGKFVETUFTU19CQkIsICgi
JXM6IENvbW1hbmQgRmFpbGVkLCByZXMgPSAlZFxuIiwKLQkJCQlVU0JERVZOQU1FKHNjLT5zY19k
ZXYpLAotCQkJCVVHRVREVyhzYy0+Y3N3LmRDU1dEYXRhUmVzaWR1ZSkpKTsKKwkJCQlVU0JERVZO
QU1FKHNjLT5zY19kZXYpLCByZXNpZHVlKSk7CiAKIAkJCS8qIFNDU0kgY29tbWFuZCBmYWlsZWQg
YnV0IHRyYW5zZmVyIHdhcyBzdWNjZXNmdWwgKi8KIAkJCXNjLT50cmFuc2Zlcl9zdGF0ZSA9IFRT
VEFURV9JRExFOwotCQkJc2MtPnRyYW5zZmVyX2NiKHNjLCBzYy0+dHJhbnNmZXJfcHJpdiwKLQkJ
CQkJVUdFVERXKHNjLT5jc3cuZENTV0RhdGFSZXNpZHVlKSwKKwkJCXNjLT50cmFuc2Zlcl9jYihz
Yywgc2MtPnRyYW5zZmVyX3ByaXYsIHJlc2lkdWUsCiAJCQkJCVNUQVRVU19DTURfRkFJTEVEKTsK
IAogCQkJcmV0dXJuOwogCiAJCX0gZWxzZSB7CS8qIHN1Y2Nlc3MgKi8KIAkJCXNjLT50cmFuc2Zl
cl9zdGF0ZSA9IFRTVEFURV9JRExFOwotCQkJc2MtPnRyYW5zZmVyX2NiKHNjLCBzYy0+dHJhbnNm
ZXJfcHJpdiwKLQkJCQkJVUdFVERXKHNjLT5jc3cuZENTV0RhdGFSZXNpZHVlKSwKKwkJCXNjLT50
cmFuc2Zlcl9jYihzYywgc2MtPnRyYW5zZmVyX3ByaXYsIHJlc2lkdWUsCiAJCQkJCVNUQVRVU19D
TURfT0spOwogCiAJCQlyZXR1cm47CkluZGV4OiB1bWFzc19xdWlya3MuYwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Rldi91c2IvdW1hc3NfcXVpcmtzLmMsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNzYKZGlmZiAtdSAtcjEuNzYgdW1hc3NfcXVpcmtzLmMKLS0tIHVtYXNz
X3F1aXJrcy5jCTI3IE9jdCAyMDA4IDIxOjQ2OjQzIC0wMDAwCTEuNzYKKysrIHVtYXNzX3F1aXJr
cy5jCTI1IE9jdCAyMDA5IDA2OjE3OjA4IC0wMDAwCkBAIC0yMjEsNiArMjIxLDE3IEBACiAJICBV
TUFUQ0hfVkVORE9SX1BST0RVQ1QsCiAJICBOVUxMLCBOVUxMCiAJfSwKKworCS8qCisJICogRGV2
aWNlcyB3aXRoIGJhZCByZXNpZHVlLgorCSAqLworCXsgeyBVU0JfVkVORE9SX1NVUEVSVE9QLCBV
U0JfUFJPRFVDVF9TVVBFUlRPUF9JREVCUklER0UgfSwKKwkgIFVNQVNTX1dQUk9UT19VTlNQRUMs
IFVNQVNTX0NQUk9UT19VTlNQRUMsCisJICBVTUFTU19RVUlSS19JR05PUkVfUkVTSURVRSwKKwkg
IDAsCisJICBVTUFUQ0hfVkVORE9SX1BST0RVQ1QsCisJICBOVUxMLCBOVUxMCisJfSwKIH07CiAK
IGNvbnN0IHN0cnVjdCB1bWFzc19xdWlyayAqCkluZGV4OiB1bWFzc3Zhci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvZGV2L3VzYi91bWFzc3Zhci5oLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjI3CmRpZmYgLXUgLXIxLjI3IHVtYXNzdmFyLmgKLS0tIHVtYXNzdmFyLmgJ
NiBTZXAgMjAwOCAyMTo0OTowMCAtMDAwMAkxLjI3CisrKyB1bWFzc3Zhci5oCTI1IE9jdCAyMDA5
IDA2OjE3OjA4IC0wMDAwCkBAIC0xODAsNiArMTgwLDcgQEAKICNkZWZpbmUJVU1BU1NfUVVJUktf
V1JPTkdfQ1NXVEFHCTB4MDAwMDAwMDIKICNkZWZpbmUJVU1BU1NfUVVJUktfUkJDX1BBRF9UT18x
MgkweDAwMDAwMDA0CiAjZGVmaW5lCVVNQVNTX1FVSVJLX05PR0VUTUFYTFVOCQkweDAwMDAwMDA4
CisjZGVmaW5lIFVNQVNTX1FVSVJLX0lHTk9SRV9SRVNJRFVFCTB4MDAwMDAwMTAKIAogI2RlZmlu
ZSBVTUFTU19RVUlSS19VU0VfREVGQVVMVE1BVENICS0xCiAKSW5kZXg6IHVzYmRldnMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9kZXYvdXNiL3VzYmRldnMsdgpyZXRyaWV2
aW5nIHJldmlzaW9uIDEuNTE5LjQuMgpkaWZmIC11IC1yMS41MTkuNC4yIHVzYmRldnMKLS0tIHVz
YmRldnMJMTAgT2N0IDIwMDkgMjA6MzQ6NDUgLTAwMDAJMS41MTkuNC4yCisrKyB1c2JkZXZzCTI1
IE9jdCAyMDA5IDA2OjE3OjA5IC0wMDAwCkBAIC00NTQsNiArNDU0LDcgQEAKIHZlbmRvciBSQUxJ
TksJCTB4MTQ4NQlSYWxpbmsgVGVjaG5vbG9neQogdmVuZG9yIFJBTElOS18yCQkweDE0OGYJUmFs
aW5rIFRlY2hub2xvZ3kKIHZlbmRvciBDT05DRVBUUk9OSUMJMHgxNGIyCUNvbmNlcHRyb25pYwor
dmVuZG9yIFNVUEVSVE9QCQkweDE0Y2QJU3VwZXJUb3AKIHZlbmRvciBQTEFORVgzCQkweDE0ZWEJ
UGxhbmV4IENvbW11bmljYXRpb25zCiB2ZW5kb3IgU0lMSUNPTlBPUlRBTFMJMHgxNTI3CVNpbGlj
b24gUG9ydGFscwogdmVuZG9yIE9RTwkJMHgxNTU3CU9RTwpAQCAtMjE5MSw2ICsyMTkyLDkgQEAK
IHByb2R1Y3QgU1VOIEtFWUJPQVJEX1RZUEVfNwkweDAwYTIJVHlwZSA3IFVTQiBrZXlib2FyZAog
LyogWFhYIFRoZSBhYm92ZSBpcyBhIE5vcnRoIEFtZXJpY2FuIFBDIHN0eWxlIGtleWJvYXJkIHBv
c3NpYmx5ICovCiBwcm9kdWN0IFNVTiBNT1VTRQkJMHgwMTAwCVR5cGUgNiBVU0IgbW91c2UKKy8q
IFN1cGVyVG9wIHByb2R1Y3RzICovCitwcm9kdWN0IFNVUEVSVE9QIElERUJSSURHRQkweDY2MDAJ
U3VwZXJUb3AgSURFIEJyaWRnZQorCiAKIC8qIFN1cHJhIHByb2R1Y3RzICovCiBwcm9kdWN0IERJ
QU1PTkQyIFNVUFJBRVhQUkVTUzU2SyAweDA3ZGEgU3VwcmEgRXhwcmVzcyA1NksgbW9kZW0KSW5k
ZXg6IHVzYmRldnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Rldi91
c2IvdXNiZGV2cy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUxNS40LjIKZGlmZiAtdSAtcjEu
NTE1LjQuMiB1c2JkZXZzLmgKLS0tIHVzYmRldnMuaAkxMCBPY3QgMjAwOSAyMDozNToxOSAtMDAw
MAkxLjUxNS40LjIKKysrIHVzYmRldnMuaAkyNSBPY3QgMjAwOSAwNjoxNzoxMCAtMDAwMApAQCAt
MSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IHVzYmRldnMuaCx2IDEuNTE1LjQuMiAyMDA5LzEwLzEw
IDIwOjM1OjE5IHNib3JyaWxsIEV4cCAkCSovCisvKgkkTmV0QlNEJAkqLwogCiAvKgogICogVEhJ
UyBGSUxFIElTIEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVELiAgRE8gTk9UIEVESVQuCkBAIC00NjEs
NiArNDYxLDcgQEAKICNkZWZpbmUJVVNCX1ZFTkRPUl9SQUxJTksJMHgxNDg1CQkvKiBSYWxpbmsg
VGVjaG5vbG9neSAqLwogI2RlZmluZQlVU0JfVkVORE9SX1JBTElOS18yCTB4MTQ4ZgkJLyogUmFs
aW5rIFRlY2hub2xvZ3kgKi8KICNkZWZpbmUJVVNCX1ZFTkRPUl9DT05DRVBUUk9OSUMJMHgxNGIy
CQkvKiBDb25jZXB0cm9uaWMgKi8KKyNkZWZpbmUJVVNCX1ZFTkRPUl9TVVBFUlRPUAkweDE0Y2QJ
CS8qIFN1cGVyVG9wICovCiAjZGVmaW5lCVVTQl9WRU5ET1JfUExBTkVYMwkweDE0ZWEJCS8qIFBs
YW5leCBDb21tdW5pY2F0aW9ucyAqLwogI2RlZmluZQlVU0JfVkVORE9SX1NJTElDT05QT1JUQUxT
CTB4MTUyNwkJLyogU2lsaWNvbiBQb3J0YWxzICovCiAjZGVmaW5lCVVTQl9WRU5ET1JfT1FPCTB4
MTU1NwkJLyogT1FPICovCkBAIC0yMTk4LDYgKzIxOTksOSBAQAogI2RlZmluZQlVU0JfUFJPRFVD
VF9TVU5fS0VZQk9BUkRfVFlQRV83CTB4MDBhMgkJLyogVHlwZSA3IFVTQiBrZXlib2FyZCAqLwog
LyogWFhYIFRoZSBhYm92ZSBpcyBhIE5vcnRoIEFtZXJpY2FuIFBDIHN0eWxlIGtleWJvYXJkIHBv
c3NpYmx5ICovCiAjZGVmaW5lCVVTQl9QUk9EVUNUX1NVTl9NT1VTRQkweDAxMDAJCS8qIFR5cGUg
NiBVU0IgbW91c2UgKi8KKy8qIFN1cGVyVG9wIHByb2R1Y3RzICovCisjZGVmaW5lCVVTQl9QUk9E
VUNUX1NVUEVSVE9QX0lERUJSSURHRQkweDY2MDAJCS8qIFN1cGVyVG9wIElERSBCcmlkZ2UgKi8K
KwogCiAvKiBTdXByYSBwcm9kdWN0cyAqLwogI2RlZmluZQlVU0JfUFJPRFVDVF9ESUFNT05EMl9T
VVBSQUVYUFJFU1M1NksJMHgwN2RhCQkvKiBTdXByYSBFeHByZXNzIDU2SyBtb2RlbSAqLwpJbmRl
eDogdXNiZGV2c19kYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9k
ZXYvdXNiL3VzYmRldnNfZGF0YS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUxNi40LjIKZGlm
ZiAtdSAtcjEuNTE2LjQuMiB1c2JkZXZzX2RhdGEuaAotLS0gdXNiZGV2c19kYXRhLmgJMTAgT2N0
IDIwMDkgMjA6MzU6MjAgLTAwMDAJMS41MTYuNC4yCisrKyB1c2JkZXZzX2RhdGEuaAkyNSBPY3Qg
MjAwOSAwNjoxNzoxMiAtMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qCSROZXRCU0Q6IHVzYmRldnNf
ZGF0YS5oLHYgMS41MTYuNC4yIDIwMDkvMTAvMTAgMjA6MzU6MjAgc2JvcnJpbGwgRXhwICQJKi8K
Ky8qCSROZXRCU0QkCSovCiAKIC8qCiAgKiBUSElTIEZJTEUgSVMgQVVUT01BVElDQUxMWSBHRU5F
UkFURUQuICBETyBOT1QgRURJVC4KQEAgLTE2MzksNiArMTYzOSwxMCBAQAogCSAgICAiQ29uY2Vw
dHJvbmljIiwKIAl9LAogCXsKKwkgICAgVVNCX1ZFTkRPUl9TVVBFUlRPUCwKKwkgICAgIlN1cGVy
VG9wIiwKKwl9LAorCXsKIAkgICAgVVNCX1ZFTkRPUl9QTEFORVgzLAogCSAgICAiUGxhbmV4IENv
bW11bmljYXRpb25zIiwKIAl9LApAQCAtMTg1NSw3ICsxODU5LDcgQEAKIAkgICAgIkdOVSBSYWRp
byBVU1JQIiwKIAl9LAogfTsKLWNvbnN0IGludCB1c2JfbnZlbmRvcnMgPSA0NTQ7Citjb25zdCBp
bnQgdXNiX252ZW5kb3JzID0gNDU1OwogCiBjb25zdCBzdHJ1Y3QgdXNiX3Byb2R1Y3QgdXNiX3By
b2R1Y3RzW10gPSB7CiAJewpAQCAtNjM1MSw2ICs2MzU1LDEwIEBACiAJICAgICJUeXBlIDYgVVNC
IG1vdXNlIiwKIAl9LAogCXsKKwkgICAgVVNCX1ZFTkRPUl9TVVBFUlRPUCwgVVNCX1BST0RVQ1Rf
U1VQRVJUT1BfSURFQlJJREdFLAorCSAgICAiU3VwZXJUb3AgSURFIEJyaWRnZSIsCisJfSwKKwl7
CiAJICAgIFVTQl9WRU5ET1JfRElBTU9ORDIsIFVTQl9QUk9EVUNUX0RJQU1PTkQyX1NVUFJBRVhQ
UkVTUzU2SywKIAkgICAgIlN1cHJhIEV4cHJlc3MgNTZLIG1vZGVtIiwKIAl9LApAQCAtNjgyNyw0
ICs2ODM1LDQgQEAKIAkgICAgIlByZXN0aWdlIiwKIAl9LAogfTsKLWNvbnN0IGludCB1c2JfbnBy
b2R1Y3RzID0gMTI0MjsKK2NvbnN0IGludCB1c2JfbnByb2R1Y3RzID0gMTI0MzsK
--MP_/4T/71M2Z8Xq_A51UiZoIeJ5
Content-Type: application/octet-stream; name=patch-sansun-CURRENT-u
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=patch-sansun-CURRENT-u
SW5kZXg6IHVtYXNzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9kZXYv
dXNiL3VtYXNzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTM0CmRpZmYgLXUgLXIxLjEzNCB1
bWFzcy5jCi0tLSB1bWFzcy5jCTIzIFNlcCAyMDA5IDE5OjA3OjE5IC0wMDAwCTEuMTM0CisrKyB1
bWFzcy5jCTI1IE9jdCAyMDA5IDA2OjE3OjI0IC0wMDAwCkBAIC0xMDEyLDYgKzEwMTIsNyBAQAog
ewogCXN0cnVjdCB1bWFzc19zb2Z0YyAqc2MgPSAoc3RydWN0IHVtYXNzX3NvZnRjICopIHByaXY7
CiAJdXNiZF94ZmVyX2hhbmRsZSBuZXh0X3hmZXI7CisJaW50IHJlc2lkdWU7CiAKIAlLQVNTRVJU
KHNjLT5zY193aXJlICYgVU1BU1NfV1BST1RPX0JCQiwKIAkJKCJzYy0+c2Nfd2lyZSA9PSAweCUw
Mnggd3JvbmcgZm9yIHVtYXNzX2JiYl9zdGF0ZVxuIiwKQEAgLTExODQsNiArMTE4NSwxMSBAQAog
CiAJCURJRihVRE1BU1NfQkJCLCB1bWFzc19iYmJfZHVtcF9jc3coc2MsICZzYy0+Y3N3KSk7CiAK
KwkJaWYgKHNjLT5zY19xdWlya3MgJiBVTUFTU19RVUlSS19JR05PUkVfUkVTSURVRSkKKyAgICAg
ICAgICAgICAgICAgICAgcmVzaWR1ZSA9IHNjLT50cmFuc2Zlcl9kYXRhbGVuIC0gc2MtPnRyYW5z
ZmVyX2FjdGxlbjsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJl
c2lkdWUgPSBVR0VURFcoc2MtPmNzdy5kQ1NXRGF0YVJlc2lkdWUpOworCiAJCS8qIFRyYW5zbGF0
ZSB3ZWlyZCBjb21tYW5kLXN0YXR1cyBzaWduYXR1cmVzLiAqLwogCQlpZiAoKHNjLT5zY19xdWly
a3MgJiBVTUFTU19RVUlSS19XUk9OR19DU1dTSUcpICYmCiAJCSAgICBVR0VURFcoc2MtPmNzdy5k
Q1NXU2lnbmF0dXJlKSA9PSBDU1dTSUdOQVRVUkVfT0xZTVBVU19DMSkKQEAgLTEyMjYsOCArMTIz
Miw3IEBACiAJCQlyZXR1cm47CiAJCX0gZWxzZSBpZiAoc2MtPmNzdy5iQ1NXU3RhdHVzID09IENT
V1NUQVRVU19QSEFTRSkgewogCQkJcHJpbnRmKCIlczogUGhhc2UgRXJyb3IsIHJlc2lkdWUgPSAl
ZFxuIiwKLQkJCQlkZXZpY2VfeG5hbWUoc2MtPnNjX2RldiksCi0JCQkJVUdFVERXKHNjLT5jc3cu
ZENTV0RhdGFSZXNpZHVlKSk7CisJCQkJZGV2aWNlX3huYW1lKHNjLT5zY19kZXYpLCByZXNpZHVl
KTsKIAogCQkJdW1hc3NfYmJiX3Jlc2V0KHNjLCBTVEFUVVNfV0lSRV9GQUlMRUQpOwogCQkJcmV0
dXJuOwpAQCAtMTIzOSwzMiArMTI0NCwyOSBAQAogCQkJCXNjLT50cmFuc2Zlcl9hY3RsZW4sIHNj
LT50cmFuc2Zlcl9kYXRhbGVuKTsKICNpZiAwCiAJCX0gZWxzZSBpZiAoc2MtPnRyYW5zZmVyX2Rh
dGFsZW4gLSBzYy0+dHJhbnNmZXJfYWN0bGVuCi0JCQkgICAhPSBVR0VURFcoc2MtPmNzdy5kQ1NX
RGF0YVJlc2lkdWUpKSB7CisJCQkgICAhPSByZXNpZHVlKSB7CiAJCQlEUFJJTlRGKFVETUFTU19C
QkIsICgiJXM6IGFjdGxlbj0lZCAhPSByZXNpZHVlPSVkXG4iLAogCQkJCWRldmljZV94bmFtZShz
Yy0+c2NfZGV2KSwKIAkJCQlzYy0+dHJhbnNmZXJfZGF0YWxlbiAtIHNjLT50cmFuc2Zlcl9hY3Rs
ZW4sCi0JCQkJVUdFVERXKHNjLT5jc3cuZENTV0RhdGFSZXNpZHVlKSkpOworCQkJCXJlc2lkdWUp
KTsKIAogCQkJdW1hc3NfYmJiX3Jlc2V0KHNjLCBTVEFUVVNfV0lSRV9GQUlMRUQpOwogCQkJcmV0
dXJuOwogI2VuZGlmCiAJCX0gZWxzZSBpZiAoc2MtPmNzdy5iQ1NXU3RhdHVzID09IENTV1NUQVRV
U19GQUlMRUQpIHsKIAkJCURQUklOVEYoVURNQVNTX0JCQiwgKCIlczogQ29tbWFuZCBGYWlsZWQs
IHJlcyA9ICVkXG4iLAotCQkJCWRldmljZV94bmFtZShzYy0+c2NfZGV2KSwKLQkJCQlVR0VURFco
c2MtPmNzdy5kQ1NXRGF0YVJlc2lkdWUpKSk7CisJCQkJZGV2aWNlX3huYW1lKHNjLT5zY19kZXYp
LCByZXNpZHVlKSk7CiAKIAkJCS8qIFNDU0kgY29tbWFuZCBmYWlsZWQgYnV0IHRyYW5zZmVyIHdh
cyBzdWNjZXNmdWwgKi8KIAkJCXNjLT50cmFuc2Zlcl9zdGF0ZSA9IFRTVEFURV9JRExFOwotCQkJ
c2MtPnRyYW5zZmVyX2NiKHNjLCBzYy0+dHJhbnNmZXJfcHJpdiwKLQkJCQkJVUdFVERXKHNjLT5j
c3cuZENTV0RhdGFSZXNpZHVlKSwKKwkJCXNjLT50cmFuc2Zlcl9jYihzYywgc2MtPnRyYW5zZmVy
X3ByaXYsIHJlc2lkdWUsCiAJCQkJCVNUQVRVU19DTURfRkFJTEVEKTsKIAogCQkJcmV0dXJuOwog
CiAJCX0gZWxzZSB7CS8qIHN1Y2Nlc3MgKi8KIAkJCXNjLT50cmFuc2Zlcl9zdGF0ZSA9IFRTVEFU
RV9JRExFOwotCQkJc2MtPnRyYW5zZmVyX2NiKHNjLCBzYy0+dHJhbnNmZXJfcHJpdiwKLQkJCQkJ
VUdFVERXKHNjLT5jc3cuZENTV0RhdGFSZXNpZHVlKSwKKwkJCXNjLT50cmFuc2Zlcl9jYihzYywg
c2MtPnRyYW5zZmVyX3ByaXYsIHJlc2lkdWUsCiAJCQkJCVNUQVRVU19DTURfT0spOwogCiAJCQly
ZXR1cm47CkluZGV4OiB1bWFzc19xdWlya3MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9v
dC9zcmMvc3lzL2Rldi91c2IvdW1hc3NfcXVpcmtzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu
NzcKZGlmZiAtdSAtcjEuNzcgdW1hc3NfcXVpcmtzLmMKLS0tIHVtYXNzX3F1aXJrcy5jCTEyIE9j
dCAyMDA5IDIzOjQzOjA1IC0wMDAwCTEuNzcKKysrIHVtYXNzX3F1aXJrcy5jCTI1IE9jdCAyMDA5
IDA2OjE3OjI1IC0wMDAwCkBAIC0yMjksNiArMjI5LDE3IEBACiAJICBVTUFUQ0hfVkVORE9SX1BS
T0RVQ1QsCiAJICBOVUxMLCBOVUxMCiAJfSwKKworICAgICAgICAvKgorICAgICAgICAgKiBEZXZp
Y2VzIHdpdGggYmFkIHJlc2lkdWUuCisgICAgICAgICAqLworICAgICAgICB7IHsgVVNCX1ZFTkRP
Ul9TVVBFUlRPUCwgVVNCX1BST0RVQ1RfU1VQRVJUT1BfSURFQlJJREdFIH0sCisgICAgICAgICAg
VU1BU1NfV1BST1RPX1VOU1BFQywgVU1BU1NfQ1BST1RPX1VOU1BFQywKKyAgICAgICAgICBVTUFT
U19RVUlSS19JR05PUkVfUkVTSURVRSwKKyAgICAgICAgICAwLAorICAgICAgICAgIFVNQVRDSF9W
RU5ET1JfUFJPRFVDVCwKKyAgICAgICAgICBOVUxMLCBOVUxMCisgICAgICAgIH0sCiB9OwogCiBj
b25zdCBzdHJ1Y3QgdW1hc3NfcXVpcmsgKgpJbmRleDogdW1hc3N2YXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiAvY3Zzcm9vdC9zcmMvc3lzL2Rldi91c2IvdW1hc3N2YXIuaCx2CnJldHJpZXZpbmcg
cmV2aXNpb24gMS4yNwpkaWZmIC11IC1yMS4yNyB1bWFzc3Zhci5oCi0tLSB1bWFzc3Zhci5oCTYg
U2VwIDIwMDggMjE6NDk6MDAgLTAwMDAJMS4yNworKysgdW1hc3N2YXIuaAkyNSBPY3QgMjAwOSAw
NjoxNzoyNSAtMDAwMApAQCAtMTgwLDYgKzE4MCw3IEBACiAjZGVmaW5lCVVNQVNTX1FVSVJLX1dS
T05HX0NTV1RBRwkweDAwMDAwMDAyCiAjZGVmaW5lCVVNQVNTX1FVSVJLX1JCQ19QQURfVE9fMTIJ
MHgwMDAwMDAwNAogI2RlZmluZQlVTUFTU19RVUlSS19OT0dFVE1BWExVTgkJMHgwMDAwMDAwOAor
I2RlZmluZSBVTUFTU19RVUlSS19JR05PUkVfUkVTSURVRSAgICAgIDB4MDAwMDAwMTAKIAogI2Rl
ZmluZSBVTUFTU19RVUlSS19VU0VfREVGQVVMVE1BVENICS0xCiAKSW5kZXg6IHVzYmRldnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9kZXYvdXNiL3VzYmRldnMsdgpyZXRy
aWV2aW5nIHJldmlzaW9uIDEuNTM0CmRpZmYgLXUgLXIxLjUzNCB1c2JkZXZzCi0tLSB1c2JkZXZz
CTEyIE9jdCAyMDA5IDIyOjI4OjE1IC0wMDAwCTEuNTM0CisrKyB1c2JkZXZzCTI1IE9jdCAyMDA5
IDA2OjE3OjI2IC0wMDAwCkBAIC00NjQsNiArNDY0LDcgQEAKIHZlbmRvciBSQUxJTksJCTB4MTQ4
NQlSYWxpbmsgVGVjaG5vbG9neQogdmVuZG9yIFJBTElOS18yCQkweDE0OGYJUmFsaW5rIFRlY2hu
b2xvZ3kKIHZlbmRvciBDT05DRVBUUk9OSUMJMHgxNGIyCUNvbmNlcHRyb25pYwordmVuZG9yIFNV
UEVSVE9QCQkweDE0Y2QgIFN1cGVyVG9wCiB2ZW5kb3IgUExBTkVYMwkJMHgxNGVhCVBsYW5leCBD
b21tdW5pY2F0aW9ucwogdmVuZG9yIFNJTElDT05QT1JUQUxTCTB4MTUyNwlTaWxpY29uIFBvcnRh
bHMKIHZlbmRvciBPUU8JCTB4MTU1NwlPUU8KQEAgLTIyMzQsNiArMjIzNSw5IEBACiAvKiBYWFgg
VGhlIGFib3ZlIGlzIGEgTm9ydGggQW1lcmljYW4gUEMgc3R5bGUga2V5Ym9hcmQgcG9zc2libHkg
Ki8KIHByb2R1Y3QgU1VOIE1PVVNFCQkweDAxMDAJVHlwZSA2IFVTQiBtb3VzZQogCisvKiBTdXBl
clRvcCBwcm9kdWN0cyAqLworcHJvZHVjdCBTVVBFUlRPUCBJREVCUklER0UgICAgICAweDY2MDAg
IFN1cGVyVG9wIElERSBCcmlkZ2UKKwogLyogU3VwcmEgcHJvZHVjdHMgKi8KIHByb2R1Y3QgRElB
TU9ORDIgU1VQUkFFWFBSRVNTNTZLIDB4MDdkYSBTdXByYSBFeHByZXNzIDU2SyBtb2RlbQogcHJv
ZHVjdCBESUFNT05EMiBTVVBSQTI4OTAJMHgwYjRhCVN1cHJhTWF4IDI4OTAgNTZLIE1vZGVtCklu
ZGV4OiB1c2JkZXZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qvc3JjL3N5cy9kZXYv
dXNiL3VzYmRldnMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41MjgKZGlmZiAtdSAtcjEuNTI4
IHVzYmRldnMuaAotLS0gdXNiZGV2cy5oCTEyIE9jdCAyMDA5IDIyOjI5OjE2IC0wMDAwCTEuNTI4
CisrKyB1c2JkZXZzLmgJMjUgT2N0IDIwMDkgMDY6MTc6MjcgLTAwMDAKQEAgLTEsNCArMSw0IEBA
Ci0vKgkkTmV0QlNEOiB1c2JkZXZzLmgsdiAxLjUyOCAyMDA5LzEwLzEyIDIyOjI5OjE2IHdpeiBF
eHAgJAkqLworLyoJJE5ldEJTRCQJKi8KIAogLyoKICAqIFRISVMgRklMRSBJUyBBVVRPTUFUSUNB
TExZIEdFTkVSQVRFRC4gIERPIE5PVCBFRElULgpAQCAtNDcxLDYgKzQ3MSw3IEBACiAjZGVmaW5l
CVVTQl9WRU5ET1JfUkFMSU5LCTB4MTQ4NQkJLyogUmFsaW5rIFRlY2hub2xvZ3kgKi8KICNkZWZp
bmUJVVNCX1ZFTkRPUl9SQUxJTktfMgkweDE0OGYJCS8qIFJhbGluayBUZWNobm9sb2d5ICovCiAj
ZGVmaW5lCVVTQl9WRU5ET1JfQ09OQ0VQVFJPTklDCTB4MTRiMgkJLyogQ29uY2VwdHJvbmljICov
CisjZGVmaW5lCVVTQl9WRU5ET1JfU1VQRVJUT1AJMHgxNGNkCQkvKiBTdXBlclRvcCAqLwogI2Rl
ZmluZQlVU0JfVkVORE9SX1BMQU5FWDMJMHgxNGVhCQkvKiBQbGFuZXggQ29tbXVuaWNhdGlvbnMg
Ki8KICNkZWZpbmUJVVNCX1ZFTkRPUl9TSUxJQ09OUE9SVEFMUwkweDE1MjcJCS8qIFNpbGljb24g
UG9ydGFscyAqLwogI2RlZmluZQlVU0JfVkVORE9SX09RTwkweDE1NTcJCS8qIE9RTyAqLwpAQCAt
MjI0MSw2ICsyMjQyLDkgQEAKIC8qIFhYWCBUaGUgYWJvdmUgaXMgYSBOb3J0aCBBbWVyaWNhbiBQ
QyBzdHlsZSBrZXlib2FyZCBwb3NzaWJseSAqLwogI2RlZmluZQlVU0JfUFJPRFVDVF9TVU5fTU9V
U0UJMHgwMTAwCQkvKiBUeXBlIDYgVVNCIG1vdXNlICovCiAKKy8qIFN1cGVyVG9wIHByb2R1Y3Rz
ICovCisjZGVmaW5lCVVTQl9QUk9EVUNUX1NVUEVSVE9QX0lERUJSSURHRQkweDY2MDAJCS8qIFN1
cGVyVG9wIElERSBCcmlkZ2UgKi8KKwogLyogU3VwcmEgcHJvZHVjdHMgKi8KICNkZWZpbmUJVVNC
X1BST0RVQ1RfRElBTU9ORDJfU1VQUkFFWFBSRVNTNTZLCTB4MDdkYQkJLyogU3VwcmEgRXhwcmVz
cyA1NksgbW9kZW0gKi8KICNkZWZpbmUJVVNCX1BST0RVQ1RfRElBTU9ORDJfU1VQUkEyODkwCTB4
MGI0YQkJLyogU3VwcmFNYXggMjg5MCA1NksgTW9kZW0gKi8KSW5kZXg6IHVzYmRldnNfZGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnNyb290L3NyYy9zeXMvZGV2L3VzYi91c2JkZXZzX2Rh
dGEuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41MjkKZGlmZiAtdSAtcjEuNTI5IHVzYmRldnNf
ZGF0YS5oCi0tLSB1c2JkZXZzX2RhdGEuaAkxMiBPY3QgMjAwOSAyMjoyOToxNiAtMDAwMAkxLjUy
OQorKysgdXNiZGV2c19kYXRhLmgJMjUgT2N0IDIwMDkgMDY6MTc6MjkgLTAwMDAKQEAgLTEsNCAr
MSw0IEBACi0vKgkkTmV0QlNEOiB1c2JkZXZzX2RhdGEuaCx2IDEuNTI5IDIwMDkvMTAvMTIgMjI6
Mjk6MTYgd2l6IEV4cCAkCSovCisvKgkkTmV0QlNEJAkqLwogCiAvKgogICogVEhJUyBGSUxFIElT
IEFVVE9NQVRJQ0FMTFkgR0VORVJBVEVELiAgRE8gTk9UIEVESVQuCkBAIC0xNjYzLDYgKzE2NjMs
MTAgQEAKIAkgICAgIkNvbmNlcHRyb25pYyIsCiAJfSwKIAl7CisJICAgIFVTQl9WRU5ET1JfU1VQ
RVJUT1AsCisJICAgICJTdXBlclRvcCIsCisJfSwKKwl7CiAJICAgIFVTQl9WRU5ET1JfUExBTkVY
MywKIAkgICAgIlBsYW5leCBDb21tdW5pY2F0aW9ucyIsCiAJfSwKQEAgLTE4ODMsNyArMTg4Nyw3
IEBACiAJICAgICJHTlUgUmFkaW8gVVNSUCIsCiAJfSwKIH07Ci1jb25zdCBpbnQgdXNiX252ZW5k
b3JzID0gNDYxOworY29uc3QgaW50IHVzYl9udmVuZG9ycyA9IDQ2MjsKIAogY29uc3Qgc3RydWN0
IHVzYl9wcm9kdWN0IHVzYl9wcm9kdWN0c1tdID0gewogCXsKQEAgLTY0NTUsNiArNjQ1OSwxMCBA
QAogCSAgICAiVHlwZSA2IFVTQiBtb3VzZSIsCiAJfSwKIAl7CisJICAgIFVTQl9WRU5ET1JfU1VQ
RVJUT1AsIFVTQl9QUk9EVUNUX1NVUEVSVE9QX0lERUJSSURHRSwKKwkgICAgIlN1cGVyVG9wIElE
RSBCcmlkZ2UiLAorCX0sCisJewogCSAgICBVU0JfVkVORE9SX0RJQU1PTkQyLCBVU0JfUFJPRFVD
VF9ESUFNT05EMl9TVVBSQUVYUFJFU1M1NkssCiAJICAgICJTdXByYSBFeHByZXNzIDU2SyBtb2Rl
bSIsCiAJfSwKQEAgLTY5MzUsNCArNjk0Myw0IEBACiAJICAgICJQcmVzdGlnZSIsCiAJfSwKIH07
Ci1jb25zdCBpbnQgdXNiX25wcm9kdWN0cyA9IDEyNjI7Citjb25zdCBpbnQgdXNiX25wcm9kdWN0
cyA9IDEyNjM7Cg==
--MP_/4T/71M2Z8Xq_A51UiZoIeJ5--
From: Ignatios Souvatzis <is@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/42225 CVS commit: src/sys/dev/usb
Date: Fri, 30 Oct 2009 16:22:33 +0000
Module Name: src
Committed By: is
Date: Fri Oct 30 16:22:32 UTC 2009
Modified Files:
src/sys/dev/usb: umass.c umass_quirks.c umassvar.h usbdevs
Log Message:
Quirk to regenerate residue for borken UMASS devices; needed (at least)
for Supertop IDE bridge. From Matthias Kretschmer, PR 42225.
To generate a diff of this commit:
cvs rdiff -u -r1.134 -r1.135 src/sys/dev/usb/umass.c
cvs rdiff -u -r1.77 -r1.78 src/sys/dev/usb/umass_quirks.c
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/usb/umassvar.h
cvs rdiff -u -r1.534 -r1.535 src/sys/dev/usb/usbdevs
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: Ignatios Souvatzis <is@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/42225 CVS commit: src/sys/dev/usb
Date: Fri, 30 Oct 2009 16:25:46 +0000
Module Name: src
Committed By: is
Date: Fri Oct 30 16:25:46 UTC 2009
Modified Files:
src/sys/dev/usb: usbdevs.h usbdevs_data.h
Log Message:
regenerate:
Quirk to regenerate residue for borken UMASS devices; needed (at least)
for Supertop IDE bridge. From Matthias Kretschmer, PR 42225.
To generate a diff of this commit:
cvs rdiff -u -r1.528 -r1.529 src/sys/dev/usb/usbdevs.h
cvs rdiff -u -r1.529 -r1.530 src/sys/dev/usb/usbdevs_data.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: open->analyzed
State-Changed-By: is@NetBSD.org
State-Changed-When: Tue, 03 Nov 2009 10:18:39 +0000
State-Changed-Why:
The proposed patch has been committed to -current as a workaround, but is
considered unclean by martin@.
USB experts will have to tell whether it's safe to consider all non-failing
zero-length transfers as being full-length transfers, or whether there's a
third method to handle such devices.
Responsible-Changed-From-To: kern-bug-people->martin
Responsible-Changed-By: martin@NetBSD.org
Responsible-Changed-When: Tue, 03 Nov 2009 10:30:32 +0000
Responsible-Changed-Why:
take
From: Matthias Kretschmer <kretschm@cs.uni-bonn.de>
To: gnats-bugs@NetBSD.org
Cc: martin@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Wed, 10 Feb 2010 15:50:06 +0100
the relevant dmesg output...
umass0 at uhub2 port 3 configuration 1 interface 0
umass0: Super Top USB 2.0 IDE DEVICE, rev 2.00/2.01, addr 2
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, 1 lun per target
sd0 at scsibus0 target 0 lun 0: <SAMSUNG, MP0402H, 0\0000> disk fixed
sd0: 38204 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 78242976 sectors
From: Martin Husemann <martin@duskware.de>
To: Matthias Kretschmer <kretschm@cs.uni-bonn.de>
Cc: gnats-bugs@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Wed, 10 Feb 2010 16:31:31 +0100
You say dCSWDataResidue is always zero, but what are the sc->transfer_datalen,
the sc->transfer_actlen and bCSWStatus values?
Does it work if you make sure to limit the length at
min(sc->transfer_actlen, sc->transfer_datalen-UGETDW(dCSWDataResidue))
instead (unconditionally, no quirk)?
According to the spec paragraph 6.7.2 [case 7 or 8]:
If the device actually transfers less data than the host indicated, then
The device may end the transfer with a short packet.
The device shall STALL the Bulk-In pipe.
Martin
From: Matthias Kretschmer <kretschm@cs.uni-bonn.de>
To: Martin Husemann <martin@duskware.de>
Cc: gnats-bugs@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Thu, 11 Feb 2010 10:39:46 +0100
- bCSWStatus I do not know; I can check if required
- I changed the code for setting "residue" to
residue = UGETDW(dCSWDataResidue);
if (residue < sc->transfer_datalen - sc->transfer_actlen)
residue = sc->transfer_datalen - sc->transfer_actlen;
which works with my usb device. I just do not have another umass
at hand to test with.
Matthias
From: Martin Husemann <martin@duskware.de>
To: Matthias Kretschmer <kretschm@cs.uni-bonn.de>
Cc: gnats-bugs@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Thu, 11 Feb 2010 11:09:25 +0100
On Thu, Feb 11, 2010 at 10:39:46AM +0100, Matthias Kretschmer wrote:
> - I changed the code for setting "residue" to
>
> residue = UGETDW(dCSWDataResidue);
> if (residue < sc->transfer_datalen - sc->transfer_actlen)
> residue = sc->transfer_datalen - sc->transfer_actlen;
>
> which works with my usb device. I just do not have another umass
> at hand to test with.
Cool - this is what I expected.
IMHO this can go in unconditionally. There is no way for the device to
"reconnect" and send more data later, so limiting to the actual transfer
length can not cause any harm.
I will test with a few other devices and commit ASAP.
Martin
From: Martin Husemann <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/42225 CVS commit: src/sys/dev/usb
Date: Sat, 13 Feb 2010 02:09:42 +0000
Module Name: src
Committed By: martin
Date: Sat Feb 13 02:09:41 UTC 2010
Modified Files:
src/sys/dev/usb: umass.c umass_quirks.c umassvar.h
Log Message:
Remove UMASS_QUIRK_IGNORE_RESIDUE, instead max out the expected response
size at the actual transfer length. Fixes PR kern/42225 differently.
To generate a diff of this commit:
cvs rdiff -u -r1.136 -r1.137 src/sys/dev/usb/umass.c
cvs rdiff -u -r1.78 -r1.79 src/sys/dev/usb/umass_quirks.c
cvs rdiff -u -r1.28 -r1.29 src/sys/dev/usb/umassvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: analyzed->pending-pullups
State-Changed-By: martin@NetBSD.org
State-Changed-When: Sat, 13 Feb 2010 02:13:10 +0000
State-Changed-Why:
fixed in -current, waiting on pullup-5 #1123
From: Soren Jacobsen <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/42225 CVS commit: [netbsd-5] src/sys/dev/usb
Date: Tue, 9 Mar 2010 03:45:43 +0000
Module Name: src
Committed By: snj
Date: Tue Mar 9 03:45:43 UTC 2010
Modified Files:
src/sys/dev/usb [netbsd-5]: umass.c usbdevs
Log Message:
Pull up following revision(s) (requested by is/martin):
sys/dev/usb/usbdevs: revision 1.535
sys/dev/usb/umass.c: revision 1.137
Add SuperTop and SuperTop IDE Bridge to usbdevs.
--
Max out the expected response size at the actual transfer length.
Fixes PR kern/42225.
To generate a diff of this commit:
cvs rdiff -u -r1.129.4.1 -r1.129.4.2 src/sys/dev/usb/umass.c
cvs rdiff -u -r1.519.4.4 -r1.519.4.5 src/sys/dev/usb/usbdevs
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: pending-pullups->closed
State-Changed-By: martin@NetBSD.org
State-Changed-When: Tue, 09 Mar 2010 09:16:26 +0000
State-Changed-Why:
pullups complete
thanks for the report + help during testing!
From: Markus W Kilbinger <mk@kilbi.de>
To: current-users@netbsd.org
Cc: gnats-bugs@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Sun, 4 Apr 2010 22:18:48 +0200
Hi!
After several months I've reactivated my SuperTop hardware:
umass1 at uhub5 port 4 configuration 1 interface 0
umass1: Super Top USB 2.0 IDE DEVICE, rev 2.00/2.01, addr 3
umass1: using SCSI over Bulk-Only
scsibus1 at umass1: 2 targets, 1 lun per target
sd1 at scsibus1 target 0 lun 0: <ST316002, 3A, 0\0000> disk fixed
sd1: 149 GB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 312581808 sectors
on my -current machine
NetBSD 5.99.25 (Q) #8: Sun Apr 4 21:43:29 MEST 2010 .../amd64/compile/Q amd64
, but it didn't work! I could see the dmesg, fdisk and disklabel
output, but reading more than 1 block seems to fail (it works at/with
other machines / os's).
So, looking at the source and the initial and final patches I've made
the following change:
Index: umass.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass.c,v
retrieving revision 1.138
diff -u -r1.138 umass.c
--- umass.c 13 Feb 2010 02:16:51 -0000 1.138
+++ umass.c 4 Apr 2010 20:07:22 -0000
@@ -1179,7 +1179,7 @@
DIF(UDMASS_BBB, umass_bbb_dump_csw(sc, &sc->csw));
residue = UGETDW(sc->csw.dCSWDataResidue);
- if (residue < sc->transfer_datalen - sc->transfer_actlen)
+ if (residue != sc->transfer_datalen - sc->transfer_actlen)
residue = sc->transfer_datalen - sc->transfer_actlen;
/* Translate weird command-status signatures. */
With this little change my usb disk works! (?)
I only have (tested) some usb memory sticks as other umasses and did
not see any problem with this change/patch.
If not requiring a quirk (for several usb ide bridges) what is residue
good for?
Comments?
Markus.
From: Martin Husemann <martin@duskware.de>
To: Markus W Kilbinger <mk@kilbi.de>
Cc: gnats-bugs@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Mon, 5 Apr 2010 00:30:19 +0200
On Sun, Apr 04, 2010 at 10:18:48PM +0200, Markus W Kilbinger wrote:
> residue = UGETDW(sc->csw.dCSWDataResidue);
> - if (residue < sc->transfer_datalen - sc->transfer_actlen)
> + if (residue != sc->transfer_datalen - sc->transfer_actlen)
> residue = sc->transfer_datalen - sc->transfer_actlen;
Please add a few printfs and provide more detailed data, especially the
values of residue, sc->transfer_datalen, sc->transfer_datalen and bCSWStatus.
Martin
P.S.: it is not very usefull to cross-post to gnats and some other mailing list
From: Markus W Kilbinger <mk@kilbi.de>
To: Martin Husemann <martin@duskware.de>
Cc: gnats-bugs@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Tue, 6 Apr 2010 12:21:04 +0200
>>>>> "Martin" == Martin Husemann <martin@duskware.de> writes:
>> residue = UGETDW(sc->csw.dCSWDataResidue);
>> - if (residue < sc->transfer_datalen - sc->transfer_actlen)
>> + if (residue != sc->transfer_datalen - sc->transfer_actlen)
>> residue = sc->transfer_datalen - sc->transfer_actlen;
Martin> Please add a few printfs and provide more detailed data,
Martin> especially the values of residue, sc->transfer_datalen,
Martin> sc->transfer_datalen and bCSWStatus.
Following debug patch:
Index: umass.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umass.c,v
retrieving revision 1.138
diff -u -r1.138 umass.c
--- umass.c 13 Feb 2010 02:16:51 -0000 1.138
+++ umass.c 6 Apr 2010 10:12:07 -0000
@@ -1179,8 +1179,12 @@
DIF(UDMASS_BBB, umass_bbb_dump_csw(sc, &sc->csw));
residue = UGETDW(sc->csw.dCSWDataResidue);
- if (residue < sc->transfer_datalen - sc->transfer_actlen)
+ if (residue != sc->transfer_datalen - sc->transfer_actlen) {
+ printf("***UMASS residue = %d, datalen = %d, actlen = %d, status = %d\n",
+ residue, sc->transfer_datalen, sc->transfer_actlen,
+ sc->csw.bCSWStatus);
residue = sc->transfer_datalen - sc->transfer_actlen;
+ }
/* Translate weird command-status signatures. */
if ((sc->sc_quirks & UMASS_QUIRK_WRONG_CSWSIG) &&
produced the following (additional) dmesg output during booting:
umass0 at uhub5 port 2 configuration 1 interface 0
umass0: Super Top USB 2.0 IDE DEVICE, rev 2.00/2.01, addr 2
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, 1 lun per target
sd0 at scsibus0 target 0 lun 0: <ST316002, 3A, 0\0000> disk fixed
***UMASS residue = 0, datalen = 32, actlen = 18, status = 0
***UMASS residue = 0, datalen = 32, actlen = 18, status = 0
***UMASS residue = 4, datalen = 40, actlen = 20, status = 0
sd0: 149 GB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 312581808 sectors
***UMASS residue = 0, datalen = 32, actlen = 18, status = 0
***UMASS residue = 0, datalen = 32, actlen = 18, status = 0
***UMASS residue = 4, datalen = 40, actlen = 20, status = 0
***UMASS residue = 512, datalen = 512, actlen = 512, status = 0
***UMASS residue = 1536, datalen = 1536, actlen = 1536, status = 0
***UMASS residue = 512, datalen = 512, actlen = 512, status = 0
***UMASS residue = 512, datalen = 512, actlen = 512, status = 0
[...]
***UMASS residue = 2048, datalen = 2048, actlen = 2048, status = 0
***UMASS residue = 2048, datalen = 2048, actlen = 2048, status = 0
and 'dd if=/dev/rsd0d of=/dev/null count=2' produces
***UMASS residue = 512, datalen = 512, actlen = 512, status = 0
***UMASS residue = 512, datalen = 512, actlen = 512, status = 0
More/other info needed?
Markus.
From: Matthias Kretschmer <mccratch@gmx.net>
To: gnats-bugs@netbsd.org
Cc: martin@NetBSD.org, gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Wed, 15 Sep 2010 16:17:19 +0200
Hi,
On Sun, Apr 04, 2010 at 10:35:02PM +0000, Martin Husemann wrote:
> On Sun, Apr 04, 2010 at 10:18:48PM +0200, Markus W Kilbinger wrote:
> > residue = UGETDW(sc->csw.dCSWDataResidue);
> > - if (residue < sc->transfer_datalen - sc->transfer_actlen)
> > + if (residue != sc->transfer_datalen - sc->transfer_actlen)
> > residue = sc->transfer_datalen - sc->transfer_actlen;
I'm sorry I haven't answered before.
I had required to HDD build into the SuperTOP usb<->ata bridge into a
computer, such that I couldn't test. I now put another hdd into my
supertop drive and it now emits the same problem as described by Markus.
I assume that the controller chip is heavily broken by design and emits
useless residue data which may be greater or less than the real value.
The patch proposed by Markus works fine for me.
I have tested the patch on my 5.1_RC3 system and attached and used two
different (different vendors and sizes) usb-sticks and three different
hdd-cases (including the SuperTOP). The other four umass devices do not
have the problem, but are not rendered non-functional by the patch. As
it seems the sc->transfer_datalen and sc->transfer_actlen information is
more reliable than the residue information, one could even shorten this,
to just use this information without reading the residue from the
device.
--
Matthias
State-Changed-From-To: closed->open
State-Changed-By: jakllsch@NetBSD.org
State-Changed-When: Thu, 16 Jun 2011 00:51:21 +0000
State-Changed-Why:
martin's fix doesn't work
From: "Jonathan A. Kollasch" <jakllsch@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/42225 CVS commit: src/sys/dev/usb
Date: Sun, 31 Jul 2011 16:32:02 +0000
Module Name: src
Committed By: jakllsch
Date: Sun Jul 31 16:32:02 UTC 2011
Modified Files:
src/sys/dev/usb: umass.c umass_quirks.c umassvar.h
Log Message:
Restore original residue quirk proposed in PR#42225, it is necessary.
To generate a diff of this commit:
cvs rdiff -u -r1.138 -r1.139 src/sys/dev/usb/umass.c
cvs rdiff -u -r1.84 -r1.85 src/sys/dev/usb/umass_quirks.c
cvs rdiff -u -r1.30 -r1.31 src/sys/dev/usb/umassvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: open->feedback
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Tue, 02 Aug 2011 02:53:01 +0000
State-Changed-Why:
Does it work now as committed?
From: Matthias Kretschmer <kretschm@cs.uni-bonn.de>
To: gnats-bugs@NetBSD.org
Cc: martin@NetBSD.org, netbsd-bugs@netbsd.org,
gnats-admin@netbsd.org, dholland@NetBSD.org
Subject: Re: kern/42225 (can't read data from SuperTop IDE Bridge (umass))
Date: Mon, 29 Aug 2011 10:46:57 +0200
Hello,
On Tue, Aug 02, 2011 at 02:53:02AM +0000, dholland@NetBSD.org wrote:
> Synopsis: can't read data from SuperTop IDE Bridge (umass)
>
> State-Changed-From-To: open->feedback
> State-Changed-By: dholland@NetBSD.org
> State-Changed-When: Tue, 02 Aug 2011 02:53:01 +0000
> State-Changed-Why:
> Does it work now as committed?
maybe it is the best to ignore the residue field completely and
calculate for oneself. This removes the need of reading the additional
information from the transfer result data and the check if the residue
and the calculated residue are the same.
Even though Linux has a quirk for that, Darwin [1] just ignores this
and I think it is a good idea. Haiku [2] ignores the residue, too, and
calculates it by itself. Nobody seems to have a problem there.
[1] http://www.opensource.apple.com/source/IOUSBMassStorageClass/IOUSBMassStorageClass-261.0.3/USBMassStorageClassBulkOnly.cpp
[2] http://dev.haiku-os.org/ticket/6604
--
Matthias Kretschmer
State-Changed-From-To: feedback->open
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 30 Apr 2012 23:04:19 +0000
State-Changed-Why:
Feedback was received last August, and should be looked at by someone
who knows more about USB than I do.
From: "Matthias Drochner" <drochner@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/42225 CVS commit: src/sys/dev/usb
Date: Fri, 24 Aug 2012 12:20:03 +0000
Module Name: src
Committed By: drochner
Date: Fri Aug 24 12:20:02 UTC 2012
Modified Files:
src/sys/dev/usb: umass.c umass_quirks.c umassvar.h
Log Message:
Another contribution to PR kern/42225 which will hopefully
bring the story to an end:
Always ignore the residue from the CSW, just use the real
transfer length counted by the USB stack. This was first
proposed by Markus Kilbinger but unfortunately ignored
later. (Too many cooks...)
According to Matthias Kretschmer, Darwin and Haiku do
the same.
Remove the "UMASS_QUIRK_IGNORE_RESIDUE" quirk which was
just for the one "SuperTop" device mentioned in the PR.
This device was successfully tested by Matthias Kretschmer /
Ignatios Souvatzis.
I've tested the patch with various other devices and
didn't find regressions.
To generate a diff of this commit:
cvs rdiff -u -r1.145 -r1.146 src/sys/dev/usb/umass.c
cvs rdiff -u -r1.93 -r1.94 src/sys/dev/usb/umass_quirks.c
cvs rdiff -u -r1.33 -r1.34 src/sys/dev/usb/umassvar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: Markus W Kilbinger <mk@kilbi.de>
To: gnats-bugs@NetBSD.org
Cc: martin@NetBSD.org,
gnats-admin@netbsd.org,
netbsd-bugs@netbsd.org,
kretschm@cs.uni-bonn.de
Subject: Re: PR/42225 CVS commit: src/sys/dev/usb
Date: Sat, 25 Aug 2012 11:07:35 +0200
>>>>> "Matthias" == Matthias Drochner <drochner@netbsd.org> writes:
Matthias> Modified Files:
Matthias> src/sys/dev/usb: umass.c umass_quirks.c umassvar.h
Matthias> Log Message: Another contribution to PR kern/42225
Matthias> which will hopefully bring the story to an end:
Matthias> Always ignore the residue from the CSW, just use the
Matthias> real transfer length counted by the USB stack.
Matthias> To generate a diff of this commit:
Matthias> cvs rdiff -u -r1.145 -r1.146 src/sys/dev/usb/umass.c
Matthias> cvs rdiff -u -r1.93 -r1.94 src/sys/dev/usb/umass_quirks.c
Matthias> cvs rdiff -u -r1.33 -r1.34 src/sys/dev/usb/umassvar.h
Fine! :-)
What abount netbsd-* pullups?
Markus.
State-Changed-From-To: open->closed
State-Changed-By: prlw1@NetBSD.org
State-Changed-When: Tue, 05 Nov 2019 11:43:13 +0000
State-Changed-Why:
Fixed and the pullups effectively happened by waiting ;-)
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.43 2018/01/16 07:36:43 maya Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2017
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.