usb/83863: Communication problem between opensc/openct via USB
with e-gate smart-card.
Mohacsi Janos
mohacsi at niif.hu
Thu Aug 4 14:40:17 GMT 2005
The following reply was made to PR usb/83863; it has been noted by GNATS.
From: Mohacsi Janos <mohacsi at niif.hu>
To: Hans Petter Selasky <hselasky at c2i.net>
Cc: bug-followup at freebsd.org, janos.mohacsi at bsd.hu
Subject: Re: usb/83863: Communication problem between opensc/openct via USB
with e-gate smart-card.
Date: Thu, 4 Aug 2005 16:39:39 +0200 (CEST)
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
--0-318097300-1123166379=:86134
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
Hi Hans,
Here it is: - (Sorry, it is large... - should I omit
bug-followup next time?)
1. debug output of ifdhandler
Aug 4 15:47:23 scone ifdhandler[808]: ifd_open: trying to open egate@/dev/ugen0
Aug 4 15:47:23 scone ifdhandler[808]: eg_open: device=/dev/ugen0
Aug 4 15:47:23 scone ifdhandler[808]: ifd_sysdep_device_type: BSD: ifd_sysdep_device_type(/dev/ugen0)
Aug 4 15:47:23 scone ifdhandler[808]: ifd_sysdep_device_type: BSD: returning IFD_DEVICE_TYPE_USB
Aug 4 15:47:23 scone ifdhandler[808]: eg_activate: called.
Aug 4 15:47:23 scone ifdhandler[808]: eg_card_status: slot=0
Aug 4 15:47:23 scone ifdhandler[808]: ifdhandler_poll_presence: card status change: 0 -> 1
Aug 4 15:47:24 scone ifdhandler[808]: eg_card_status: slot=0
Aug 4 15:47:55 scone last message repeated 31 times
Aug 4 15:48:10 scone last message repeated 15 times
Aug 4 15:48:10 scone ifdhandler[808]: ifdhandler_process: ifdhandler_process(cmd=CT_CMD_RESET, unit=0)
Aug 4 15:48:10 scone ifdhandler[808]: eg_card_reset: called.
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: usb req type=x40 req=x90 val=x0000 ind=x0000 len=0
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: ifd_sysdep_usb_control(0x90)
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL bmRequestType 0x40 bRequest 0x90 wValue 0x0 wIndex 0x0 wLength 0x0
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: ctrl.ucr_data == NULL
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: ifd_sysdep_usb_control(0xa0)
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL bmRequestType 0xc0 bRequest 0xa0 wValue 0x0 wIndex 0x0 wLength 0x1
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL SEND data 80
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL RECV data 00
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: usb req type=xc0 req=xa0 val=x0000 ind=x0000 len=1
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: recv 00
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: ifd_sysdep_usb_control(0x83)
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL bmRequestType 0xc0 bRequest 0x83 wValue 0x0 wIndex 0x0 wLength 0x23
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL SEND data 05 00 00 00 05 00 00 00 00 01 07 28 00 00 00 01 64 ca 56 0d 66 84 07 28 00 01 07 28 a0 ab bf bf 05 00 00
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL RECV data 3b 95 18 40 ff 62 01 02 01 04
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: usb req type=xc0 req=x83 val=x0000 ind=x0000 len=10
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: recv 3b 95 18 40 ff 62 01 02 01 04
Aug 4 15:48:10 scone ifdhandler[808]: ifd_protocol_select: atr= 3b 95 18 40 ff 62 01 02 01 04
Aug 4 15:48:10 scone ifdhandler[808]: ifd_protocol_select: default T=0, supported protocols=0x1
Aug 4 15:48:10 scone ifdhandler[808]: eg_set_protocol: proto=0
Aug 4 15:48:10 scone ifdhandler[808]: ifdhandler_process: ifdhandler_process(cmd=CT_CMD_LOCK, unit=0)
Aug 4 15:48:10 scone ifdhandler[808]: ifdhandler_lock: granted excl lock 0 for slot 0 by uid=4294967294
Aug 4 15:48:10 scone ifdhandler[808]: ifdhandler_process: ifdhandler_process(cmd=CT_CMD_TRANSACT, unit=0)
Aug 4 15:48:10 scone ifdhandler[808]: ifd_protocol_transceive: cmd: c0 a4 00 00 02 3f 00
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: ifd_sysdep_usb_control(0xa0)
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL bmRequestType 0xc0 bRequest 0xa0 wValue 0x0 wIndex 0x0 wLength 0x1
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL SEND data 28
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL RECV data 00
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: usb req type=xc0 req=xa0 val=x0000 ind=x0000 len=1
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: recv 00
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: usb req type=x40 req=x80 val=x0000 ind=x0000 len=5
Aug 4 15:48:10 scone ifdhandler[808]: ifd_usb_control: send c0 a4 00 00 02
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: ifd_sysdep_usb_control(0x80)
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL bmRequestType 0x40 bRequest 0x80 wValue 0x0 wIndex 0x0 wLength 0x5
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: BSD: CTRL SEND data c0 a4 00 00 02
Aug 4 15:48:10 scone ifdhandler[808]: ifd_sysdep_usb_control: USB_DO_REQUEST failed: -1
Aug 4 15:48:10 scone ifdhandler[808]: ifd_protocol_transceive: transceive error: Communication error
Aug 4 15:48:10 scone ifdhandler[808]: ifdhandler_unlock_all: released excl lock 0 for slot 0 by uid=4294967294
Aug 4 15:48:11 scone ifdhandler[808]: eg_card_status: slot=0
2. The trimmed down uhci debug output
Aug 4 15:48:10 scone kernel: uhci_device_ctrl_start: type=0x40, request=0x90, wValue=0x0000, wIndex=0x0000 len=0, addr=126, endpt=0
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: addr=126 endpt=0 len=8 speed=1
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: nexttog=1; data before transfer:
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb1e0) at 1f06f1e4 = link=0x1f06f204 status=0x1c8003ff token=0x00e07e2d buffer=0x1f06f1d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f204<VF> 1c8003ff<ACTIVE,LS>,errcnt=3,actlen=0 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb200) at 1f06f204 = link=0x00000001 status=0x3d8003ff token=0xffe87e69 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d8003ff<ACTIVE,IOC,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: _uhci_append_qh: 0xc1bdb260 to 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: xfer=0xc1bdb000 pipe=0xc1ca3004 transfer done
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb1e0) at 1f06f1e4 = link=0x1f06f204 status=0x1c000007 token=0x00e07e2d buffer=0x1f06f1d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f204<VF> 1c000007<LS>,errcnt=3,actlen=8 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb200) at 1f06f204 = link=0x00000001 status=0x3d0007ff token=0xffe87e69 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d0007ff<IOC,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: actlen=8
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bdb000, pipe=0xc1ca3004 length=8 error=0
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1bdb260 from 0xc1bdb260
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bdb000, pipe=0xc1ca3004 length=8 error=5
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1bdb260 from 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_device_ctrl_start: type=0xc0, request=0xa0, wValue=0x0000, wIndex=0x0000 len=1, addr=126, endpt=0
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: addr=126 endpt=0 len=9 speed=1
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: nexttog=1; data before transfer:
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1c809e0) at 003749e4 = link=0x00374a04 status=0x1c8003ff token=0x00e07e2d buffer=0x003749d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 374a04<VF> 1c8003ff<ACTIVE,LS>,errcnt=3,actlen=0 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1c80a00) at 00374a04 = link=0x00374a24 status=0x3c8003ff token=0x00087e69 buffer=0x003749dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 374a24<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=1
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1c80a20) at 00374a24 = link=0x00000001 status=0x3d8003ff token=0xffe87ee1 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d8003ff<ACTIVE,IOC,LS,SPD>,errcnt=3,actlen=0 pid=e1,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: _uhci_append_qh: 0xc1c80a60 to 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: xfer=0xc1c80800 pipe=0xc1ca3004 transfer done
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1c809e0) at 003749e4 = link=0x00374a04 status=0x1c000007 token=0x00e07e2d buffer=0x003749d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 374a04<VF> 1c000007<LS>,errcnt=3,actlen=8 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1c80a00) at 00374a04 = link=0x00374a24 status=0x3c000000 token=0x00087e69 buffer=0x003749dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 374a24<VF> 3c000000<LS,SPD>,errcnt=3,actlen=1 pid=69,addr=126,endpt=0,D=1,maxlen=1
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1c80a20) at 00374a24 = link=0x00000001 status=0x3d0007ff token=0xffe87ee1 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d0007ff<IOC,LS,SPD>,errcnt=3,actlen=0 pid=e1,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: actlen=9
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1c80800, pipe=0xc1ca3004 length=9 error=0
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1c80a60 from 0xc1c80a60
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1c80800, pipe=0xc1ca3004 length=9 error=5
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1c80a60 from 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_device_ctrl_start: type=0xc0, request=0x83, wValue=0x0000, wIndex=0x0000 len=35, addr=126, endpt=0
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: addr=126 endpt=0 len=43 speed=1
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: nexttog=1; data before transfer:
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb200) at 1f06f204 = link=0x1f06f224 status=0x1c8003ff token=0x00e07e2d buffer=0x1f06f1d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f224<VF> 1c8003ff<ACTIVE,LS>,errcnt=3,actlen=0 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb220) at 1f06f224 = link=0x1f06f244 status=0x3c8003ff token=0x00e87e69 buffer=0x1f06f1dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f244<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb240) at 1f06f244 = link=0x1f06f264 status=0x3c8003ff token=0x00e07e69 buffer=0x1f06f1e4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f264<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb260) at 1f06f264 = link=0x1f06f284 status=0x3c8003ff token=0x00e87e69 buffer=0x1f06f1ec
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f284<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb280) at 1f06f284 = link=0x1f06f2a4 status=0x3c8003ff token=0x00e07e69 buffer=0x1f06f1f4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f2a4<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb2a0) at 1f06f2a4 = link=0x1f06f2c4 status=0x3c8003ff token=0x00487e69 buffer=0x1f06f1fc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f2c4<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=3
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb2c0) at 1f06f2c4 = link=0x00000001 status=0x3d8003ff token=0xffe87ee1 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d8003ff<ACTIVE,IOC,LS,SPD>,errcnt=3,actlen=0 pid=e1,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: _uhci_append_qh: 0xc1bdb300 to 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_check_transfer: xfer=0xc1bdb000 active
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: xfer=0xc1bdb000 pipe=0xc1ca3004 transfer done
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb200) at 1f06f204 = link=0x1f06f224 status=0x1c000007 token=0x00e07e2d buffer=0x1f06f1d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f224<VF> 1c000007<LS>,errcnt=3,actlen=8 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb220) at 1f06f224 = link=0x1f06f244 status=0x3c000007 token=0x00e87e69 buffer=0x1f06f1dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f244<VF> 3c000007<LS,SPD>,errcnt=3,actlen=8 pid=69,addr=126,endpt=0,D=1,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb240) at 1f06f244 = link=0x1f06f264 status=0x3c000001 token=0x00e07e69 buffer=0x1f06f1e4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f264<VF> 3c000001<LS,SPD>,errcnt=3,actlen=2 pid=69,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb260) at 1f06f264 = link=0x1f06f284 status=0x3c8003ff token=0x00e87e69 buffer=0x1f06f1ec
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f284<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb280) at 1f06f284 = link=0x1f06f2a4 status=0x3c8003ff token=0x00e07e69 buffer=0x1f06f1f4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f2a4<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb2a0) at 1f06f2a4 = link=0x1f06f2c4 status=0x3c8003ff token=0x00487e69 buffer=0x1f06f1fc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1f06f2c4<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=3
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bdb2c0) at 1f06f2c4 = link=0x00000001 status=0x3d8003ff token=0xffe87ee1 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d8003ff<ACTIVE,IOC,LS,SPD>,errcnt=3,actlen=0 pid=e1,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: actlen=18
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bdb000, pipe=0xc1ca3004 length=18 error=0
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1bdb300 from 0xc1bdb300
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bdb000, pipe=0xc1ca3004 length=18 error=5
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1bdb300 from 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_root_intr_start: xfer=0xc1be6c00 len=32
Aug 4 15:48:10 scone kernel: uhci_root_intr_start: xfer=0xc1beac00 len=32
Aug 4 15:48:10 scone kernel: uhci_root_intr_start: xfer=0xc1c7e800 len=32
Aug 4 15:48:10 scone kernel: uhci_device_ctrl_start: type=0xc0, request=0xa0, wValue=0x0000, wIndex=0x0000 len=1, addr=126, endpt=0
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: addr=126 endpt=0 len=9 speed=1
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: nexttog=1; data before transfer:
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bea9e0) at 0033e9e4 = link=0x0033ea04 status=0x1c8003ff token=0x00e07e2d buffer=0x0033e9d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 33ea04<VF> 1c8003ff<ACTIVE,LS>,errcnt=3,actlen=0 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1beaa00) at 0033ea04 = link=0x0033ea24 status=0x3c8003ff token=0x00087e69 buffer=0x0033e9dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 33ea24<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=1
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1beaa20) at 0033ea24 = link=0x00000001 status=0x3d8003ff token=0xffe87ee1 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d8003ff<ACTIVE,IOC,LS,SPD>,errcnt=3,actlen=0 pid=e1,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: _uhci_append_qh: 0xc1beaa60 to 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: xfer=0xc1bea800 pipe=0xc1ca3004 transfer done
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bea9e0) at 0033e9e4 = link=0x0033ea04 status=0x1c000007 token=0x00e07e2d buffer=0x0033e9d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 33ea04<VF> 1c000007<LS>,errcnt=3,actlen=8 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1beaa00) at 0033ea04 = link=0x0033ea24 status=0x3c000000 token=0x00087e69 buffer=0x0033e9dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 33ea24<VF> 3c000000<LS,SPD>,errcnt=3,actlen=1 pid=69,addr=126,endpt=0,D=1,maxlen=1
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1beaa20) at 0033ea24 = link=0x00000001 status=0x3d0007ff token=0xffe87ee1 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d0007ff<IOC,LS,SPD>,errcnt=3,actlen=0 pid=e1,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: actlen=9
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bea800, pipe=0xc1ca3004 length=9 error=0
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1beaa60 from 0xc1beaa60
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bea800, pipe=0xc1ca3004 length=9 error=5
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1beaa60 from 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_device_ctrl_start: type=0x40, request=0x80, wValue=0x0000, wIndex=0x0000 len=5, addr=126, endpt=0
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: addr=126 endpt=0 len=13 speed=1
Aug 4 15:48:10 scone kernel: uhci_setup_standard_chain: nexttog=1; data before transfer:
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bb31f0) at 002071f4 = link=0x00207214 status=0x1c8003ff token=0x00e07e2d buffer=0x002071d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 207214<VF> 1c8003ff<ACTIVE,LS>,errcnt=3,actlen=0 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bb3210) at 00207214 = link=0x00207234 status=0x3c8003ff token=0x00887ee1 buffer=0x002071dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 207234<VF> 3c8003ff<ACTIVE,LS,SPD>,errcnt=3,actlen=0 pid=e1,addr=126,endpt=0,D=1,maxlen=5
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bb3230) at 00207234 = link=0x00000001 status=0x3d8003ff token=0xffe87e69 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d8003ff<ACTIVE,IOC,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: _uhci_append_qh: 0xc1bb3270 to 0xdd6c5000
Aug 4 15:48:10 scone kernel: uhci_check_transfer: xfer=0xc1bb3000 active
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: xfer=0xc1bb3000 pipe=0xc1ca3004 transfer done
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bb31f0) at 002071f4 = link=0x00207214 status=0x1c000007 token=0x00e07e2d buffer=0x002071d4
Aug 4 15:48:10 scone kernel: uhci_dump_td: 207214<VF> 1c000007<LS>,errcnt=3,actlen=8 pid=2d,addr=126,endpt=0,D=0,maxlen=8
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bb3210) at 00207214 = link=0x00207234 status=0x3c400004 token=0x00887ee1 buffer=0x002071dc
Aug 4 15:48:10 scone kernel: uhci_dump_td: 207234<VF> 3c400004<STALLED,LS,SPD>,errcnt=3,actlen=5 pid=e1,addr=126,endpt=0,D=1,maxlen=5
Aug 4 15:48:10 scone kernel: uhci_dump_td: TD(0xc1bb3230) at 00207234 = link=0x00000001 status=0x3d8003ff token=0xffe87e69 buffer=0x00000000
Aug 4 15:48:10 scone kernel: uhci_dump_td: 1<T> 3d8003ff<ACTIVE,IOC,LS,SPD>,errcnt=3,actlen=0 pid=69,addr=126,endpt=0,D=1,maxlen=0
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: actlen=13
Aug 4 15:48:10 scone kernel: uhci_non_isoc_done: error, addr=126, endpt=0x00, status 400000<STALLED>
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bb3000, pipe=0xc1ca3004 length=13 error=22
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1bb3270 from 0xc1bb3270
Aug 4 15:48:10 scone kernel: uhci_device_done: xfer=0xc1bb3000, pipe=0xc1ca3004 length=13 error=5
Aug 4 15:48:10 scone kernel: _uhci_remove_qh: 0xc1bb3270 from 0xdd6c5000
Aug 4 15:48:10 scone ifdhandler[808]: usb_do_request failed: Input/output error (5)
Aug 4 15:48:11 scone kernel: uhci_root_intr_start: xfer=0xc1be6c00 len=32
3. the usb handler routine is attached sys-bsd.c. You will find the
usb_do_request ioctl in the function ifd_sysdep_usb_control() - I am not
sure usb device handled properly there - timeout? USBD_SHORT_XFER_OK
option?
4. The relevant part of the egate driver also included. For some reason
it does not like the EGATE_CMD_SEND_APDU (0x80):
ifd_usb_control() actually after some debug printing and setting timeout
to 10000 if <0, invokes ifd_sysdep_usb_control()
I can include that one if you want
Janos Mohacsi
Network Engineer, Research Associate
NIIF/HUNGARNET, HUNGARY
Key 00F9AF98: 8645 1312 D249 471B DBAE 21A2 9F52 0D1F 00F9 AF98
On Thu, 4 Aug 2005, Hans Petter Selasky wrote:
> On Thursday 04 August 2005 03:40, Janos Mohacsi wrote:
>> I tried new usb subsystem with similar results:
>> Aug 4 02:58:14 scone kernel: usbd_transfer_done: xfer=0xc1b7ec00
>> pipe=0xc1b7e004 status=22 actlen=13
>
> status=22 means that the transfer stalled.
>
>> Aug 4 02:58:14 scone ifdhandler[677]: usb_do_request failed:
>> Input/output error (5)
>>
>> Next?
>
> Control endpoints shouldn't stall.
>
> Maybe you could turn on some more debugging:
>
> sysctl hw.usb.uhci.debug=15
>
> This will show which of the transfers in the control transfer, that stalled.
>
> Could you have posted the code from "ifdhandler" where "usb_do_request" is
> called from?
>
> --HPS
>
--0-318097300-1123166379=:86134
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=egate_driver.c_snippet
Content-Transfer-Encoding: BASE64
Content-ID: <20050804163939.Q86134 at mignon.ki.iif.hu>
Content-Description:
Content-Disposition: attachment; filename=egate_driver.c_snippet
LyoNCiAqIFNlbmQvcmVjZWl2ZSByb3V0aW5lcw0KICovDQpzdGF0aWMgaW50
DQplZ190cmFuc3BhcmVudChpZmRfcmVhZGVyX3QgKnJlYWRlciwgaW50IGRh
ZCwgY29uc3Qgdm9pZCAqaW5idWZmZXIsIHNpemVfdCBpbmxlbiwNCiAgICAg
ICAgICAgICAgdm9pZCAqb3V0YnVmZmVyLCBzaXplX3Qgb3V0bGVuKQ0Kew0K
ICAgICBpbnQgcmM7DQogICAgIHVuc2lnbmVkIGNoYXIgc3RhdDsNCiAgICAg
aWZkX2lzb19hcGR1X3QgaXNvOw0KICAgICB1bnNpZ25lZCBjaGFyIGNtZGJ1
Zls1XTsNCg0KICAgICBzdGF0PWVnX3N0YXR1cyhyZWFkZXIpOw0KICAgICBp
ZiAoc3RhdCAhPSBFR0FURV9TVEFUVVNfUkVBRFkpIHsNCglpZmRfZGVidWco
MiwgImRldmljZSBub3QgcmVhZHksIGF0dGVtcHRpbmcgcmVzZXQiKTsNCgly
YyA9IGlmZF91c2JfY29udHJvbChyZWFkZXItPmRldmljZSwgRUdBVEVfRElS
X09VVCwgRUdBVEVfQ01EX1JFU0VULA0KCQkJICAgICAwLCAwLCBOVUxMLCAw
LCBFR19USU1FT1VUKTsNCglpZiAocmMgPCAwKQ0KCQlyZXR1cm4gSUZEX0VS
Uk9SX0NPTU1fRVJST1I7DQogICAgIH0NCiAgICAgaWYgKGlmZF9pc29fYXBk
dV9wYXJzZShpbmJ1ZmZlciwgaW5sZW4sICZpc28pIDwgMCkgDQogICAgICAg
ICByZXR1cm4gSUZEX0VSUk9SX0lOVkFMSURfQVJHOw0KICAgICBpZiAoaW5s
ZW4gPj0gNSAmJiBpbmxlbiA8IDUgKyBpc28ubGMpDQoJIHJldHVybiBJRkRf
RVJST1JfQlVGRkVSX1RPT19TTUFMTDsNCiAgICAgaWYgKG91dGxlbiA8IDIg
KyBpc28ubGUpDQoJIHJldHVybiBJRkRfRVJST1JfQlVGRkVSX1RPT19TTUFM
TDsNCiAgICAgbWVtc2V0KGNtZGJ1ZiwwLDUpOw0KICAgICBtZW1tb3ZlKGNt
ZGJ1ZiwgaW5idWZmZXIsIGlubGVuIDwgNSA/IGlubGVuIDogNSk7DQogICAg
IHJjPWlmZF91c2JfY29udHJvbChyZWFkZXItPmRldmljZSwgRUdBVEVfRElS
X09VVCwgRUdBVEVfQ01EX1NFTkRfQVBEVSwNCgkJICAgICAgICAwLCAwLCAo
dm9pZCAqKSBjbWRidWYsIDUsIC0xKTsNCiAgICAgaWYgKHJjICE9IDUpDQog
ICAgICAgICAgcmV0dXJuIElGRF9FUlJPUl9DT01NX0VSUk9SOw0KICAgICBz
dGF0PWVnX3N0YXR1cyhyZWFkZXIpOw0KICAgICBpZiAoaW5sZW4gPiA1ICYm
IHN0YXQgPT0gRUdBVEVfU1RBVFVTX0RBVEEpIHsNCiAgICAgICAgICByYz1p
ZmRfdXNiX2NvbnRyb2wocmVhZGVyLT5kZXZpY2UsIEVHQVRFX0RJUl9PVVQs
IEVHQVRFX0NNRF9XUklURSwNCgkJCSAgMCwgMCwgKHZvaWQgKikgKCgodW5z
aWduZWQgY2hhciAqKWluYnVmZmVyKSs1KSwgaXNvLmxjLCAtMSk7DQoJICBp
ZiAocmMgPCAwKQ0KCSAgICAgICByZXR1cm4gSUZEX0VSUk9SX0NPTU1fRVJS
T1I7DQogICAgICAgICAgaWYgKHJjICE9IGlzby5sYykgew0KCSAgICAgICBp
ZmRfZGVidWcoMSwgInNob3J0IFVTQiB3cml0ZSAoJXUgb2YgJXUgYnl0ZXMp
IiwgcmMsIGlzby5sYyk7DQogICAgICAgICAgICAgICByZXR1cm4gSUZEX0VS
Uk9SX0NPTU1fRVJST1I7DQoJICB9DQogICAgICAgICAgaWZkX2RlYnVnKDMs
ICJzZW50ICVkIGJ5dGVzIG9mIGRhdGEiLCBpc28ubGMpOw0KICAgICAgICAg
IHN0YXQ9ZWdfc3RhdHVzKHJlYWRlcik7DQogICAgIH0NCiAgICAgaWYgKHN0
YXQgPT0gRUdBVEVfU1RBVFVTX0RBVEEpIHsNCiAgICAgICAgICByYz1pZmRf
dXNiX2NvbnRyb2wocmVhZGVyLT5kZXZpY2UsIEVHQVRFX0RJUl9JTiwgRUdB
VEVfQ01EX1JFQUQsIDAsIDAsDQogICAgICAgICAgICAgICAgICAgICAgICAg
KHZvaWQgKikgb3V0YnVmZmVyLCBpc28ubGUsIEVHX1RJTUVPVVQpOw0KCSAg
aWYgKHJjIDwgMCkNCgkgICAgICAgcmV0dXJuIElGRF9FUlJPUl9DT01NX0VS
Uk9SOw0KICAgICAgICAgIGlmIChyYyAhPSBpc28ubGUpIHsNCgkgICAgICAg
aWZkX2RlYnVnKDEsICJzaG9ydCBVU0IgcmVhZCAoJXUgb2YgJXUgYnl0ZXMp
IiwgcmMsIGlzby5sZSk7DQogICAgICAgICAgICAgICByZXR1cm4gSUZEX0VS
Uk9SX0NPTU1fRVJST1I7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmZF9k
ZWJ1ZygzLCAicmVjZWl2ZWQgJWQgYnl0ZXMgb2YgZGF0YSIsIGlzby5sZSk7
DQogICAgICAgICAgc3RhdD1lZ19zdGF0dXMocmVhZGVyKTsNCiAgICAgfSBl
bHNlDQogICAgICAgaXNvLmxlPTA7DQogICAgIGlmIChzdGF0ICE9IEVHQVRF
X1NUQVRVU19TVykNCiAgICAgICAgICByZXR1cm4gSUZEX0VSUk9SX0RFVklD
RV9ESVNDT05ORUNURUQ7DQogICAgIHJjPWlmZF91c2JfY29udHJvbChyZWFk
ZXItPmRldmljZSwgRUdBVEVfRElSX0lOLCBFR0FURV9DTURfUkVBRCwgMCwg
MCwNCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgKCgodW5zaWduZWQg
Y2hhciAqKW91dGJ1ZmZlcikraXNvLmxlKSwgMiwgRUdfVElNRU9VVCk7DQog
ICAgIGlmIChyYyAhPSAyKQ0KICAgICAgICAgIHJldHVybiBJRkRfRVJST1Jf
Q09NTV9FUlJPUjsNCiAgICAgaWZkX2RlYnVnKDIsICJyZXR1cm5pbmcgYSAl
ZCBieXRlIHJlc3BvbnNlIiwgaXNvLmxlICsgMik7DQogICAgIHJldHVybiBp
c28ubGUrMjsNCn0NCg==
--0-318097300-1123166379=:86134
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=sys-bsd.c
Content-Transfer-Encoding: BASE64
Content-ID: <20050804163939.Y86134 at mignon.ki.iif.hu>
Content-Description:
Content-Disposition: attachment; filename=sys-bsd.c
LyoNCiAqICpCU0Qgc3BlY2lmaWMgZnVuY3Rpb25zDQogKg0KICogQ29weXJp
Z2h0IChDKSAyMDAzIE9sYWYgS2lyY2ggPG9raXJAc3VzZS5kZT4NCiAqIENv
cHlyaWdodCAoQykgMjAwMyBBbmRyZWFzIEplbGxpbmdoYXVzIDxhakBkdW5n
ZW9uLmlua2EuZGU+DQogKiBDb3B5cmlnaHQgKEMpIDIwMDMgTWFya3VzIEZy
aWVkbCA8bWFya3VzQG9wZW5ic2Qub3JnPg0KICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMDUgV2lsbGlhbSBXYW5kZXJzIDx3aWxsaWFtQHdhbmRlcnMub3Jn
Pg0KICoNCiAqIFRoZXNlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIHJlLWltcGxl
bWVudGVkIGZvciBldmVyeQ0KICogbmV3IHBsYXRmb3JtLg0KICovDQoNCiNp
bmNsdWRlICJpbnRlcm5hbC5oIg0KI2lmIGRlZmluZWQoX19OZXRCU0RfXykg
fHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0Rf
XykNCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCiNpbmNsdWRlIDxkZXYvdXNi
L3VzYi5oPg0KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQojaW5jbHVkZSA8c3lz
L2lvY3RsLmg+DQojaW5jbHVkZSA8c3lzL3BvbGwuaD4NCiNpbmNsdWRlIDxz
dHJpbmcuaD4NCiNpbmNsdWRlIDxzdGRpby5oPg0KI2luY2x1ZGUgPHNpZ25h
bC5oPg0KI2luY2x1ZGUgPGZjbnRsLmg+DQojaW5jbHVkZSA8dW5pc3RkLmg+
DQojaW5jbHVkZSA8ZXJybm8uaD4NCiNpbmNsdWRlIDxvcGVuY3QvZHJpdmVy
Lmg+DQoNCiNpbmNsdWRlICJ1c2ItZGVzY3JpcHRvcnMuaCINCg0KaW50DQpp
ZmRfc3lzZGVwX2RldmljZV90eXBlKGNvbnN0IGNoYXIgKm5hbWUpDQp7DQoJ
c3RydWN0IHN0YXQgc3RiOw0KDQoJaWZkX2RlYnVnKDEsICJCU0Q6IGlmZF9z
eXNkZXBfZGV2aWNlX3R5cGUoJXMpIiwgbmFtZSk7DQoJaWYgKCFuYW1lIHx8
IG5hbWVbMF0gIT0gJy8nKQ0KCQlyZXR1cm4gLTE7DQoNCglpZiAoIXN0cm5j
bXAobmFtZSwgIi9kZXYvdWdlbiIsIDkpKSB7DQoJCWlmZF9kZWJ1ZygxLCAi
QlNEOiByZXR1cm5pbmcgSUZEX0RFVklDRV9UWVBFX1VTQiIpOw0KCQlpZiAo
c3RhdChuYW1lLCAmc3RiKSA8IDApDQoJCQlyZXR1cm4gLTE7DQoJCXJldHVy
biBJRkRfREVWSUNFX1RZUEVfVVNCOw0KCX0NCg0KCXJldHVybiAtMTsNCn0N
Cg0KLyoNCiAqIFBvbGwgZm9yIHByZXNlbmNlIG9mIFVTQiBkZXZpY2UNCiAq
Lw0KaW50DQppZmRfc3lzZGVwX3VzYl9wb2xsX3ByZXNlbmNlKGlmZF9kZXZp
Y2VfdCAqZGV2LCBzdHJ1Y3QgcG9sbGZkICpwZmQpDQp7DQoJaWYgKHBmZC0+
cmV2ZW50cyAmIFBPTExIVVApDQoJCXJldHVybiAwOw0KCXBmZC0+ZmQgPSBk
ZXYtPmZkOw0KCXBmZC0+ZXZlbnRzID0gUE9MTEhVUDsNCglyZXR1cm4gMTsN
Cn0NCg0KdHlwZWRlZiBzdHJ1Y3QgZXAgew0KICAgIGludCBlcF9mZDsNCn0g
ZXBfdDsNCg0KdHlwZWRlZiBlcF90IGludGVyZmFjZV90WzEyOF07DQoNCnN0
YXRpYyBpbnRlcmZhY2VfdCBpbnRlcmZhY2VzWzFdOw0KDQojZGVmaW5lIFVT
Ql9SRVFVRVNUX1NJWkUJOA0KDQovKg0KICogT3BlbiBpbnRlcmZhY2UgZW5k
cG9pbnQNCiAqLw0KaW50DQpvcGVuX2VwKGNoYXIgKm5hbWUsIGludCBpbnRl
cmZhY2UsIGludCBlbmRwb2ludCwgaW50IGZsYWdzKQ0Kew0KICAgIGNoYXIg
ZmlsZW5hbWVbMjU2XTsNCg0KICAgIGlmKGludGVyZmFjZXNbaW50ZXJmYWNl
XVtlbmRwb2ludF0uZXBfZmQpIHsNCglpZmRfZGVidWcoNiwgIm9wZW5fZXA6
IGVuZHBvaW50IGFscmVhZHkgb3BlbmVkIik7DQoJcmV0dXJuIDA7DQogICAg
fQ0KDQogICAgc3ByaW50ZigoY2hhciAqKSZmaWxlbmFtZSwiJXMuJWQiLCBu
YW1lLCBlbmRwb2ludCk7DQoJDQogICAgaWYoKGludGVyZmFjZXNbaW50ZXJm
YWNlXVtlbmRwb2ludF0uZXBfZmQ9b3BlbigNCglmaWxlbmFtZSwgZmxhZ3Mp
KSA8IDApIHsNCglpZmRfZGVidWcoNiwgIm9wZW5fZXA6IGVycm9yIG9wZW5p
bmcgXCIlc1wiOiAlcyIsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOw0K
ICAgICAgICBpbnRlcmZhY2VzW2ludGVyZmFjZV1bZW5kcG9pbnRdLmVwX2Zk
PTA7DQoJcmV0dXJuIC0xOw0KICAgIH0NCiAgICByZXR1cm4gMDsNCn0NCg0K
Y2xvc2VfZXAoaW50IGludGVyZmFjZSwgaW50IGVuZHBvaW50KQ0Kew0KICAg
IGlmKGludGVyZmFjZXNbaW50ZXJmYWNlXVtlbmRwb2ludF0uZXBfZmQpIHsN
CiAgICAgICAgY2xvc2UoaW50ZXJmYWNlc1tpbnRlcmZhY2VdW2VuZHBvaW50
XS5lcF9mZCk7DQogICAgICAgIGludGVyZmFjZXNbaW50ZXJmYWNlXVtlbmRw
b2ludF0uZXBfZmQ9MDsNCiAgICB9DQp9DQoNCmludA0KaWZkX3N5c2RlcF91
c2JfYnVsayhpZmRfZGV2aWNlX3QgKmRldiwgaW50IGVwLCB2b2lkICpidWZm
ZXIsIHNpemVfdCBsZW4sIGxvbmcgdGltZW91dCkNCnsNCiAgICBpbnQJYnl0
ZXNfdG9fcHJvY2VzczsNCiAgICBpbnQJYnl0ZXNfcHJvY2Vzc2VkOw0KICAg
IGludCBkaXJlY3Rpb24gPSAoZXAgJiBJRkRfVVNCX0VORFBPSU5UX0RJUl9N
QVNLKSA9PSBJRkRfVVNCX0VORFBPSU5UX0lOID8gMSA6IDA7DQogICAgaW50
IGVuZHBvaW50ID0gKGVwICYgfklGRF9VU0JfRU5EUE9JTlRfRElSX01BU0sp
Ow0KDQogICAgY3RfZGVidWcoImlmZF9zeXNkZXBfdXNiX2J1bGs6IGVuZHBv
aW50PSVkIGRpcmVjdGlvbj0lZCIsIGVuZHBvaW50LCBkaXJlY3Rpb24pOw0K
ICAgIGlmKG9wZW5fZXAoZGV2LT5uYW1lLDAsZW5kcG9pbnQsT19SRFdSfE9f
Tk9OQkxPQ0spKSB7DQoJY3RfZGVidWcoImlmZF9zeXNkZXBfdXNiX2J1bGs6
IG9wZW5pbmcgZW5kcG9pbnQgZmFpbGVkIik7DQoJcmV0dXJuIC0xOw0KICAg
IH0NCiAgICBpZihkaXJlY3Rpb24pIHsNCglpZigoYnl0ZXNfdG9fcHJvY2Vz
cz1yZWFkKGludGVyZmFjZXNbMF1bZW5kcG9pbnRdLmVwX2ZkLGJ1ZmZlcixs
ZW4pKTwwKSB7DQoJICAgIGlmZF9kZWJ1Zyg2LCAiaWZkX3N5c2RlcF91c2Jf
YnVsazogcmVhZCBmYWlsZWQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsNCgkg
ICAgY3RfZXJyb3IoInVzYl9idWxrIHJlYWQgZmFpbGVkOiAlcyIsIHN0cmVy
cm9yKGVycm5vKSk7DQoJICAgIHJldHVybiBJRkRfRVJST1JfQ09NTV9FUlJP
UjsNCgl9DQoJY3RfZGVidWcoImlmZF9zeXNkZXBfdXNiX2J1bGs6IHJlYWQg
JWQgYnl0ZXMiLCBieXRlc190b19wcm9jZXNzKTsNCglyZXR1cm4gYnl0ZXNf
dG9fcHJvY2VzczsNCiAgICB9IGVsc2Ugew0KCWJ5dGVzX3RvX3Byb2Nlc3M9
bGVuOw0KCWlmKChieXRlc19wcm9jZXNzZWQ9d3JpdGUoaW50ZXJmYWNlc1sw
XVtlbmRwb2ludF0uZXBfZmQsYnVmZmVyLGJ5dGVzX3RvX3Byb2Nlc3MpKSE9
Ynl0ZXNfdG9fcHJvY2Vzcykgew0KCSAgICBpZmRfZGVidWcoNiwgImlmZF9z
eXNkZXBfdXNiX2J1bGs6IHdyaXRlIGZhaWxlZDogJXMiLCBzdHJlcnJvcihl
cnJubykpOw0KCSAgICBjdF9lcnJvcigidXNiX2J1bGsgd3JpdGUgZmFpbGVk
OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7DQoJICAgIHJldHVybiBJRkRfRVJS
T1JfQ09NTV9FUlJPUjsNCgl9DQoJY3RfZGVidWcoImlmZF9zeXNkZXBfdXNi
X2J1bGs6IHdyb3RlIGJ1ZmZlclslZF09JXMiLCBieXRlc19wcm9jZXNzZWQs
IGN0X2hleGR1bXAoYnVmZmVyLGxlbikpOw0KCXJldHVybiBieXRlc19wcm9j
ZXNzZWQ7DQogICAgfQ0KfQ0KDQovKg0KICogVVNCIFVSQiBjYXB0dXJlDQog
Ki8NCnN0cnVjdCBpZmRfdXNiX2NhcHR1cmUgew0KICAgIGludAkJCXR5cGU7
DQogICAgaW50CQkJZW5kcG9pbnQ7DQogICAgc2l6ZV90CQltYXhwYWNrZXQ7
DQogICAgdW5zaWduZWQgaW50CWludGVyZmFjZTsNCn07DQoNCmludA0KaWZk
X3N5c2RlcF91c2JfYmVnaW5fY2FwdHVyZShpZmRfZGV2aWNlX3QgKmRldiwN
CglpbnQgdHlwZSwgaW50IGVwLCBzaXplX3QgbWF4cGFja2V0LA0KCWlmZF91
c2JfY2FwdHVyZV90ICoqY2FwcmV0KQ0Kew0KICAgIGlmZF91c2JfY2FwdHVy
ZV90CSpjYXA7DQogICAgaW50CQkJIGRpcmVjdGlvbiA9IChlcCAmIElGRF9V
U0JfRU5EUE9JTlRfRElSX01BU0spID09IElGRF9VU0JfRU5EUE9JTlRfSU4g
PyAxIDogMDsNCiAgICBpbnQJCQkgZW5kcG9pbnQgPSAoZXAgJiB+SUZEX1VT
Ql9FTkRQT0lOVF9ESVJfTUFTSyk7DQoNCiAgICBpZighKGNhcCA9IChpZmRf
dXNiX2NhcHR1cmVfdCAqKSBjYWxsb2MoMSwgc2l6ZW9mKCpjYXApICsgbWF4
cGFja2V0KSkpIHsNCgljdF9kZWJ1ZygiaWZkX3N5c2RlcF91c2JfYmVnaW5f
Y2FwdHVyZTogY2FsbG9jIGZhaWxlZCIpOw0KCXJldHVybiAtMTsNCiAgICB9
DQogICAgY2FwLT50eXBlID0gdHlwZTsNCiAgICBjYXAtPmVuZHBvaW50ID0g
ZXA7DQogICAgY2FwLT5tYXhwYWNrZXQgPSBtYXhwYWNrZXQ7DQoNCiAgICBp
ZighaW50ZXJmYWNlc1swXVtlbmRwb2ludF0uZXBfZmQpIHsNCglpZihvcGVu
X2VwKGRldi0+bmFtZSwwLGVuZHBvaW50LE9fUkRPTkxZfE9fTk9OQkxPQ0sp
KSB7DQoJICAgIGN0X2RlYnVnKCJpZmRfc3lzZGVwX3VzYl9iZWdpbl9jYXB0
dXJlOiBvcGVuaW5nIGVuZHBvaW50IGZhaWxlZCIpOw0KCSAgICByZXR1cm4g
LTE7DQoJfQ0KICAgIH0NCiAgICAqY2FwcmV0ID0gY2FwOw0KICAgIHJldHVy
biAwOw0KfQ0KDQppbnQNCmlmZF9zeXNkZXBfdXNiX2NhcHR1cmUoaWZkX2Rl
dmljZV90ICpkZXYsDQoJaWZkX3VzYl9jYXB0dXJlX3QgKmNhcCwNCgl2b2lk
ICpidWZmZXIsIHNpemVfdCBsZW4sDQoJbG9uZyB0aW1lb3V0KQ0Kew0KICAg
IHN0cnVjdCB0aW1ldmFsCWJlZ2luOw0KICAgIGludAkJCWJ5dGVzX3RvX3By
b2Nlc3M9MDsNCiAgICBpbnQJCQlkaXJlY3Rpb24gPSAoY2FwLT5lbmRwb2lu
dCAmIElGRF9VU0JfRU5EUE9JTlRfRElSX01BU0spID09IElGRF9VU0JfRU5E
UE9JTlRfSU4gPyAxIDogMDsNCiAgICBpbnQJCQllbmRwb2ludCA9IChjYXAt
PmVuZHBvaW50ICYgfklGRF9VU0JfRU5EUE9JTlRfRElSX01BU0spOw0KDQog
ICAgZ2V0dGltZW9mZGF5KCZiZWdpbixOVUxMKTsNCiAgICBkbyB7DQoJc3Ry
dWN0IHBvbGxmZAlwZmQ7DQoJbG9uZwkJd2FpdDsNCg0KCWlmICgod2FpdCA9
ICh0aW1lb3V0IC0gaWZkX3RpbWVfZWxhcHNlZCgmYmVnaW4pKSkgPD0gMCkN
CgkgICAgcmV0dXJuIElGRF9FUlJPUl9USU1FT1VUOw0KDQoJcGZkLmZkID0g
aW50ZXJmYWNlc1swXVtlbmRwb2ludF0uZXBfZmQ7DQoJcGZkLmV2ZW50cyA9
IFBPTExJTjsNCglpZihwb2xsKCZwZmQsMSx3YWl0KSE9MSkNCgkgICAgY29u
dGludWU7DQoNCglpZigoYnl0ZXNfdG9fcHJvY2Vzcz1yZWFkKGludGVyZmFj
ZXNbMF1bZW5kcG9pbnRdLmVwX2ZkLGJ1ZmZlcixsZW4pKTwwKSB7DQoJICAg
IGlmZF9kZWJ1Zyg2LCAiaWZkX3N5c2RlcF91c2JfYnVsazogcmVhZCBmYWls
ZWQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsNCgkgICAgY3RfZXJyb3IoInVz
Yl9idWxrIHJlYWQgZmFpbGVkOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7DQoJ
ICAgIHJldHVybiBJRkRfRVJST1JfQ09NTV9FUlJPUjsNCgl9DQogICAgfSB3
aGlsZSAoIWJ5dGVzX3RvX3Byb2Nlc3MpOw0KICAgIGN0X2RlYnVnKCJpZmRf
c3lzZGVwX3VzYl9jYXB0dXJlOiByZWFkIGJ1ZmZlclslZF09JXMiLCBieXRl
c190b19wcm9jZXNzLCBjdF9oZXhkdW1wKGJ1ZmZlcixieXRlc190b19wcm9j
ZXNzKSk7DQogICAgcmV0dXJuIGJ5dGVzX3RvX3Byb2Nlc3M7DQp9DQoNCmlu
dA0KaWZkX3N5c2RlcF91c2JfZW5kX2NhcHR1cmUoaWZkX2RldmljZV90ICpk
ZXYsIGlmZF91c2JfY2FwdHVyZV90ICpjYXApDQp7DQogICAgaW50CWRpcmVj
dGlvbiA9IChjYXAtPmVuZHBvaW50ICYgSUZEX1VTQl9FTkRQT0lOVF9ESVJf
TUFTSykgPT0gSUZEX1VTQl9FTkRQT0lOVF9JTiA/IDEgOiAwOw0KICAgIGlu
dAllbmRwb2ludCA9IChjYXAtPmVuZHBvaW50ICYgfklGRF9VU0JfRU5EUE9J
TlRfRElSX01BU0spOw0KICAgIGNsb3NlX2VwKDAsZW5kcG9pbnQpOw0KICAg
IGlmKGNhcCkgZnJlZShjYXApOw0KICAgIHJldHVybiAwOw0KfQ0KDQovKg0K
ICogVVNCIGNvbnRyb2wgY29tbWFuZA0KICovDQppbnQNCmlmZF9zeXNkZXBf
dXNiX2NvbnRyb2woaWZkX2RldmljZV90ICpkZXYsDQoJCXVuc2lnbmVkIGlu
dCByZXF1ZXN0dHlwZSwNCgkJdW5zaWduZWQgaW50IHJlcXVlc3QsDQoJCXVu
c2lnbmVkIGludCB2YWx1ZSwNCgkJdW5zaWduZWQgaW50IGluZGV4LA0KCQl2
b2lkICpkYXRhLCBzaXplX3QgbGVuLCBsb25nIHRpbWVvdXQpDQp7DQoJc3Ry
dWN0IHVzYl9jdGxfcmVxdWVzdCBjdHJsOw0KCWludAkJcmMsdmFsOw0KDQoJ
aWZkX2RlYnVnKDEsICJCU0Q6IGlmZF9zeXNkZXBfdXNiX2NvbnRyb2woMHgl
eCkiLCByZXF1ZXN0KTsNCgltZW1zZXQoJmN0cmwsIDAsIHNpemVvZihjdHJs
KSk7DQoJDQoJY3RybC51Y3JfcmVxdWVzdC5ibVJlcXVlc3RUeXBlID0gcmVx
dWVzdHR5cGU7DQoJY3RybC51Y3JfcmVxdWVzdC5iUmVxdWVzdCA9IHJlcXVl
c3Q7DQoJVVNFVFcoY3RybC51Y3JfcmVxdWVzdC53VmFsdWUsIHZhbHVlKTsN
CglVU0VUVyhjdHJsLnVjcl9yZXF1ZXN0LndJbmRleCwgaW5kZXgpOw0KCVVT
RVRXKGN0cmwudWNyX3JlcXVlc3Qud0xlbmd0aCwgbGVuKTsNCg0KCWN0cmwu
dWNyX2RhdGEgPSBkYXRhOw0KCWN0cmwudWNyX2ZsYWdzID0gVVNCRF9TSE9S
VF9YRkVSX09LOw0KDQoJaWZkX2RlYnVnKDEsICJCU0Q6IENUUkwgYm1SZXF1
ZXN0VHlwZSAweCV4IGJSZXF1ZXN0IDB4JXggIg0KCQkgICAgICJ3VmFsdWUg
MHgleCB3SW5kZXggMHgleCB3TGVuZ3RoIDB4JXgiLA0KCQkgICAgIHJlcXVl
c3R0eXBlLCByZXF1ZXN0LCB2YWx1ZSwgaW5kZXgsIGxlbik7DQoJaWYobGVu
KQ0KCQlpZmRfZGVidWcoNSwgIkJTRDogQ1RSTCBTRU5EIGRhdGEgJXMiLCBj
dF9oZXhkdW1wKGRhdGEsbGVuKSk7DQoNCgl2YWwgPSB0aW1lb3V0Ow0KCWlm
ICgocmMgPSBpb2N0bChkZXYtPmZkLCBVU0JfU0VUX1RJTUVPVVQsICZ2YWwp
KSA8IDApIHsNCgkJaWZkX2RlYnVnKDEsIlVTQl9TRVRfVElNRU9VVCBmYWls
ZWQ6ICVkIiwgcmMpOw0KCQljdF9lcnJvcigidXNiX3NldF90aW1lb3V0IGZh
aWxlZDogJXMoJWQpIiwNCgkJCQlzdHJlcnJvcihlcnJubyksIGVycm5vKTsN
CiAgICAgICAgCXJldHVybiBJRkRfRVJST1JfQ09NTV9FUlJPUjsNCgl9DQog
DQoJaWYgKChyYyA9IGlvY3RsKGRldi0+ZmQsIFVTQl9ET19SRVFVRVNULCAm
Y3RybCkpIDwgMCkgew0KCQlpZmRfZGVidWcoMSwgIlVTQl9ET19SRVFVRVNU
IGZhaWxlZDogJWQiLCByYyk7DQoJCWN0X2Vycm9yKCJ1c2JfZG9fcmVxdWVz
dCBmYWlsZWQ6ICVzICglZCkiLA0KCQkJCXN0cmVycm9yKGVycm5vKSwgZXJy
bm8pOw0KCQlyZXR1cm4gSUZEX0VSUk9SX0NPTU1fRVJST1I7DQogICAgICAg
IH0NCg0KCWlmKGN0cmwudWNyX2RhdGE9PU5VTEwpDQoJCWlmZF9kZWJ1Zygx
LCAiQlNEOiBjdHJsLnVjcl9kYXRhID09IE5VTEwgIik7DQoJaWYoY3RybC51
Y3JfZGF0YSAmJiBjdHJsLnVjcl9hY3RsZW4pDQoJCWlmZF9kZWJ1ZygxLCAi
QlNEOiBDVFJMIFJFQ1YgZGF0YSAlcyIsDQoJCQljdF9oZXhkdW1wKGN0cmwu
dWNyX2RhdGEsY3RybC51Y3JfYWN0bGVuKSk7DQoJcmV0dXJuIGN0cmwudWNy
X2FjdGxlbjsNCn0NCg0KaW50DQppZmRfc3lzZGVwX3VzYl9zZXRfY29uZmln
dXJhdGlvbihpZmRfZGV2aWNlX3QgKmRldiwgaW50IGNvbmZpZykgDQp7DQog
ICAgaW50IHZhbHVlLCByYzsNCiAgICB2YWx1ZSA9IGNvbmZpZzsNCiAgICBp
ZiAoKHJjID0gaW9jdGwoZGV2LT5mZCwgVVNCX1NFVF9DT05GSUcsICZ2YWx1
ZSkpIDwgMCkgew0KCWlmZF9kZWJ1ZygxLCJVU0JfU0VUX0NPTkZJRyBmYWls
ZWQ6ICVkIiwgcmMpOw0KCWN0X2Vycm9yKCJ1c2Jfc2V0X2NvbmZpZ3VyYXRp
b24gZmFpbGVkOiAlcyglZCkiLA0KCQkJc3RyZXJyb3IoZXJybm8pLCBlcnJu
byk7DQogICAgICAgCXJldHVybiBJRkRfRVJST1JfQ09NTV9FUlJPUjsNCiAg
ICB9DQogICAgcmV0dXJuIDA7DQp9DQoNCg0KaW50DQppZmRfc3lzZGVwX3Vz
Yl9zZXRfaW50ZXJmYWNlKGlmZF9kZXZpY2VfdCAqZGV2LCBpbnQgaWZjLCBp
bnQgYWx0KSANCnsNCiAgICBpbnQgcmM7DQogICAgc3RydWN0IHVzYl9hbHRf
aW50ZXJmYWNlIHsNCglpbnQgdWFpX2NvbmZpZ19pbmRleDsNCglpbnQgdWFp
X2ludGVyZmFjZV9pbmRleDsNCglpbnQgdWFpX2FsdF9ubzsNCiAgICB9IHZh
bHVlOw0KDQogICAgdmFsdWUudWFpX2NvbmZpZ19pbmRleD1pZmM7DQogICAg
dmFsdWUudWFpX2ludGVyZmFjZV9pbmRleD0wOw0KICAgIHZhbHVlLnVhaV9h
bHRfbm89YWx0Ow0KICAgIGlmICgocmMgPSBpb2N0bChkZXYtPmZkLCBVU0Jf
U0VUX0FMVElOVEVSRkFDRSwgJnZhbHVlKSkgPCAwKSB7DQoJaWZkX2RlYnVn
KDEsIlVTQl9TRVRfQUxUSU5URVJGQUNFIGZhaWxlZDogJWQiLCByYyk7DQoJ
Y3RfZXJyb3IoInVzYl9zZXRfaW50ZXJmYWNlIGZhaWxlZDogJXMoJWQpIiwN
CgkJCXN0cmVycm9yKGVycm5vKSwgZXJybm8pOw0KICAgICAgIAlyZXR1cm4g
SUZEX0VSUk9SX0NPTU1fRVJST1I7DQogICAgfQ0KICAgIHJldHVybiAwOw0K
fQ0KDQppbnQNCmlmZF9zeXNkZXBfdXNiX2NsYWltX2ludGVyZmFjZShpZmRf
ZGV2aWNlX3QgKmRldiwgaW50IGludGVyZmFjZSkgDQp7DQogICAgY3RfZGVi
dWcoImlmZF9zeXNkZXBfdXNiX2NsYWltX2ludGVyZmFjZTogaW50ZXJmYWNl
PSVkIChub3QgeWV0IGltcGxlbWVudGVkKSIsIGludGVyZmFjZSk7DQogICAg
cmV0dXJuIDA7DQp9DQoNCmludA0KaWZkX3N5c2RlcF91c2JfcmVsZWFzZV9p
bnRlcmZhY2UoaWZkX2RldmljZV90ICpkZXYsIGludCBpbnRlcmZhY2UpIA0K
ew0KICAgIGN0X2RlYnVnKCJpZmRfc3lzZGVwX3VzYl9yZWxlYXNlX2ludGVy
ZmFjZTogaW50ZXJmYWNlPSVkIChub3QgeWV0IGltcGxlbWVudGVkKSIsIGlu
dGVyZmFjZSk7DQogICAgcmV0dXJuIDA7DQp9DQoNCmludA0KaWZkX3N5c2Rl
cF91c2Jfb3BlbihjaGFyICpkZXZpY2UsIGludCBmbGFncykNCnsNCiAgICBy
ZXR1cm4gb3BlbihkZXZpY2UsIE9fRVhDTCB8IE9fUkRXUik7DQp9DQoNCi8q
DQogKiBTY2FuIGFsbCB1c2IgZGV2aWNlcyB0byBzZWUgaWYgdGhlcmUgaXMg
b25lIHdlIHN1cHBvcnQNCiAqLw0KaW50DQppZmRfc2Nhbl91c2Iodm9pZCkN
CnsNCiAgICBpbnQgaSwgY29udHJvbGxlcl9mZDsNCiAgICBjaGFyIGNvbnRy
b2xsZXJfZGV2bmFtZVsxMF07DQoNCiAgICBpZmRfZGVidWcoMSwgIkJTRDog
aWZkX3NjYW5fdXNiIik7DQogICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKysp
IHsNCglzbnByaW50Zihjb250cm9sbGVyX2Rldm5hbWUsIDEwLCAiL2Rldi91
c2IlZCIsIGkpOw0KCWlmKChjb250cm9sbGVyX2ZkID0gb3Blbihjb250cm9s
bGVyX2Rldm5hbWUsIE9fUkRPTkxZKSk8MCkNCgkgICAgY29udGludWU7DQoN
CglpZiAoY29udHJvbGxlcl9mZCA+PSAwKSB7DQoJICAgIGludCBhZGRyZXNz
Ow0KCSAgICBmb3IgKGFkZHJlc3MgPSAxOyBhZGRyZXNzIDwgVVNCX01BWF9E
RVZJQ0VTOyBhZGRyZXNzKyspIHsNCgkJc3RydWN0IHVzYl9kZXZpY2VfaW5m
bwkgZGV2aWNlX2luZm87DQoJCWlmZF9kZXZpZF90CQkgaWQ7DQoJCWNvbnN0
IGNoYXIJCSpkcml2ZXI7DQoJCWNoYXIJCQlkZXZpY2VbMjU2XTsNCg0KCQlk
ZXZpY2VfaW5mby51ZGlfYWRkciA9IGFkZHJlc3M7DQoNCgkJaWYoaW9jdGwo
Y29udHJvbGxlcl9mZCwgVVNCX0RFVklDRUlORk8sICZkZXZpY2VfaW5mbykp
IHsNCgkJICAgIGlmIChlcnJubyAhPSBFTlhJTykNCgkJCWZwcmludGYoc3Rk
ZXJyLCAiYWRkciAlZDogSS9PIGVycm9yXG4iLCBhZGRyZXNzKTsNCgkJICAg
IGNvbnRpbnVlOw0KCQl9DQoNCgkJaWYoc3RybmNtcChkZXZpY2VfaW5mby51
ZGlfZGV2bmFtZXNbMF0sInVnZW4iLDQpIT0wKQ0KCQkgICAgY29udGludWU7
DQoNCgkJaWQudHlwZSA9IElGRF9ERVZJQ0VfVFlQRV9VU0I7DQoJCWlkLm51
bSAgPSAyOw0KDQoJCWlkLnZhbFswXSA9IGRldmljZV9pbmZvLnVkaV92ZW5k
b3JObzsNCgkJaWQudmFsWzFdID0gZGV2aWNlX2luZm8udWRpX3Byb2R1Y3RO
bzsNCg0KCQlpZmRfZGVidWcoMSwgIkJTRDogaWZkX3NjYW5fdXNiOiAiDQoJ
CQkgICAgICJpZmRfZHJpdmVyX2Zvciglc1sweCUwNHhdLiVzWzB4JTA0eCki
LA0KCQkJICAgICBkZXZpY2VfaW5mby51ZGlfdmVuZG9yLA0KCQkJICAgICBk
ZXZpY2VfaW5mby51ZGlfdmVuZG9yTm8sDQoJCQkgICAgIGRldmljZV9pbmZv
LnVkaV9wcm9kdWN0LA0KCQkJICAgICBkZXZpY2VfaW5mby51ZGlfcHJvZHVj
dE5vKTsNCg0KCQlpZiAoIShkcml2ZXIgPSBpZmRfZHJpdmVyX2Zvcl9pZCgm
aWQpKSkNCgkJICAgIGNvbnRpbnVlOw0KDQoJCXNucHJpbnRmKGRldmljZSwg
c2l6ZW9mKGRldmljZSksDQoJCQkiL2Rldi8lcyIsIGRldmljZV9pbmZvLnVk
aV9kZXZuYW1lc1swXSk7DQoNCgkJaWZkX3NwYXduX2hhbmRsZXIoZHJpdmVy
LCBkZXZpY2UsIC0xKTsNCgkgICAgfQ0KCSAgICBjbG9zZShjb250cm9sbGVy
X2ZkKTsNCgl9IGVsc2Ugew0KCSAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8
IGVycm5vID09IEVOWElPKQ0KCQljb250aW51ZTsNCgkgICAgLyogYSBtb3Jl
IHN1aXRhYmxlIGVycm9yIHJlY292ZXJ5IHNob3VsZCBiZSBkb25lIGhlcmUg
Ki8NCgl9DQogICAgfQ0KICAgIHJldHVybiAwOw0KfQ0KI2VuZGlmIC8qIF9f
TmV0L0ZyZWUvT3BlbkJTRF9fICovDQo=
--0-318097300-1123166379=:86134--
More information about the freebsd-usb
mailing list