Date: Mon, 8 Jun 2020 17:07:56 -0700 From: Mark Millard <marklmi@yahoo.com> To: bob prohaska <fbsd@www.zefox.net> Cc: freebsd-arm@freebsd.org Subject: Re: Confusing USB device conflict Message-ID: <ED19C188-5363-4420-BC0A-B893D327A20B@yahoo.com> In-Reply-To: <20200608230350.GA44587@www.zefox.net> References: <20200606223853.GA37281@www.zefox.net> <DC8818E7-270E-4A3B-882F-8A60A763760A@yahoo.com> <20200608230350.GA44587@www.zefox.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2020-Jun-8, at 16:03, bob prohaska <fbsd at www.zefox.net> wrote: > On Sat, Jun 06, 2020 at 06:22:03PM -0700, Mark Millard wrote: >>=20 >>=20 >>=20 >> Does this happen with FreeBSD head? It looked like there >> was a late 2019 check-in that was related to a context >> that involved the above types of messages on a RPi*. If >> you are lucky, may be there is something someone could >> MFC back into 12 that would help. (I do not know the >> details or if what I saw really would help if head >> works okay.) >>=20 > [In sum, the new hub can't be hot-swapped. I thought that would > be possible, but if not there's nothing wrong] Interesting. As I have my root file system for booting on the powered hub, I do not ever hot-swap the powered hub. So I'd never have noticed such behavior. I can probably get access to another one at some point, of the same type as is used at boot, and plug it in to a separate port while the RPi3 is in operation. > Now using a Pi3: >=20 > Head as of r361820 behaves differently than the Pi2 running 12.1,=20 > but it does not seem better: Plugging the new hub and disk into=20 > a running machine produces: >=20 > ugen0.6: <GenesysLogic USB2.0 Hub> at usbus0 > uhub2 on uhub1 > uhub2: <GenesysLogic USB2.0 Hub, class 9/0, rev 2.00/92.24, addr 6> on = usbus0 > uhub2: MTT enabled > uhub2: 4 ports with 4 removable, self powered > usb_alloc_device: set address 8 failed (USB_ERR_IOERROR, ignored) > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_IOERROR > usbd_req_re_enumerate: addr=3D8, set address failed! (USB_ERR_IOERROR, = ignored) > smsc0: warning: bulk read error, USB_ERR_IOERROR > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_IOERROR > usbd_req_re_enumerate: addr=3D8, set address failed! (USB_ERR_IOERROR, = ignored) > smsc0: warning: Failed to read register 0x114 > smsc0: warning: MII is busy > smsc0: warning: Failed to read register 0x114 > smsc0: warning: MII is busy > smsc0: warning: Failed to read register 0x114 > smsc0: warning: MII is busy > smsc0: warning: Failed to read register 0x114 > smsc0: warning: MII is busy > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_TIMEOUT > smsc0: warning: Failed to read register 0x114 > smsc0: warning: MII is busy >=20 > The smsc0 complaints continued, so I unplugged the hub and disk . > To my surprise the error messages didn't stop, but they did change: >=20 > usb_alloc_device: set address 2 failed (USB_ERR_TIMEOUT, ignored) > usbd_setup_device_desc: getting device descriptor at addr 2 failed, = USB_ERR_TIMEOUT > usbd_req_re_enumerate: addr=3D2, set address failed! (USB_ERR_TIMEOUT, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 2 failed, = USB_ERR_TIMEOUT > usbd_req_re_enumerate: addr=3D2, set address failed! (USB_ERR_TIMEOUT, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 2 failed, = USB_ERR_TIMEOUT > usbd_req_re_enumerate: addr=3D2, set address failed! (USB_ERR_TIMEOUT, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 2 failed, = USB_ERR_TIMEOUT > usbd_req_re_enumerate: addr=3D2, set address failed! (USB_ERR_TIMEOUT, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 2 failed, = USB_ERR_TIMEOUT > ugen0.2: <Unknown > at usbus0 (disconnected) >=20 > This looked like an endless loop, so I rebooted. >=20 > Next, I tried the new 1TB disk with the old hub. worked fine. >=20 > Then I tried the new hub with the old 80GB disk. The console reported: > uhub2: <GenesysLogic USB2.0 Hub, class 9/0, rev 2.00/92.24, addr 7> on = usbus0 > uhub2: MTT enabled > uhub2: 4 ports with 4 removable, self powered > usb_alloc_device: set address 8 failed (USB_ERR_IOERROR, ignored) > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_IOERROR > usbd_req_re_enumerate: addr=3D8, set address failed! (USB_ERR_STALLED, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_STALLED > usbd_req_re_enumerate: addr=3D8, set address failed! (USB_ERR_STALLED, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_STALLED > usbd_req_re_enumerate: addr=3D8, set address failed! (USB_ERR_STALLED, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_STALLED > usbd_req_re_enumerate: addr=3D8, set address failed! (USB_ERR_STALLED, = ignored) > usbd_setup_device_desc: getting device descriptor at addr 8 failed, = USB_ERR_STALLED > ugen0.8: <Unknown > at usbus0 (disconnected) > uhub_reattach_port: could not allocate new device > uhub_explore: illegal enable change, port 1 >=20 > The error stream stopped, the disk didn't show up in /dev. > Usbconfig reports=20 > ugen0.7: <GenesysLogic USB2.0 Hub> at usbus0, cfg=3D0 md=3DHOST = spd=3DHIGH (480Mbps) pwr=3DSAVE (100mA) > Not sure how that gybes with address 8 in the console messages. >=20 > Finally, I tried leaving the new hub connected with the old disk > and rebooting. Came up just fine. Unplugging the old disk and > plugging the new disk in its place also works fine. >=20 > Likewise, with 12.1 the Pi3 works correctly provided the hub > is connected before booting. Didn't try the other permutations. >=20 > So, if hot-swapping the hub isn't in the cards, things seem > to work.=20 >=20 > The messages from smsc0 are still puzzling. I gather > it's a network device, which I don't have. =20 Yes you do: smsc0 is for the built-in Ethernet on the RPi3: # grep -ri smsc /usr/src/sys/conf/ | more /usr/src/sys/conf/NOTES:device smcphy # SMSC LAN91C111 /usr/src/sys/conf/files:dev/mii/smscphy.c optional miibus = | smscphy /usr/src/sys/conf/files:dev/usb/net/if_smsc.c optional smsc /usr/src/sys/conf/files: rue | = smsc | udav | ure | urndis | muge Note that /usr/src/sys/conf/files has: dev/usb/net/usb_ethernet.c optional uether | aue | axe | axge | = cdce | \ cdceem | cue | ipheth | kue | = mos | \ rue | smsc | udav | ure | = urndis | muge # grep -ri smsc /usr/src/sys/*/conf/ | more /usr/src/sys/arm/conf/GENERIC:device smsc = # SMSC LAN91C111 /usr/src/sys/arm/conf/RPI-B:device smscphy /usr/src/sys/arm/conf/RPI-B:device smsc /usr/src/sys/arm/conf/SOCFPGA:device smsc /usr/src/sys/arm/conf/SOCFPGA:device smscphy /usr/src/sys/arm64/conf/NOTES:device smc # SMSC LAN91C111 /usr/src/sys/arm64/conf/NOTES:device smsc /usr/src/sys/arm64/conf/GENERIC:device smc # SMSC = LAN91C111 /usr/src/sys/arm64/conf/GENERIC:device smsc Note that /usr/src/sys/arm64/conf/GENERIC has: # USB ethernet support device muge device smcphy device smsc On a RPi3 (omitted text indicated with ". . ."): # devinfo=20 nexus0 ofwbus0 psci0 simplebus0 . . . bcm283x_dwcotg0 usbus0 uhub0 uhub1 smsc0 miibus0 smscphy0 uhub3 umass0 uhub2 ukbd0 uhid0 ums0 . . . ofw_clkbus0 . . . cryptosoft0 (Context: head -r360311 based.) So the RPi3's Ethernet is connected to the internal uhub1. uhub3 is the external powered hub and is connected to the same RPi3 internal hub. I expect that if you do a "devinfo" you will see a similar arrangement for the smsc0 in your context. =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ED19C188-5363-4420-BC0A-B893D327A20B>