From murduth@rmstar.campus.luth.se  Sun Aug 20 10:34:26 2000
Return-Path: <murduth@rmstar.campus.luth.se>
Received: from rmstar.campus.luth.se (rmstar.campus.luth.se [130.240.197.32])
	by hub.freebsd.org (Postfix) with ESMTP id 91FA637B43E
	for <freebsd-gnats-submit@freebsd.org>; Sun, 20 Aug 2000 10:34:25 -0700 (PDT)
Received: from rmstar.campus.luth.se (localhost [127.0.0.1])
	by rmstar.campus.luth.se (8.9.3/8.9.3) with ESMTP id TAA00424
	for <freebsd-gnats-submit@freebsd.org>; Sun, 20 Aug 2000 19:34:24 +0200 (CEST)
	(envelope-from murduth@rmstar.campus.luth.se)
Message-Id: <200008201734.TAA00424@rmstar.campus.luth.se>
Date: Sun, 20 Aug 2000 19:34:24 +0200
From: Joakim Henriksson <murduth@ludd.luth.se>
Sender: murduth@rmstar.campus.luth.se
To: freebsd-gnats-submit@freebsd.org
Subject: My USB mouse detaches leaving me without a mouse

>Number:         20734
>Category:       kern
>Synopsis:       USB mouse detaches and never reataches
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    n_hibma
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Aug 20 10:40:00 PDT 2000
>Closed-Date:    Thu Nov 29 08:49:23 PST 2001
>Last-Modified:  Sat Dec  1 17:20:00 PST 2001
>Originator:     Joakim Henriksson
>Release:        FreeBSD 4.1-STABLE i386
>Organization:
University of lule
>Environment:

murduth@rmstar ~ >uname -a
FreeBSD rmstar.campus.luth.se 4.1-STABLE FreeBSD 4.1-STABLE #4: Fri Aug 18 
20:01
:52 CEST 2000     murduth@rmstar.campus.luth.se:/usr/src/sys/compile/RMSTAR  
i38
6


Relevant parts of boot -v output

Copyright (c) 1992-2000 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD 4.1-STABLE #4: Fri Aug 18 20:01:52 CEST 2000
    murduth@rmstar.campus.luth.se:/usr/src/sys/compile/RMSTAR
Calibrating clock(s) ... TSC clock: 400926854 Hz, i8254 clock: 1193234 Hz
CLK_USE_I8254_CALIBRATION not specified - using default frequency
Timecounter "i8254"  frequency 1193182 Hz
CLK_USE_TSC_CALIBRATION not specified - using old calibration method
CPU: AMD-K6(tm) 3D processor (400.91-MHz 586-class CPU)
  Origin = "AuthenticAMD"  Id = 0x58c  Stepping = 12
  Features=0x8021bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,PGE,MMX>
  AMD Features=0x80000800<SYSCALL,3DNow!>
Data TLB: 128 entries, 2-way associative
Instruction TLB: 64 entries, 1-way associative
L1 data cache: 32 kbytes, 32 bytes/line, 2 lines/tag, 2-way associative
L1 instruction cache: 32 kbytes, 32 bytes/line, 2 lines/tag, 2-way associative
Write Allocate Enable Limit: 128M bytes
Write Allocate 15-16M bytes: Enable
real memory  = 134152192 (131008K bytes)
Physical memory chunk(s):
0x00001000 - 0x0009ffff, 651264 bytes (159 pages)
0x00386000 - 0x07fe7fff, 130424832 bytes (31842 pages)
avail memory = 127098880 (124120K bytes)
bios32: Found BIOS32 Service Directory header at 0xc00fb010
bios32: Entry = 0xfb490 (c00fb490)  Rev = 0  Len = 1
pcibios: PCI BIOS entry at 0xb4c0
pnpbios: Found PnP BIOS data at 0xc00fc0e0
pnpbios: Entry = f0000:c108  Rev = 1.0
Other BIOS signatures found:
ACPI: 000f6bb0
Preloaded elf kernel "kernel" at 0xc036d000.
K6-family MTRR support enabled (2 registers)
md0: Malloc disk
Creating DISK md0
pci_open(1):	mode 1 addr port (0x0cf8) is 0x80003840
pci_open(1a):	mode1res=0x80000000 (0x80000000)
pci_cfgcheck:	device 0 [class=060000] [hdr=00] is there (id=05981106)
pcib-: pcib0 exists, using next available unit number
npx0: <math processor> on motherboard
npx0: INT 16 interface
i586_bzero() bandwidth = 523286237 bytes/sec
bzero() bandwidth = 120641814 bytes/sec
pci_open(1):	mode 1 addr port (0x0cf8) is 0x00000000
pci_open(1a):	mode1res=0x80000000 (0x80000000)
pci_cfgcheck:	device 0 [class=060000] [hdr=00] is there (id=05981106)
pcib0: <VIA 82C598MVP (Apollo MVP3) host bridge> on motherboard
found->	vendor=0x1106, dev=0x0598, revid=0x04
	class=06-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	map[10]: type 1, range 32, base e0000000, size 26
found->	vendor=0x1106, dev=0x8598, revid=0x00
	class=06-04-00, hdrtype=0x01, mfdev=0
	subordinatebus=1 	secondarybus=1
found->	vendor=0x1106, dev=0x0586, revid=0x41
	class=06-01-00, hdrtype=0x00, mfdev=1
	subordinatebus=0 	secondarybus=0
found->	vendor=0x1106, dev=0x0571, revid=0x06
	class=01-01-8a, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	map[20]: type 1, range 32, base 00006400, size  4
found->	vendor=0x1106, dev=0x3038, revid=0x02
	class=0c-03-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=d, irq=9
	map[20]: type 1, range 32, base 00006800, size  5
found->	vendor=0x1106, dev=0x3040, revid=0x10
	class=06-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
found->	vendor=0x1102, dev=0x0002, revid=0x08
	class=04-01-00, hdrtype=0x00, mfdev=1
	subordinatebus=0 	secondarybus=0
	intpin=a, irq=11
	map[10]: type 1, range 32, base 00006c00, size  5
found->	vendor=0x1102, dev=0x7002, revid=0x08
	class=09-80-00, hdrtype=0x00, mfdev=1
	subordinatebus=0 	secondarybus=0
	map[10]: type 1, range 32, base 00007000, size  3
found->	vendor=0x1000, dev=0x0001, revid=0x02
	class=01-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=a, irq=10
	map[10]: type 1, range 32, base 00007400, size  8
	map[14]: type 1, range 32, base ea100000, size  8
found->	vendor=0x8086, dev=0x1229, revid=0x02
	class=02-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=a, irq=12
	map[10]: type 1, range 32, base ea101000, size 12
	map[14]: type 1, range 32, base 00007800, size  5
	map[18]: type 1, range 32, base ea000000, size 20
pci0: <PCI bus> on pcib0
pcib2: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
found->	vendor=0x102b, dev=0x0521, revid=0x01
	class=03-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=a, irq=5
	map[10]: type 1, range 32, base e8000000, size 24
	map[14]: type 1, range 32, base e4000000, size 14
	map[18]: type 1, range 32, base e5000000, size 23
pci1: <PCI bus> on pcib2
pci1: <Matrox MGA G200 AGP graphics accelerator> (vendor=0x102b, dev=0x0521) 
at 0.0 irq 5
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
uhci0: <VIA 83C572 USB controller> port 0x6800-0x681f irq 9 at device 7.2 on 
pci0
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhub0: port 1 power on failed, IOERROR
uhub0: port 2 power on failed, IOERROR
uhub1: Texas Instruments UT-USB41 hub, class 9/0, rev 1.10/1.10, addr 2
uhub1: 4 ports with 4 removable, bus powered
uhub2: Nokia Display Products Oy Nokia USB Hub Type P, class 9/0, rev 
1.00/1.08, addr 3
uhub2: 5 ports with 4 removable, self powered
uhid0: Nokia Display Products Oy Nokia USB Monitor Control, rev 1.00/1.08, 
addr 4, iclass 3/0
ums0: Microsoft Microsoft IntelliMouse  with IntelliEye, rev 1.10/1.00, addr 
5, iclass 3/1
ums0: 3 buttons and Z dir.
pci_open(1):	mode 1 addr port (0x0cf8) is 0x00000000
pci_open(1a):	mode1res=0x80000000 (0x80000000)
pci_cfgcheck:	device 0 [class=060000] [hdr=00] is there (id=05981106)
pci-: pci1 exists, using next available unit number
pcib1: <Host to PCI bridge> on motherboard
pci2: <PCI bus> on pcib1
isa_probe_children: disabling PnP devices
isa_probe_children: probing non-PnP devices
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
atkbd: the current kbd controller command byte 0067
atkbd: keyboard ID 0x41ab (2)
kbdc: RESET_KBD return code:00fa
kbdc: RESET_KBD status:00aa
kbd0: atkbd0, AT 101/102 (2), config:0x0, flags:0x3d0000
psm0: current command byte:0067
kbdc: TEST_AUX_PORT status:0000
kbdc: RESET_AUX return code:00fe
kbdc: RESET_AUX return code:00fe
kbdc: RESET_AUX return code:00fe
kbdc: DIAGNOSE status:0055
kbdc: TEST_KBD_PORT status:0000
psm0: failed to reset the aux device.
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
fb0: vga0, vga, type:VGA (5), flags:0x7007f
fb0: port:0x3c0-0x3df, crtc:0x3d4, mem:0xa0000 0x20000
fb0: init mode:24, bios mode:3, current mode:24
fb0: window:0xc00b8000 size:32k gran:32k, buf:0 size:32k
isa_probe_children: probing PnP devices


murduth@rmstar /home/murduth #usbdevs
addr 1: UHCI root hub, VIA
 addr 2: UT-USB41 hub, Texas Instruments
  addr 3: Nokia USB Hub Type P, Nokia Display Products Oy
   addr 4: Nokia USB Monitor Control, Nokia Display Products Oy
  addr 5: Microsoft IntelliMouse  with IntelliEye, Microsoft


Relevant logentries for the failure

Aug 19 20:41:56 rmstar /kernel: ums0: at uhub1 port 3 (addr 5) disconnected
Aug 19 20:41:56 rmstar /kernel: ums0: detached
Aug 19 20:41:56 rmstar moused: unable to open /dev/ums0: Device not configured
Aug 19 20:41:57 rmstar /kernel: ums0: Microsoft Microsoft IntelliMouse  with 
In
telliEye, rev 1.10/1.00, addr 5, iclass 3/1
Aug 19 20:41:57 rmstar /kernel: ums0: 3 buttons and Z dir.
Aug 20 16:39:59 rmstar /kernel: ums0: at uhub1 port 3 (addr 5) disconnected
Aug 20 16:39:59 rmstar /kernel: ums0: detached
Aug 20 16:39:59 rmstar moused: unable to open /dev/ums0: Device not configured
Aug 20 16:39:59 rmstar /kernel: ums0: Microsoft Microsoft IntelliMouse  with 
In
telliEye, rev 1.10/1.00, addr 5, iclass 3/1
Aug 20 16:39:59 rmstar /kernel: ums0: 3 buttons and Z dir.
Aug 20 19:07:39 rmstar /kernel: ums0: at uhub1 port 3 (addr 5) disconnected
Aug 20 19:07:39 rmstar /kernel: ums0: detached
Aug 20 19:07:39 rmstar moused: unable to open /dev/ums0: Device not configured
Aug 20 19:07:40 rmstar /kernel: ums0: Microsoft Microsoft IntelliMouse  with 
In
telliEye, rev 1.10/1.00, addr 5, iclass 3/1
Aug 20 19:07:40 rmstar /kernel: ums0: 3 buttons and Z dir.
Aug 20 19:09:11 rmstar /kernel: ums0: at uhub1 port 3 (addr 5) disconnected
Aug 20 19:09:11 rmstar /kernel: ums0: detached
Aug 20 19:09:11 rmstar moused: unable to open /dev/ums0: Device not configured
Aug 20 19:09:12 rmstar /kernel: uhub1: device problem, disabling port 3
Aug 20 19:09:12 rmstar /kernel: uhub1: port error, giving up port 3


>Description:

Occasionaly the mouse is detached from the USB bus and as far as i know there 
is no way to reattach it after it is gone. It doesn't seem to matter where on 
the bus the mouse is connected.

>How-To-Repeat:

Use the mouse.

>Fix:

Unknown



-- 
regards/ Joakim



>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->n_hibma 
Responsible-Changed-By: n_hibma 
Responsible-Changed-When: Mon Aug 21 09:00:07 PDT 2000 
Responsible-Changed-Why:  
I'll see whether I can figure this one out. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=20734 

From: Nick Hibma <n_hibma@qubesoft.com>
To: Joakim Henriksson <murduth@ludd.luth.se>
Cc: freebsd-gnats-submit@FreeBSD.org
Subject: Re: kern/20734: My USB mouse detaches leaving me without a mouse
Date: Mon, 21 Aug 2000 17:47:16 +0100 (BST)

   This message is in MIME format.  The first part should be readable text,
   while the remaining parts are likely unreadable without MIME-aware tools.
   Send mail to mime@docserver.cac.washington.edu for more info.
 
 --0-895156531-966876436=:2385
 Content-Type: TEXT/PLAIN; charset=US-ASCII
 
 > Aug 20 19:09:11 rmstar /kernel: ums0: detached
 > Aug 20 19:09:11 rmstar moused: unable to open /dev/ums0: Device not configured
 > Aug 20 19:09:12 rmstar /kernel: uhub1: device problem, disabling port 3
 > Aug 20 19:09:12 rmstar /kernel: uhub1: port error, giving up port 3
 
 The problem might be that the port reset returns too quickly and the
 mouse isn't ready yet. Could you try the following patch (full file,
 sys/dev/usb/uhub.c, attached):
 
 Index: uhub.c
 ===================================================================
 RCS file: /home/ncvs/src/sys/dev/usb/uhub.c,v
 retrieving revision 1.26
 diff -w -u -r1.26 uhub.c
 --- uhub.c	2000/07/17 18:41:19	1.26
 +++ uhub.c	2000/08/21 16:37:04
 @@ -415,8 +415,6 @@
  			printf("%s: strange, connected port %d has no power\n",
  			       USBDEVNAME(sc->sc_dev), port);
  
 -		up->restartcnt = 0;
 -
  		/* Wait for maximum device power up time. */
  		usbd_delay_ms(dev, USB_PORT_POWERUP_DELAY);
  
 @@ -446,9 +444,10 @@
  			printf("%s: device problem, disabling port %d\n",
  			       USBDEVNAME(sc->sc_dev), port);
  			usbd_clear_port_feature(dev, port, UHF_PORT_ENABLE);
 -			/* Make sure we don't try to restart it infinitely. */
 -			up->restartcnt = USBD_RESTART_MAX;
  		} else {
 +			/* the port set up succeeded, reset error count */
 +			up->restartcnt = 0;
 +
  			if (up->device->hub)
  				up->device->hub->explore(up->device);
  		}
 
 
 The patch modifies the restartcnt in that it retries several times
 before giving up on the newly arrived device (the mouse).
 
 If that does not help, or not in all cases, could you increase the value
 for USB_PORT_RESET_RECOVERY in sys/dev/usb/usb.h, line 416, to 200:
 
 #define USB_PORT_RESET_RECOVERY 200 /* ms */
 
 This should give the mouse more time to recover from the reset before it
 is being spoken to.
 
 Let me know if you need more information on recompiling your kernel.
 
 > >Description:
 > 
 > Occasionaly the mouse is detached from the USB bus and as far as i know there 
 > is no way to reattach it after it is gone. It doesn't seem to matter where on 
 > the bus the mouse is connected.
 
 Do you have any indication of why the mouse detaches every so often?
 I've had, with an external MacAlly hub had problem with the hub shorting
 whenever something was plugged in. All devices connected to the hub
 would disconnect and reconnect at that point.
 
 Could you check for bad connector on the mouse or the hub.
 
 At the very moment the mouse disconnects are you touching else, like the
 monitor, a metal table, the hub itself, etc?
 
 Is the hub powered by a separate power supply
 
 Hope this helps.
 
 Thanks for the very detailed, excellent bug report!
 
 Nick
 --
 Qube Software, Ltd.                                             Private:
 n_hibma@qubesoft.com                              n_hibma@webweaving.org
                                                      n_hibma@freebsd.org
 http://www.qubesoft.com/                   http://www.etla.net/~n_hibma/
 
 
 --0-895156531-966876436=:2385
 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="uhub.c"
 Content-Transfer-Encoding: BASE64
 Content-ID: <Pine.BSF.4.20.0008211747160.2385@henny.webweaving.org>
 Content-Description: 
 Content-Disposition: attachment; filename="uhub.c"
 
 LyoJJE5ldEJTRDogdWh1Yi5jLHYgMS40NCAyMDAwLzA0LzI3IDE1OjI2OjQ4
 IGF1Z3VzdHNzIEV4cCAkCSovDQovKgkkRnJlZUJTRDogc3JjL3N5cy9kZXYv
 dXNiL3VodWIuYyx2IDEuMjYgMjAwMC8wNy8xNyAxODo0MToxOSBuX2hpYm1h
 IEV4cCAkCSovDQoNCi8qDQogKiBDb3B5cmlnaHQgKGMpIDE5OTggVGhlIE5l
 dEJTRCBGb3VuZGF0aW9uLCBJbmMuDQogKiBBbGwgcmlnaHRzIHJlc2VydmVk
 Lg0KICoNCiAqIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUg
 Y29udHJpYnV0ZWQgdG8gVGhlIE5ldEJTRCBGb3VuZGF0aW9uDQogKiBieSBM
 ZW5uYXJ0IEF1Z3VzdHNzb24gKGxlbm5hcnRAYXVndXN0c3Nvbi5uZXQpIGF0
 DQogKiBDYXJsc3RlZHQgUmVzZWFyY2ggJiBUZWNobm9sb2d5Lg0KICoNCiAq
 IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
 Zm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICogbW9kaWZpY2F0aW9uLCBhcmUg
 cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
 b25zDQogKiBhcmUgbWV0Og0KICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
 dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAq
 ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
 b2xsb3dpbmcgZGlzY2xhaW1lci4NCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
 biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
 Z2h0DQogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
 ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogKiAgICBkb2N1
 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
 aCB0aGUgZGlzdHJpYnV0aW9uLg0KICogMy4gQWxsIGFkdmVydGlzaW5nIG1h
 dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNv
 ZnR3YXJlDQogKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tu
 b3dsZWRnZW1lbnQ6DQogKiAgICAgICAgVGhpcyBwcm9kdWN0IGluY2x1ZGVz
 IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgTmV0QlNEDQogKiAgICAgICAg
 Rm91bmRhdGlvbiwgSW5jLiBhbmQgaXRzIGNvbnRyaWJ1dG9ycy4NCiAqIDQu
 IE5laXRoZXIgdGhlIG5hbWUgb2YgVGhlIE5ldEJTRCBGb3VuZGF0aW9uIG5v
 ciB0aGUgbmFtZXMgb2YgaXRzDQogKiAgICBjb250cmlidXRvcnMgbWF5IGJl
 IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQN
 CiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
 aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4NCiAqDQogKiBUSElTIFNPRlRXQVJF
 IElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRBVElPTiwgSU5DLiBB
 TkQgQ09OVFJJQlVUT1JTDQogKiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNT
 IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
 TUlURUQNCiAqIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
 QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQogKiBQ
 VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhF
 IEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JTDQogKiBCRSBMSUFCTEUgRk9S
 IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
 WEVNUExBUlksIE9SDQogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
 RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KICog
 U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
 VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQogKiBJTlRFUlJVUFRJT04p
 IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
 WSwgV0hFVEhFUiBJTg0KICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
 IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkN
 CiAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
 IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQogKiBQT1NTSUJJ
 TElUWSBPRiBTVUNIIERBTUFHRS4NCiAqLw0KDQovKg0KICogVVNCIHNwZWM6
 IGh0dHA6Ly93d3cudXNiLm9yZy9kZXZlbG9wZXJzL2RvY3MuaHRtDQogKi8N
 Cg0KI2luY2x1ZGUgPHN5cy9wYXJhbS5oPg0KI2luY2x1ZGUgPHN5cy9zeXN0
 bS5oPg0KI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4NCiNpbmNsdWRlIDxzeXMv
 bWFsbG9jLmg+DQojaWYgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVk
 KF9fT3BlbkJTRF9fKQ0KI2luY2x1ZGUgPHN5cy9kZXZpY2UuaD4NCiNpbmNs
 dWRlIDxzeXMvcHJvYy5oPg0KI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykN
 CiNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+DQojaW5jbHVkZSA8c3lzL2J1cy5o
 Pg0KI2luY2x1ZGUgImJ1c19pZi5oIg0KI2VuZGlmDQoNCiNpbmNsdWRlIDxt
 YWNoaW5lL2J1cy5oPg0KDQojaW5jbHVkZSA8ZGV2L3VzYi91c2IuaD4NCiNp
 bmNsdWRlIDxkZXYvdXNiL3VzYmRpLmg+DQojaW5jbHVkZSA8ZGV2L3VzYi91
 c2JkaV91dGlsLmg+DQojaW5jbHVkZSA8ZGV2L3VzYi91c2JkaXZhci5oPg0K
 DQojZGVmaW5lIFVIVUJfSU5UUl9JTlRFUlZBTCAyNTUJLyogbXMgKi8NCg0K
 I2lmZGVmIFVIVUJfREVCVUcNCiNkZWZpbmUgRFBSSU5URih4KQlpZiAodWh1
 YmRlYnVnKSBsb2dwcmludGYgeA0KI2RlZmluZSBEUFJJTlRGTihuLHgpCWlm
 ICh1aHViZGVidWc+KG4pKSBsb2dwcmludGYgeA0KaW50CXVodWJkZWJ1ZzsN
 CiNlbHNlDQojZGVmaW5lIERQUklOVEYoeCkNCiNkZWZpbmUgRFBSSU5URk4o
 bix4KQ0KI2VuZGlmDQoNCnN0cnVjdCB1aHViX3NvZnRjIHsNCglVU0JCQVNF
 REVWSUNFCQlzY19kZXY7CQkvKiBiYXNlIGRldmljZSAqLw0KCXVzYmRfZGV2
 aWNlX2hhbmRsZQlzY19odWI7CQkvKiBVU0IgZGV2aWNlICovDQoJdXNiZF9w
 aXBlX2hhbmRsZQlzY19pcGlwZTsJLyogaW50ZXJydXB0IHBpcGUgKi8NCgl1
 X2ludDhfdAkJc2Nfc3RhdHVzWzFdOwkvKiBYWFggbW9yZSBwb3J0cyAqLw0K
 CXVfY2hhcgkJCXNjX3J1bm5pbmc7DQp9Ow0KDQpTdGF0aWMgdXNiZF9zdGF0
 dXMgdWh1Yl9leHBsb3JlKHVzYmRfZGV2aWNlX2hhbmRsZSBodWIpOw0KU3Rh
 dGljIHZvaWQgdWh1Yl9pbnRyKHVzYmRfeGZlcl9oYW5kbGUsIHVzYmRfcHJp
 dmF0ZV9oYW5kbGUsdXNiZF9zdGF0dXMpOw0KDQojaWYgZGVmaW5lZChfX0Zy
 ZWVCU0RfXykNClN0YXRpYyBidXNfY2hpbGRfZGV0YWNoZWRfdCB1aHViX2No
 aWxkX2RldGFjaGVkOw0KI2VuZGlmDQoNCg0KLyogDQogKiBXZSBuZWVkIHR3
 byBhdHRhY2htZW50IHBvaW50czoNCiAqIGh1YiB0byB1c2IgYW5kIGh1YiB0
 byBodWINCiAqIEV2ZXJ5IG90aGVyIGRyaXZlciBvbmx5IGNvbm5lY3RzIHRv
 IGh1YnMNCiAqLw0KDQojaWYgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZp
 bmVkKF9fT3BlbkJTRF9fKQ0KVVNCX0RFQ0xBUkVfRFJJVkVSKHVodWIpOw0K
 DQovKiBDcmVhdGUgdGhlIGRyaXZlciBpbnN0YW5jZSBmb3IgdGhlIGh1YiBj
 b25uZWN0ZWQgdG8gaHViIGNhc2UgKi8NCnN0cnVjdCBjZmF0dGFjaCB1aHVi
 X3VodWJfY2EgPSB7DQoJc2l6ZW9mKHN0cnVjdCB1aHViX3NvZnRjKSwgdWh1
 Yl9tYXRjaCwgdWh1Yl9hdHRhY2gsDQoJdWh1Yl9kZXRhY2gsIHVodWJfYWN0
 aXZhdGUNCn07DQojZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQ0KVVNCX0RF
 Q0xBUkVfRFJJVkVSX0lOSVQodWh1YiwNCgkJCURFVk1FVEhPRChidXNfY2hp
 bGRfZGV0YWNoZWQsIHVodWJfY2hpbGRfZGV0YWNoZWQpLA0KCQkJREVWTUVU
 SE9EKGRldmljZV9zdXNwZW5kLCBidXNfZ2VuZXJpY19zdXNwZW5kKSwNCgkJ
 CURFVk1FVEhPRChkZXZpY2VfcmVzdW1lLCBidXNfZ2VuZXJpY19yZXN1bWUp
 LA0KCQkJREVWTUVUSE9EKGRldmljZV9zaHV0ZG93biwgYnVzX2dlbmVyaWNf
 c2h1dGRvd24pDQoJCQkpOw0KCQkJDQovKiBDcmVhdGUgdGhlIGRyaXZlciBp
 bnN0YW5jZSBmb3IgdGhlIGh1YiBjb25uZWN0ZWQgdG8gdXNiIGNhc2UuICov
 DQpkZXZjbGFzc190IHVodWJyb290X2RldmNsYXNzOw0KDQpTdGF0aWMgZGV2
 aWNlX21ldGhvZF90IHVodWJyb290X21ldGhvZHNbXSA9IHsNCglERVZNRVRI
 T0QoZGV2aWNlX3Byb2JlLCB1aHViX21hdGNoKSwNCglERVZNRVRIT0QoZGV2
 aWNlX2F0dGFjaCwgdWh1Yl9hdHRhY2gpLA0KCS8qIGRldGFjaCBpcyBub3Qg
 YWxsb3dlZCBmb3IgYSByb290IGh1YiAqLw0KCURFVk1FVEhPRChkZXZpY2Vf
 c3VzcGVuZCwgYnVzX2dlbmVyaWNfc3VzcGVuZCksDQoJREVWTUVUSE9EKGRl
 dmljZV9yZXN1bWUsIGJ1c19nZW5lcmljX3N1c3BlbmQpLA0KCURFVk1FVEhP
 RChkZXZpY2Vfc2h1dGRvd24sIGJ1c19nZW5lcmljX3NodXRkb3duKSwNCgl7
 MCwwfQ0KfTsNCg0KU3RhdGljCWRyaXZlcl90IHVodWJyb290X2RyaXZlciA9
 IHsNCgkidWh1YiIsDQoJdWh1YnJvb3RfbWV0aG9kcywNCglzaXplb2Yoc3Ry
 dWN0IHVodWJfc29mdGMpDQp9Ow0KI2VuZGlmDQoNClVTQl9NQVRDSCh1aHVi
 KQ0Kew0KCVVTQl9NQVRDSF9TVEFSVCh1aHViLCB1YWEpOw0KCXVzYl9kZXZp
 Y2VfZGVzY3JpcHRvcl90ICpkZCA9IHVzYmRfZ2V0X2RldmljZV9kZXNjcmlw
 dG9yKHVhYS0+ZGV2aWNlKTsNCgkNCglEUFJJTlRGTig1LCgidWh1Yl9tYXRj
 aCwgZGQ9JXBcbiIsIGRkKSk7DQoJLyogDQoJICogVGhlIHN1YmNsYXNzIGZv
 ciBodWJzIHNlZW1zIHRvIGJlIDAgZm9yIHNvbWUgYW5kIDEgZm9yIG90aGVy
 cywNCgkgKiBzbyB3ZSBqdXN0IGlnbm9yZSB0aGUgc3ViY2xhc3MuDQoJICov
 DQoJaWYgKHVhYS0+aWZhY2UgPT0gTlVMTCAmJiBkZC0+YkRldmljZUNsYXNz
 ID09IFVDTEFTU19IVUIpDQoJCXJldHVybiAoVU1BVENIX0RFVkNMQVNTX0RF
 VlNVQkNMQVNTKTsNCglyZXR1cm4gKFVNQVRDSF9OT05FKTsNCn0NCg0KVVNC
 X0FUVEFDSCh1aHViKQ0Kew0KCVVTQl9BVFRBQ0hfU1RBUlQodWh1Yiwgc2Ms
 IHVhYSk7DQoJdXNiZF9kZXZpY2VfaGFuZGxlIGRldiA9IHVhYS0+ZGV2aWNl
 Ow0KCWNoYXIgZGV2aW5mb1sxMDI0XTsNCgl1c2JkX3N0YXR1cyBlcnI7DQoJ
 c3RydWN0IHVzYmRfaHViICpodWI7DQoJdXNiX2RldmljZV9yZXF1ZXN0X3Qg
 cmVxOw0KCXVzYl9odWJfZGVzY3JpcHRvcl90IGh1YmRlc2M7DQoJaW50IHAs
 IHBvcnQsIG5wb3J0cywgbnJlbW92LCBwd3JkbHk7DQoJdXNiZF9pbnRlcmZh
 Y2VfaGFuZGxlIGlmYWNlOw0KCXVzYl9lbmRwb2ludF9kZXNjcmlwdG9yX3Qg
 KmVkOw0KCQ0KCURQUklOVEZOKDEsKCJ1aHViX2F0dGFjaFxuIikpOw0KCXNj
 LT5zY19odWIgPSBkZXY7DQoJdXNiZF9kZXZpbmZvKGRldiwgMSwgZGV2aW5m
 byk7DQoJVVNCX0FUVEFDSF9TRVRVUDsNCglwcmludGYoIiVzOiAlc1xuIiwg
 VVNCREVWTkFNRShzYy0+c2NfZGV2KSwgZGV2aW5mbyk7DQoNCgllcnIgPSB1
 c2JkX3NldF9jb25maWdfaW5kZXgoZGV2LCAwLCAxKTsNCglpZiAoZXJyKSB7
 DQoJCURQUklOVEYoKCIlczogY29uZmlndXJhdGlvbiBmYWlsZWQsIGVycm9y
 PSVzXG4iLA0KCQkJIFVTQkRFVk5BTUUoc2MtPnNjX2RldiksIHVzYmRfZXJy
 c3RyKGVycikpKTsNCgkJVVNCX0FUVEFDSF9FUlJPUl9SRVRVUk47DQoJfQ0K
 DQoJaWYgKGRldi0+ZGVwdGggPiBVU0JfSFVCX01BWF9ERVBUSCkgew0KCQlw
 cmludGYoIiVzOiBodWIgZGVwdGggKCVkKSBleGNlZWRlZCwgaHViIGlnbm9y
 ZWRcbiIsDQoJCSAgICAgICBVU0JERVZOQU1FKHNjLT5zY19kZXYpLCBVU0Jf
 SFVCX01BWF9ERVBUSCk7DQoJCVVTQl9BVFRBQ0hfRVJST1JfUkVUVVJOOw0K
 CX0NCg0KCS8qIEdldCBodWIgZGVzY3JpcHRvci4gKi8NCglyZXEuYm1SZXF1
 ZXN0VHlwZSA9IFVUX1JFQURfQ0xBU1NfREVWSUNFOw0KCXJlcS5iUmVxdWVz
 dCA9IFVSX0dFVF9ERVNDUklQVE9SOw0KCVVTRVRXKHJlcS53VmFsdWUsIDAp
 Ow0KCVVTRVRXKHJlcS53SW5kZXgsIDApOw0KCVVTRVRXKHJlcS53TGVuZ3Ro
 LCBVU0JfSFVCX0RFU0NSSVBUT1JfU0laRSk7DQoJRFBSSU5URk4oMSwoInVz
 Yl9pbml0X2h1YjogZ2V0dGluZyBodWIgZGVzY3JpcHRvclxuIikpOw0KCWVy
 ciA9IHVzYmRfZG9fcmVxdWVzdChkZXYsICZyZXEsICZodWJkZXNjKTsNCglu
 cG9ydHMgPSBodWJkZXNjLmJOYnJQb3J0czsNCglpZiAoIWVyciAmJiBucG9y
 dHMgPiA3KSB7DQoJCVVTRVRXKHJlcS53TGVuZ3RoLCBVU0JfSFVCX0RFU0NS
 SVBUT1JfU0laRSArIChucG9ydHMrMSkgLyA4KTsNCgkJZXJyID0gdXNiZF9k
 b19yZXF1ZXN0KGRldiwgJnJlcSwgJmh1YmRlc2MpOw0KCX0NCglpZiAoZXJy
 KSB7DQoJCURQUklOVEYoKCIlczogZ2V0dGluZyBodWIgZGVzY3JpcHRvciBm
 YWlsZWQsIGVycm9yPSVzXG4iLA0KCQkJIFVTQkRFVk5BTUUoc2MtPnNjX2Rl
 diksIHVzYmRfZXJyc3RyKGVycikpKTsNCgkJVVNCX0FUVEFDSF9FUlJPUl9S
 RVRVUk47DQoJfQ0KDQoJZm9yIChucmVtb3YgPSAwLCBwb3J0ID0gMTsgcG9y
 dCA8PSBucG9ydHM7IHBvcnQrKykNCgkJaWYgKCFVSERfTk9UX1JFTU9WKCZo
 dWJkZXNjLCBwb3J0KSkNCgkJCW5yZW1vdisrOw0KCXByaW50ZigiJXM6ICVk
 IHBvcnQlcyB3aXRoICVkIHJlbW92YWJsZSwgJXMgcG93ZXJlZFxuIiwNCgkg
 ICAgICAgVVNCREVWTkFNRShzYy0+c2NfZGV2KSwgbnBvcnRzLCBucG9ydHMg
 IT0gMSA/ICJzIiA6ICIiLA0KCSAgICAgICBucmVtb3YsIGRldi0+c2VsZl9w
 b3dlcmVkID8gInNlbGYiIDogImJ1cyIpOw0KDQoJaHViID0gbWFsbG9jKHNp
 emVvZigqaHViKSArIChucG9ydHMtMSkgKiBzaXplb2Yoc3RydWN0IHVzYmRf
 cG9ydCksDQoJCSAgICAgTV9VU0JERVYsIE1fTk9XQUlUKTsNCglpZiAoaHVi
 ID09IE5VTEwpDQoJCVVTQl9BVFRBQ0hfRVJST1JfUkVUVVJOOw0KCWRldi0+
 aHViID0gaHViOw0KCWRldi0+aHViLT5odWJzb2Z0YyA9IHNjOw0KCWh1Yi0+
 ZXhwbG9yZSA9IHVodWJfZXhwbG9yZTsNCglodWItPmh1YmRlc2MgPSBodWJk
 ZXNjOw0KCQ0KCURQUklOVEZOKDEsKCJ1c2JodWJfaW5pdF9odWI6IHNlbGZw
 b3dlcmVkPSVkLCBwYXJlbnQ9JXAsICINCgkJICAgICJwYXJlbnQtPnNlbGZw
 b3dlcmVkPSVkXG4iLA0KCQkgZGV2LT5zZWxmX3Bvd2VyZWQsIGRldi0+cG93
 ZXJzcmMtPnBhcmVudCwNCgkJIGRldi0+cG93ZXJzcmMtPnBhcmVudCA/IA0K
 CQkgZGV2LT5wb3dlcnNyYy0+cGFyZW50LT5zZWxmX3Bvd2VyZWQgOiAwKSk7
 DQoNCglpZiAoIWRldi0+c2VsZl9wb3dlcmVkICYmIGRldi0+cG93ZXJzcmMt
 PnBhcmVudCAhPSBOVUxMICYmDQoJICAgICFkZXYtPnBvd2Vyc3JjLT5wYXJl
 bnQtPnNlbGZfcG93ZXJlZCkgew0KCQlwcmludGYoIiVzOiBidXMgcG93ZXJl
 ZCBodWIgY29ubmVjdGVkIHRvIGJ1cyBwb3dlcmVkIGh1YiwgIg0KCQkgICAg
 ICAgImlnbm9yZWRcbiIsIFVTQkRFVk5BTUUoc2MtPnNjX2RldikpOw0KCQln
 b3RvIGJhZDsNCgl9DQoNCgkvKiBTZXQgdXAgaW50ZXJydXB0IHBpcGUuICov
 DQoJZXJyID0gdXNiZF9kZXZpY2UyaW50ZXJmYWNlX2hhbmRsZShkZXYsIDAs
 ICZpZmFjZSk7DQoJaWYgKGVycikgew0KCQlwcmludGYoIiVzOiBubyBpbnRl
 cmZhY2UgaGFuZGxlXG4iLCBVU0JERVZOQU1FKHNjLT5zY19kZXYpKTsNCgkJ
 Z290byBiYWQ7DQoJfQ0KCWVkID0gdXNiZF9pbnRlcmZhY2UyZW5kcG9pbnRf
 ZGVzY3JpcHRvcihpZmFjZSwgMCk7DQoJaWYgKGVkID09IE5VTEwpIHsNCgkJ
 cHJpbnRmKCIlczogbm8gZW5kcG9pbnQgZGVzY3JpcHRvclxuIiwgVVNCREVW
 TkFNRShzYy0+c2NfZGV2KSk7DQoJCWdvdG8gYmFkOw0KCX0NCglpZiAoKGVk
 LT5ibUF0dHJpYnV0ZXMgJiBVRV9YRkVSVFlQRSkgIT0gVUVfSU5URVJSVVBU
 KSB7DQoJCXByaW50ZigiJXM6IGJhZCBpbnRlcnJ1cHQgZW5kcG9pbnRcbiIs
 IFVTQkRFVk5BTUUoc2MtPnNjX2RldikpOw0KCQlnb3RvIGJhZDsNCgl9DQoN
 CgllcnIgPSB1c2JkX29wZW5fcGlwZV9pbnRyKGlmYWNlLCBlZC0+YkVuZHBv
 aW50QWRkcmVzcywNCgkJICBVU0JEX1NIT1JUX1hGRVJfT0ssICZzYy0+c2Nf
 aXBpcGUsIHNjLCBzYy0+c2Nfc3RhdHVzLCANCgkJICBzaXplb2Yoc2MtPnNj
 X3N0YXR1cyksIHVodWJfaW50ciwgVUhVQl9JTlRSX0lOVEVSVkFMKTsNCglp
 ZiAoZXJyKSB7DQoJCXByaW50ZigiJXM6IGNhbm5vdCBvcGVuIGludGVycnVw
 dCBwaXBlXG4iLCANCgkJICAgICAgIFVTQkRFVk5BTUUoc2MtPnNjX2Rldikp
 Ow0KCQlnb3RvIGJhZDsNCgl9DQoNCgkvKiBXYWl0IHdpdGggcG93ZXIgb2Zm
 IGZvciBhIHdoaWxlLiAqLw0KCXVzYmRfZGVsYXlfbXMoZGV2LCBVU0JfUE9X
 RVJfRE9XTl9USU1FKTsNCg0KCS8qDQoJICogVG8gaGF2ZSB0aGUgYmVzdCBj
 aGFuY2Ugb2Ygc3VjY2VzcyB3ZSBkbyB0aGluZ3MgaW4gdGhlIGV4YWN0IHNh
 bWUNCgkgKiBvcmRlciBhcyBXaW5kb3plOTguICBUaGlzIHNob3VsZCBub3Qg
 YmUgbmVjZXNzYXJ5LCBidXQgc29tZQ0KCSAqIGRldmljZXMgZG8gbm90IGZv
 bGxvdyB0aGUgVVNCIHNwZWNzIHRvIHRoZSBsZXR0ZXIuDQoJICoNCgkgKiBU
 aGVzZSBhcmUgdGhlIGV2ZW50cyBvbiB0aGUgYnVzIHdoZW4gYSBodWIgaXMg
 YXR0YWNoZWQ6DQoJICogIEdldCBkZXZpY2UgYW5kIGNvbmZpZyBkZXNjcmlw
 dG9ycyAoc2VlIGF0dGFjaCBjb2RlKQ0KCSAqICBHZXQgaHViIGRlc2NyaXB0
 b3IgKHNlZSBhYm92ZSkNCgkgKiAgRm9yIGFsbCBwb3J0cw0KCSAqICAgICB0
 dXJuIG9uIHBvd2VyDQoJICogICAgIHdhaXQgZm9yIHBvd2VyIHRvIGJlY29t
 ZSBzdGFibGUNCgkgKiAoYWxsIGJlbG93IGhhcHBlbnMgaW4gZXhwbG9yZSBj
 b2RlKQ0KCSAqICBGb3IgYWxsIHBvcnRzDQoJICogICAgIGNsZWFyIENfUE9S
 VF9DT05ORUNUSU9ODQoJICogIEZvciBhbGwgcG9ydHMNCgkgKiAgICAgZ2V0
 IHBvcnQgc3RhdHVzDQoJICogICAgIGlmIGRldmljZSBjb25uZWN0ZWQNCgkg
 KiAgICAgICAgdHVybiBvbiByZXNldA0KCSAqICAgICAgICB3YWl0DQoJICog
 ICAgICAgIGNsZWFyIENfUE9SVF9SRVNFVA0KCSAqICAgICAgICBnZXQgcG9y
 dCBzdGF0dXMNCgkgKiAgICAgICAgcHJvY2VlZCB3aXRoIGRldmljZSBhdHRh
 Y2htZW50DQoJICovDQoNCgkvKiBTZXQgdXAgZGF0YSBzdHJ1Y3R1cmVzICov
 DQoJZm9yIChwID0gMDsgcCA8IG5wb3J0czsgcCsrKSB7DQoJCXN0cnVjdCB1
 c2JkX3BvcnQgKnVwID0gJmh1Yi0+cG9ydHNbcF07DQoJCXVwLT5kZXZpY2Ug
 PSAwOw0KCQl1cC0+cGFyZW50ID0gZGV2Ow0KCQl1cC0+cG9ydG5vID0gcCsx
 Ow0KCQlpZiAoZGV2LT5zZWxmX3Bvd2VyZWQpDQoJCQkvKiBTZWxmIHBvd2Vy
 ZWQgaHViLCBnaXZlIHBvcnRzIG1heGltdW0gY3VycmVudC4gKi8NCgkJCXVw
 LT5wb3dlciA9IFVTQl9NQVhfUE9XRVI7DQoJCWVsc2UNCgkJCXVwLT5wb3dl
 ciA9IFVTQl9NSU5fUE9XRVI7DQoJfQ0KDQoJLyogWFhYIHNob3VsZCBjaGVj
 ayBmb3Igbm9uZSwgaW5kaXZpZHVhbCwgb3IgZ2FuZ2VkIHBvd2VyPyAqLw0K
 DQoJcHdyZGx5ID0gZGV2LT5odWItPmh1YmRlc2MuYlB3ck9uMlB3ckdvb2Qg
 KiBVSERfUFdST05fRkFDVE9SDQoJICAgICsgVVNCX0VYVFJBX1BPV0VSX1VQ
 X1RJTUU7DQoJZm9yIChwb3J0ID0gMTsgcG9ydCA8PSBucG9ydHM7IHBvcnQr
 Kykgew0KCQkvKiBUdXJuIHRoZSBwb3dlciBvbi4gKi8NCgkJZXJyID0gdXNi
 ZF9zZXRfcG9ydF9mZWF0dXJlKGRldiwgcG9ydCwgVUhGX1BPUlRfUE9XRVIp
 Ow0KCQlpZiAoZXJyKQ0KCQkJcHJpbnRmKCIlczogcG9ydCAlZCBwb3dlciBv
 biBmYWlsZWQsICVzXG4iLCANCgkJCSAgICAgICBVU0JERVZOQU1FKHNjLT5z
 Y19kZXYpLCBwb3J0LA0KCQkJICAgICAgIHVzYmRfZXJyc3RyKGVycikpOw0K
 CQlEUFJJTlRGKCgidXNiX2luaXRfcG9ydDogdHVybiBvbiBwb3J0ICVkIHBv
 d2VyXG4iLCBwb3J0KSk7DQoJCS8qIFdhaXQgZm9yIHN0YWJsZSBwb3dlci4g
 Ki8NCgkJdXNiZF9kZWxheV9tcyhkZXYsIHB3cmRseSk7DQoJfQ0KDQoJLyog
 VGhlIHVzdWFsIGV4cGxvcmF0aW9uIHdpbGwgZmluaXNoIHRoZSBzZXR1cC4g
 Ki8NCg0KCXNjLT5zY19ydW5uaW5nID0gMTsNCg0KCVVTQl9BVFRBQ0hfU1VD
 Q0VTU19SRVRVUk47DQoNCiBiYWQ6DQoJZnJlZShodWIsIE1fVVNCREVWKTsN
 CglkZXYtPmh1YiA9IDA7DQoJVVNCX0FUVEFDSF9FUlJPUl9SRVRVUk47DQp9
 DQoNCnVzYmRfc3RhdHVzDQp1aHViX2V4cGxvcmUoZGV2KQ0KCXVzYmRfZGV2
 aWNlX2hhbmRsZSBkZXY7DQp7DQoJdXNiX2h1Yl9kZXNjcmlwdG9yX3QgKmhk
 ID0gJmRldi0+aHViLT5odWJkZXNjOw0KCXN0cnVjdCB1aHViX3NvZnRjICpz
 YyA9IGRldi0+aHViLT5odWJzb2Z0YzsNCglzdHJ1Y3QgdXNiZF9wb3J0ICp1
 cDsNCgl1c2JkX3N0YXR1cyBlcnI7DQoJaW50IHBvcnQ7DQoJaW50IGNoYW5n
 ZSwgc3RhdHVzOw0KDQoJRFBSSU5URk4oMTAsICgidWh1Yl9leHBsb3JlIGRl
 dj0lcCBhZGRyPSVkXG4iLCBkZXYsIGRldi0+YWRkcmVzcykpOw0KDQoJaWYg
 KCFzYy0+c2NfcnVubmluZykNCgkJcmV0dXJuIChVU0JEX05PVF9TVEFSVEVE
 KTsNCg0KCS8qIElnbm9yZSBodWJzIHRoYXQgYXJlIHRvbyBkZWVwLiAqLw0K
 CWlmIChkZXYtPmRlcHRoID4gVVNCX0hVQl9NQVhfREVQVEgpDQoJCXJldHVy
 biAoVVNCRF9UT09fREVFUCk7DQoNCglmb3IocG9ydCA9IDE7IHBvcnQgPD0g
 aGQtPmJOYnJQb3J0czsgcG9ydCsrKSB7DQoJCXVwID0gJmRldi0+aHViLT5w
 b3J0c1twb3J0LTFdOw0KCQllcnIgPSB1c2JkX2dldF9wb3J0X3N0YXR1cyhk
 ZXYsIHBvcnQsICZ1cC0+c3RhdHVzKTsNCgkJaWYgKGVycikgew0KCQkJRFBS
 SU5URigoInVodWJfZXhwbG9yZTogZ2V0IHBvcnQgc3RhdHVzIGZhaWxlZCwg
 Ig0KCQkJCSAiZXJyb3I9JXNcbiIsIHVzYmRfZXJyc3RyKGVycikpKTsNCgkJ
 CWNvbnRpbnVlOw0KCQl9DQoJCXN0YXR1cyA9IFVHRVRXKHVwLT5zdGF0dXMu
 d1BvcnRTdGF0dXMpOw0KCQljaGFuZ2UgPSBVR0VUVyh1cC0+c3RhdHVzLndQ
 b3J0Q2hhbmdlKTsNCgkJRFBSSU5URk4oMywoInVodWJfZXhwbG9yZTogcG9y
 dCAlZCBzdGF0dXMgMHglMDR4IDB4JTA0eFxuIiwNCgkJCSAgICBwb3J0LCBz
 dGF0dXMsIGNoYW5nZSkpOw0KCQlpZiAoY2hhbmdlICYgVVBTX0NfUE9SVF9F
 TkFCTEVEKSB7DQoJCQlEUFJJTlRGKCgidWh1Yl9leHBsb3JlOiBDX1BPUlRf
 RU5BQkxFRFxuIikpOw0KCQkJdXNiZF9jbGVhcl9wb3J0X2ZlYXR1cmUoZGV2
 LCBwb3J0LCBVSEZfQ19QT1JUX0VOQUJMRSk7DQoJCQlpZiAoc3RhdHVzICYg
 VVBTX1BPUlRfRU5BQkxFRCkgew0KCQkJCXByaW50ZigiJXM6IGlsbGVnYWwg
 ZW5hYmxlIGNoYW5nZSwgcG9ydCAlZFxuIiwNCgkJCQkgICAgICAgVVNCREVW
 TkFNRShzYy0+c2NfZGV2KSwgcG9ydCk7DQoJCQl9IGVsc2Ugew0KCQkJCS8q
 IFBvcnQgZXJyb3IgY29uZGl0aW9uLiAqLw0KCQkJCWlmICh1cC0+cmVzdGFy
 dGNudCsrIDwgVVNCRF9SRVNUQVJUX01BWCkgew0KCQkJCQlwcmludGYoIiVz
 OiBwb3J0IGVycm9yLCByZXN0YXJ0aW5nICINCgkJCQkJICAgICAgICJwb3J0
 ICVkXG4iLA0KCQkJCQkgICAgICAgVVNCREVWTkFNRShzYy0+c2NfZGV2KSwg
 cG9ydCk7DQoJCQkJCWdvdG8gZGlzY287DQoJCQkJfSBlbHNlIHsNCgkJCQkJ
 cHJpbnRmKCIlczogcG9ydCBlcnJvciwgZ2l2aW5nIHVwICINCgkJCQkJICAg
 ICAgICJwb3J0ICVkXG4iLA0KCQkJCQkgICAgICAgVVNCREVWTkFNRShzYy0+
 c2NfZGV2KSwgcG9ydCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWlmICghKGNo
 YW5nZSAmIFVQU19DX0NPTk5FQ1RfU1RBVFVTKSkgew0KCQkJRFBSSU5URk4o
 MywoInVodWJfZXhwbG9yZTogcG9ydD0lZCAhQ19DT05ORUNUXyINCgkJCQkg
 ICAgIlNUQVRVU1xuIiwgcG9ydCkpOw0KCQkJLyogTm8gc3RhdHVzIGNoYW5n
 ZSwganVzdCBkbyByZWN1cnNpdmUgZXhwbG9yZS4gKi8NCgkJCWlmICh1cC0+
 ZGV2aWNlICYmIHVwLT5kZXZpY2UtPmh1YikNCgkJCQl1cC0+ZGV2aWNlLT5o
 dWItPmV4cGxvcmUodXAtPmRldmljZSk7DQoJCQljb250aW51ZTsNCgkJfQ0K
 DQoJCS8qIFdlIGhhdmUgYSBjb25uZWN0IHN0YXR1cyBjaGFuZ2UsIGhhbmRs
 ZSBpdC4gKi8NCg0KCQlEUFJJTlRGKCgidWh1Yl9leHBsb3JlOiBzdGF0dXMg
 Y2hhbmdlIGh1Yj0lZCBwb3J0PSVkXG4iLA0KCQkJIGRldi0+YWRkcmVzcywg
 cG9ydCkpOw0KCQl1c2JkX2NsZWFyX3BvcnRfZmVhdHVyZShkZXYsIHBvcnQs
 IFVIRl9DX1BPUlRfQ09OTkVDVElPTik7DQoJCS8qdXNiZF9jbGVhcl9wb3J0
 X2ZlYXR1cmUoZGV2LCBwb3J0LCBVSEZfQ19QT1JUX0VOQUJMRSk7Ki8NCgkJ
 LyoNCgkJICogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGRldmljZSBvbiB0aGUg
 cG9ydCB0aGUgY2hhbmdlIHN0YXR1cw0KCQkgKiBtdXN0IG1lYW4gdGhhdCBp
 cyBoYXMgZGlzY29ubmVjdGVkLiAgTG9va2luZyBhdCB0aGUNCgkJICogY3Vy
 cmVudCBjb25uZWN0IHN0YXR1cyBpcyBub3QgZW5vdWdoIHRvIGZpZ3VyZSB0
 aGlzIG91dA0KCQkgKiBzaW5jZSBhIG5ldyB1bml0IG1heSBoYXZlIGJlZW4g
 Y29ubmVjdGVkIGJlZm9yZSB3ZSBoYW5kbGUNCgkJICogdGhlIGRpc2Nvbm5l
 Y3QuDQoJCSAqLw0KCWRpc2NvOg0KCQlpZiAodXAtPmRldmljZSAhPSBOVUxM
 KSB7DQoJCQkvKiBEaXNjb25uZWN0ZWQgKi8NCgkJCURQUklOVEYoKCJ1aHVi
 X2V4cGxvcmU6IGRldmljZSBhZGRyPSVkIGRpc2FwcGVhcmVkICINCgkJCQkg
 Im9uIHBvcnQgJWRcbiIsIHVwLT5kZXZpY2UtPmFkZHJlc3MsIHBvcnQpKTsN
 CgkJCXVzYl9kaXNjb25uZWN0X3BvcnQodXAsIFVTQkRFVihzYy0+c2NfZGV2
 KSk7DQoJCQl1c2JkX2NsZWFyX3BvcnRfZmVhdHVyZShkZXYsIHBvcnQsIA0K
 CQkJCQkJVUhGX0NfUE9SVF9DT05ORUNUSU9OKTsNCgkJfQ0KCQlpZiAoIShz
 dGF0dXMgJiBVUFNfQ1VSUkVOVF9DT05ORUNUX1NUQVRVUykpIHsNCgkJCS8q
 IE5vdGhpbmcgY29ubmVjdGVkLCBqdXN0IGlnbm9yZSBpdC4gKi8NCgkJCURQ
 UklOVEZOKDMsKCJ1aHViX2V4cGxvcmU6IHBvcnQ9JWQgIUNVUlJFTlRfQ09O
 TkVDVCINCgkJCQkgICAgIl9TVEFUVVNcbiIsIHBvcnQpKTsNCgkJCWNvbnRp
 bnVlOw0KCQl9DQoNCgkJLyogQ29ubmVjdGVkICovDQoNCgkJaWYgKCEoc3Rh
 dHVzICYgVVBTX1BPUlRfUE9XRVIpKQ0KCQkJcHJpbnRmKCIlczogc3RyYW5n
 ZSwgY29ubmVjdGVkIHBvcnQgJWQgaGFzIG5vIHBvd2VyXG4iLA0KCQkJICAg
 ICAgIFVTQkRFVk5BTUUoc2MtPnNjX2RldiksIHBvcnQpOw0KDQoJCS8qIFdh
 aXQgZm9yIG1heGltdW0gZGV2aWNlIHBvd2VyIHVwIHRpbWUuICovDQoJCXVz
 YmRfZGVsYXlfbXMoZGV2LCBVU0JfUE9SVF9QT1dFUlVQX0RFTEFZKTsNCg0K
 CQkvKiBSZXNldCBwb3J0LCB3aGljaCBpbXBsaWVzIGVuYWJsaW5nIGl0LiAq
 Lw0KCQlpZiAodXNiZF9yZXNldF9wb3J0KGRldiwgcG9ydCwgJnVwLT5zdGF0
 dXMpKSB7DQoJCQlwcmludGYoInVodWJfZXhwbG9yZTogcG9ydD0lZCByZXNl
 dCBmYWlsZWRcbiIsDQoJCQkJIHBvcnQpOw0KCQkJY29udGludWU7DQoJCX0N
 Cg0KCQkvKiBHZXQgZGV2aWNlIGluZm8gYW5kIHNldCBpdHMgYWRkcmVzcy4g
 Ki8NCgkJZXJyID0gdXNiZF9uZXdfZGV2aWNlKFVTQkRFVihzYy0+c2NfZGV2
 KSwgZGV2LT5idXMsIA0KCQkJICBkZXYtPmRlcHRoICsgMSwgc3RhdHVzICYg
 VVBTX0xPV19TUEVFRCwgDQoJCQkgIHBvcnQsIHVwKTsNCgkJLyogWFhYIHJl
 dHJ5IGEgZmV3IHRpbWVzPyAqLw0KCQlpZiAoZXJyKSB7DQoJCQlEUFJJTlRG
 TigtMSwoInVodWJfZXhwbG9yZTogdXNiX25ld19kZXZpY2UgZmFpbGVkLCAi
 DQoJCQkJICAgICAiZXJyb3I9JXNcbiIsIHVzYmRfZXJyc3RyKGVycikpKTsN
 CgkJCS8qIEF2b2lkIGFkZHJlc3NpbmcgcHJvYmxlbXMgYnkgZGlzYWJsaW5n
 LiAqLw0KCQkJLyogdXNiZF9yZXNldF9wb3J0KGRldiwgcG9ydCwgJnVwLT5z
 dGF0dXMpOyAqLw0KDQoJCQkvKiANCgkJCSAqIFRoZSB1bml0IHJlZnVzZWQg
 dG8gYWNjZXB0IGEgbmV3IGFkZHJlc3MsIG9yIGhhZA0KCQkJICogc29tZSBv
 dGhlciBzZXJpb3VzIHByb2JsZW0uICBTaW5jZSB3ZSBjYW5ub3QgbGVhdmUN
 CgkJCSAqIGF0IDAgd2UgaGF2ZSB0byBkaXNhYmxlIHRoZSBwb3J0IGluc3Rl
 YWQuDQoJCQkgKi8NCgkJCXByaW50ZigiJXM6IGRldmljZSBwcm9ibGVtLCBk
 aXNhYmxpbmcgcG9ydCAlZFxuIiwNCgkJCSAgICAgICBVU0JERVZOQU1FKHNj
 LT5zY19kZXYpLCBwb3J0KTsNCgkJCXVzYmRfY2xlYXJfcG9ydF9mZWF0dXJl
 KGRldiwgcG9ydCwgVUhGX1BPUlRfRU5BQkxFKTsNCgkJfSBlbHNlIHsNCgkJ
 CS8qIHRoZSBwb3J0IHNldCB1cCBzdWNjZWVkZWQsIHJlc2V0IGVycm9yIGNv
 dW50ICovDQoJCQl1cC0+cmVzdGFydGNudCA9IDA7DQoNCgkJCWlmICh1cC0+
 ZGV2aWNlLT5odWIpDQoJCQkJdXAtPmRldmljZS0+aHViLT5leHBsb3JlKHVw
 LT5kZXZpY2UpOw0KCQl9DQoJfQ0KCXJldHVybiAoVVNCRF9OT1JNQUxfQ09N
 UExFVElPTik7DQp9DQoNCiNpZiBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRl
 ZmluZWQoX19PcGVuQlNEX18pDQppbnQNCnVodWJfYWN0aXZhdGUoc2VsZiwg
 YWN0KQ0KCWRldmljZV9wdHJfdCBzZWxmOw0KCWVudW0gZGV2YWN0IGFjdDsN
 CnsNCglzdHJ1Y3QgdWh1Yl9zb2Z0YyAqc2MgPSAoc3RydWN0IHVodWJfc29m
 dGMgKilzZWxmOw0KCXN0cnVjdCB1c2JkX2h1YiAqaHViID0gc2MtPnNjX2h1
 Yi0+aHViOw0KCXVzYmRfZGV2aWNlX2hhbmRsZSBkZXY7DQoJaW50IG5wb3J0
 cywgcG9ydCwgaTsNCg0KCXN3aXRjaCAoYWN0KSB7DQoJY2FzZSBEVkFDVF9B
 Q1RJVkFURToNCgkJcmV0dXJuIChFT1BOT1RTVVBQKTsNCgkJYnJlYWs7DQoN
 CgljYXNlIERWQUNUX0RFQUNUSVZBVEU6DQoJCWlmIChodWIgPT0gTlVMTCkg
 LyogbWFsZnVuY3Rpb25pbmcgaHViICovDQoJCQlicmVhazsNCgkJbnBvcnRz
 ID0gaHViLT5odWJkZXNjLmJOYnJQb3J0czsNCgkJZm9yKHBvcnQgPSAwOyBw
 b3J0IDwgbnBvcnRzOyBwb3J0KyspIHsNCgkJCWRldiA9IGh1Yi0+cG9ydHNb
 cG9ydF0uZGV2aWNlOw0KCQkJaWYgKGRldiAhPSBOVUxMKSB7DQoJCQkJZm9y
 IChpID0gMDsgZGV2LT5zdWJkZXZzW2ldOyBpKyspDQoJCQkJCWNvbmZpZ19k
 ZWFjdGl2YXRlKGRldi0+c3ViZGV2c1tpXSk7DQoJCQl9DQoJCX0NCgkJYnJl
 YWs7DQoJfQ0KCXJldHVybiAoMCk7DQp9DQojZW5kaWYNCg0KLyoNCiAqIENh
 bGxlZCBmcm9tIHByb2Nlc3MgY29udGV4dCB3aGVuIHRoZSBodWIgaXMgZ29u
 ZS4NCiAqIERldGFjaCBhbGwgZGV2aWNlcyBvbiBhY3RpdmUgcG9ydHMuDQog
 Ki8NClVTQl9ERVRBQ0godWh1YikNCnsNCglVU0JfREVUQUNIX1NUQVJUKHVo
 dWIsIHNjKTsNCglzdHJ1Y3QgdXNiZF9odWIgKmh1YiA9IHNjLT5zY19odWIt
 Pmh1YjsNCglzdHJ1Y3QgdXNiZF9wb3J0ICpydXA7DQoJaW50IHBvcnQsIG5w
 b3J0czsNCg0KI2lmIGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChf
 X09wZW5CU0RfXykNCglEUFJJTlRGKCgidWh1Yl9kZXRhY2g6IHNjPSVwIGZs
 YWdzPSVkXG4iLCBzYywgZmxhZ3MpKTsNCiNlbGlmIGRlZmluZWQoX19GcmVl
 QlNEX18pDQoJRFBSSU5URigoInVodWJfZGV0YWNoOiBzYz0lcG9ydFxuIiwg
 c2MpKTsNCiNlbmRpZg0KDQoJaWYgKGh1YiA9PSBOVUxMKQkJLyogTXVzdCBi
 ZSBwYXJ0aWFsbHkgd29ya2luZyAqLw0KCQlyZXR1cm4gKDApOw0KDQoJdXNi
 ZF9hYm9ydF9waXBlKHNjLT5zY19pcGlwZSk7DQoJdXNiZF9jbG9zZV9waXBl
 KHNjLT5zY19pcGlwZSk7DQoNCglucG9ydHMgPSBodWItPmh1YmRlc2MuYk5i
 clBvcnRzOw0KCWZvcihwb3J0ID0gMDsgcG9ydCA8IG5wb3J0czsgcG9ydCsr
 KSB7DQoJCXJ1cCA9ICZodWItPnBvcnRzW3BvcnRdOw0KCQlpZiAocnVwLT5k
 ZXZpY2UpDQoJCQl1c2JfZGlzY29ubmVjdF9wb3J0KHJ1cCwgc2VsZik7DQoJ
 fQ0KCQ0KDQoJZnJlZShodWIsIE1fVVNCREVWKTsNCglzYy0+c2NfaHViLT5o
 dWIgPSBOVUxMOw0KDQoJcmV0dXJuICgwKTsNCn0NCg0KI2lmIGRlZmluZWQo
 X19GcmVlQlNEX18pDQovKiBDYWxsZWQgd2hlbiBhIGRldmljZSBoYXMgYmVl
 biBkZXRhY2hlZCBmcm9tIGl0ICovDQpTdGF0aWMgdm9pZA0KdWh1Yl9jaGls
 ZF9kZXRhY2hlZChzZWxmLCBjaGlsZCkNCiAgICAgICBkZXZpY2VfdCBzZWxm
 Ow0KICAgICAgIGRldmljZV90IGNoaWxkOw0Kew0KICAgICAgIHN0cnVjdCB1
 aHViX3NvZnRjICpzYyA9IGRldmljZV9nZXRfc29mdGMoc2VsZik7DQogICAg
 ICAgdXNiZF9kZXZpY2VfaGFuZGxlIGRldmh1YiA9IHNjLT5zY19odWI7DQog
 ICAgICAgdXNiZF9kZXZpY2VfaGFuZGxlIGRldjsNCiAgICAgICBpbnQgbnBv
 cnRzOw0KICAgICAgIGludCBwb3J0Ow0KICAgICAgIGludCBpOw0KDQogICAg
 ICAgaWYgKCFkZXZodWItPmh1YikgIA0KICAgICAgICAgICAgICAgLyogc2hv
 dWxkIG5ldmVyIGhhcHBlbjsgY2hpbGRyZW4gYXJlIG9ubHkgY3JlYXRlZCBh
 ZnRlciBpbml0ICovDQogICAgICAgICAgICAgICBwYW5pYygiaHViIG5vdCBm
 dWxseSBpbml0aWFsaXNlZCwgYnV0IGNoaWxkIGRlbGV0ZWQ/Iik7DQoNCiAg
 ICAgICBucG9ydHMgPSBkZXZodWItPmh1Yi0+aHViZGVzYy5iTmJyUG9ydHM7
 DQogICAgICAgZm9yIChwb3J0ID0gMDsgcG9ydCA8IG5wb3J0czsgcG9ydCsr
 KSB7DQogICAgICAgICAgICAgICBkZXYgPSBkZXZodWItPmh1Yi0+cG9ydHNb
 cG9ydF0uZGV2aWNlOw0KICAgICAgICAgICAgICAgaWYgKGRldiAmJiBkZXYt
 PnN1YmRldnMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0g
 MDsgZGV2LT5zdWJkZXZzW2ldOyBpKyspIHsNCiAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICBpZiAoZGV2LT5zdWJkZXZzW2ldID09IGNoaWxkKSB7
 DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYt
 PnN1YmRldnNbaV0gPSBOVUxMOw0KICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
 ICAgICAgICAgfQ0KICAgICAgIH0NCn0NCiNlbmRpZg0KDQoNCi8qDQogKiBI
 dWIgaW50ZXJydXB0Lg0KICogVGhpcyBhbiBpbmRpY2F0aW9uIHRoYXQgc29t
 ZSBwb3J0IGhhcyBjaGFuZ2VkIHN0YXR1cy4NCiAqIE5vdGlmeSB0aGUgYnVz
 IGV2ZW50IGhhbmRsZXIgdGhyZWFkIHRoYXQgd2UgbmVlZA0KICogdG8gYmUg
 ZXhwbG9yZWQgYWdhaW4uDQogKi8NCnZvaWQNCnVodWJfaW50cih4ZmVyLCBh
 ZGRyLCBzdGF0dXMpDQoJdXNiZF94ZmVyX2hhbmRsZSB4ZmVyOw0KCXVzYmRf
 cHJpdmF0ZV9oYW5kbGUgYWRkcjsNCgl1c2JkX3N0YXR1cyBzdGF0dXM7DQp7
 DQoJc3RydWN0IHVodWJfc29mdGMgKnNjID0gYWRkcjsNCg0KCURQUklOVEZO
 KDUsKCJ1aHViX2ludHI6IHNjPSVwXG4iLCBzYykpOw0KCWlmIChzdGF0dXMg
 IT0gVVNCRF9OT1JNQUxfQ09NUExFVElPTikNCgkJdXNiZF9jbGVhcl9lbmRw
 b2ludF9zdGFsbF9hc3luYyhzYy0+c2NfaXBpcGUpOw0KDQoJdXNiX25lZWRz
 X2V4cGxvcmUoc2MtPnNjX2h1Yi0+YnVzKTsNCn0NCg0KI2lmIGRlZmluZWQo
 X19GcmVlQlNEX18pDQpEUklWRVJfTU9EVUxFKHVodWIsIHVzYiwgdWh1YnJv
 b3RfZHJpdmVyLCB1aHVicm9vdF9kZXZjbGFzcywgMCwgMCk7DQpEUklWRVJf
 TU9EVUxFKHVodWIsIHVodWIsIHVodWJfZHJpdmVyLCB1aHViX2RldmNsYXNz
 LCB1c2JkX2RyaXZlcl9sb2FkLCAwKTsNCiNlbmRpZg0K
 --0-895156531-966876436=:2385--
 

From: Joakim Henriksson <murduth@ludd.luth.se>
To: rendhalver@users.sourceforge.net
Cc: mailto: ;
Subject: Re: kern/20734: USB mouse detaches and never reataches 
Date: Thu, 29 Nov 2001 17:23:32 +0100

 > i get the same problems with my mouse disapearing
 > it happens about every hour or two
 > the only way i have found to fix it is to reboot my system
 > 
 > the patch submitted wont work for my version of src/sys/dev/usb/uhub.c
 > 
 > can someone remake the patch for 4.4 release ??
 
 My problem was a very broken cable. I cut of half a meter of it and resoldered 
 it inside the mouse. Not a problem since...
 -- 
 regards/ Joakim
 
 
State-Changed-From-To: open->closed 
State-Changed-By: n_hibma 
State-Changed-When: Thu Nov 29 08:49:23 PST 2001 
State-Changed-Why:  
Hardware fault it seems. Thanks for confirming. 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=20734 

From: Peter Brown <rendhalver@users.sourceforge.net>
To: freebsd-gnats-submit@FreeBSD.org, murduth@ludd.luth.se
Cc:  
Subject: Re: kern/20734: USB mouse detaches and never reataches
Date: Sat, 1 Dec 2001 13:10:29 +1000

 hi all
 i just bought my mouse about 2 months ago so i'm not going th cut it up just yet
 
 its not a hardware fault in my case
 
 if i unplug the mouse and plug it back in it works for a while again
 
 why does the mouse detach in the first place ??
 
 i would like a patch for 4.4 
 
 thanks
 

From: Nick Hibma <n_hibma@webweaving.org>
To: freebsd-gnats-submit@FreeBSD.org, murduth@ludd.luth.se
Cc:  
Subject: Re: kern/20734: USB mouse detaches and never reataches
Date: Sat, 01 Dec 2001 11:28:57 +0000

 The reason for disconnection is probably that the mouse is cheap and
 electrically unstable, producing a disconnect once in a while.
 
 Or the firmware is shoddy and freezes up once in a while.
 
 Lots of reasons. But it is definitely not the USB stack's fault as the
 stack only disconnects the mouse in the case where it disconnects itself
 electrically from the hub.

From: Peter Brown <rendhalver@users.sourceforge.net>
To: freebsd-gnats-submit@FreeBSD.org
Cc:  
Subject: Re: kern/20734: USB mouse detaches and never reataches
Date: Sun, 2 Dec 2001 11:19:33 +1000

 > The reason for disconnection is probably that the mouse is cheap and
 >  electrically unstable, producing a disconnect once in a while.
 
 i wish people wouldnt insult hardware they have never met
  
 i bought this mouse in particular because it was actually on the list
 of usb mice that FreeBSD supports
 
 > Or the firmware is shoddy and freezes up once in a while.
 
 well my mother board is one of the early usb ones
  
 > Lots of reasons. But it is definitely not the USB stack's fault as the
 > stack only disconnects the mouse in the case where it disconnects itself
 > electrically from the hub.
 
 so why does it not reconnect in these instances ????
 that other infamous OS does
 
>Unformatted:
