Re: USB regression on Overdrive 1000

From: John F Carr <jfc_at_mit.edu>
Date: Wed, 16 Mar 2022 15:43:10 UTC
> On Mar 16, 2022, at 10:51 , Hans Petter Selasky <hps@selasky.org> wrote:
> 
> On 3/16/22 14:46, John F Carr wrote:
>> I updated my kernel from 13.0-STABLE from early December to 13.1-STABLE from yesterday and I am having USB problems on my Overdrive 1000 ARM box.  I see some usb_msc_auto_quirk messages I haven't seen before and there is a long delay "Root mount waiting for: usbus0".  It does boot eventually off of the internal drive, ada0, but it continues to spew USB errors to the console.  It doesn't register a "CAMuhub0" device and it never finds the USB stick plugged into the external port which should appear as da0.  Any ideas?
>> dmesg output attached, "good" comes from "boot kernel.old".  The if_msk error is probably caused by a mismatch between old kernel and new root filesystem.
>> CPU  3: ARM Cortex-A57 r1p2 affinity:  1  1
>> Release APs...done
>> usbus0: 5.0Gbps Super Speed USB v3.0
>> Trying to mount root from zfs:zroot/ROOT/default []...
>> ugen0.1: <(0x1b73) XHCI root HUB> at usbus0
>> uhub0 on usbus0
>> uhub0: <(0x1b73) XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
>> ada0 at ahcich1 bus 0 scbus1 target 0 lun 0
>> ada0: <Patriot P200 1TB S0424A0> ACS-2 ATA SATA 3.x device
>> ...
>> Root mount waiting for: usbus0
>> usb_msc_auto_quirk: UQ_MSC_NO_GETMAXLUN set for USB mass storage device Generic Mass Storage Device (0x14cd:0x125d)
>> usb_msc_auto_quirk: UQ_MSC_NO_TEST_UNIT_READY set for USB mass storage device Generic Mass Storage Device (0x14cd:0x125d)
>> usb_msc_auto_quirk: UQ_MSC_NO_PREVENT_ALLOW set for USB mass storage device Generic Mass Storage Device (0x14cd:0x125d)
>> usb_msc_auto_quirk: UQ_MSC_NO_SYNC_CACHE set for USB mass storage device Generic Mass Storage Device (0x14cd:0x125d)
>> Root mount waiting for: usbus0
>> xhci0: Resetting controller
>> Root mount waiting for: usbus0
>> usbd_req_re_enumerate: addr=1, set address failed! (USB_ERR_TIMEOUT, ignored)
>> Root mount waiting for: usbus0
>> ...
>> xhci0: Resetting controller
> 
> Hi,
> 
> Can you cherry pick this commit:
> 
> https://cgit.freebsd.org/src/commit/?id=33cbbf268f7d0f3daff0c2aa06836d932faf56a9
> 
> to your 13-stable and enable it in the loader either manually or in /boot/loader.conf:
> 
> set hw.usb.xhci.dcepquirk=1
> 
> hw.usb.xhci.dcepquirk=1
> 
> --HPS

That fixed it.  I attached a diff to recognize the USB controller in my system.