From: Mathias Nyman <mathias.nyman@linux.intel.com>
To: Mark Hills <mark@xwax.org>, linux-usb@vger.kernel.org
Subject: Re: XHCI unplug of USB-C device is not detected
Date: Fri, 5 Nov 2021 22:40:56 +0200 [thread overview]
Message-ID: <2a5d79d8-e12e-4e72-38f7-ab743b3a1efd@linux.intel.com> (raw)
In-Reply-To: <2111051005210.3125@stax.localdomain>
Hi
On 5.11.2021 12.58, Mark Hills wrote:
> My only USB-C device is a Logitech StreamCam, which seems to cause some
> kind of lock on resources when unplugged.
>
> The symptom is it works when first plugged in to a PC. But after
> unplugging it can't be made to work again.
>
> I don't have prior experience of these components. I enabled debug
> messages:
>
> echo -n "module xhci_hcd =p" > /sys/kernel/debug/dynamic_debug/control
>
> Plugging in the webcam produces the dmesg below.
>
> But unplugging simply results in no activity -- zero output in dmesg. Same
> when plugging in again.
>
> After unplugging the device is still listed:
>
> $ lsusb
> Bus 004 Device 002: ID 046d:0893 Logitech StreamCam
> Bus 004 Device 001: ID 1d6b:0003 Linux 5.14.2-mh xhci-hcd xHCI Host Controller
> Bus 003 Device 001: ID 1d6b:0002 Linux 5.14.2-mh xhci-hcd xHCI Host Controller
> Bus 002 Device 001: ID 1d6b:0003 Linux 5.14.2-mh xhci-hcd xHCI Host Controller
> Bus 001 Device 007: ID 046d:c52f Logitech USB Receiver
> Bus 001 Device 006: ID 056a:037b Wacom Co.,Ltd. CTL-672
> Bus 001 Device 005: ID 1a40:0101 USB 2.0 Hub
> Bus 001 Device 004: ID 04d9:0340 USB-HID Keyboard
> Bus 001 Device 003: ID 04d9:0339 USB-HID Keyboard
> Bus 001 Device 002: ID 1a40:0101 USB 2.0 Hub
> Bus 001 Device 001: ID 1d6b:0002 Linux 5.14.2-mh xhci-hcd xHCI Host Controller
how about "lsusb -v"?
It should try to read something from the device.
>
> and the associated uvcvideo module is free and can be removed with rmmod:
>
> $ lsmod | grep uvcvideo
> uvcvideo 110592 0
> videobuf2_vmalloc 20480 1 uvcvideo
> videobuf2_v4l2 28672 1 uvcvideo
> videobuf2_common 45056 4 videobuf2_vmalloc,videobuf2_v4l2,uvcvideo,videobuf2_memops
> videodev 200704 3 videobuf2_v4l2,uvcvideo,videobuf2_common
> mc 53248 5 videodev,snd_usb_audio,videobuf2_v4l2,uvcvideo,videobuf2_common
>
> The USB subsystem isn't entirely locked up. A USB keyboard on a different
> type A port is picked up as expected.
>
> I have access to a Thinkpad X230 laptop (Alpine Linux; kernel
> 5.10.61-0-lts), and everything works as expected.
>
> So it seems to be specific to the PC hardware (Gigabyte H170-D3HP
> motherboard -- a single USB-C port and several regular ones). Or perhaps
> even the kernel config.
>
> What debugging can I do next?
Normally xHC generates an interrupt at connect change, and the interrupt
handler reads the port status, and prints a debugging message.
We could manually read all the port registers before and after disconnecting.
Check link state, and that the wake flags look ok in case device is suspended
Example:
# cat /sys/kernel/debug/usb/xhci/0000\:00\:14.0/ports/port*/portsc
Powered Not-connected Disabled Link:RxDetect PortSpeed:0 Change: Wake:
Powered Not-connected Disabled Link:RxDetect PortSpeed:0 Change: Wake:
Powered Not-connected Disabled Link:RxDetect PortSpeed:0 Change: Wake:
Powered Connected Enabled Link:U0 PortSpeed:3 Change: Wake:
Powered Not-connected Disabled Link:RxDetect PortSpeed:0 Change: Wake:
...
Also see if disabling runtime suspend for both roothubs helps:
# echo on > /sys/bus/usb/devices/usb1/power/control
# echo on > /sys/bus/usb/devices/usb2/power/control
(if you have more roothubs than usb1 and usb2 do echo "on" to those as well
Thanks
-Mathias
>
> Thanks
>
next prev parent reply other threads:[~2021-11-05 20:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-05 10:58 XHCI unplug of USB-C device is not detected Mark Hills
2021-11-05 20:40 ` Mathias Nyman [this message]
2021-11-06 12:23 ` Mark Hills
2021-11-15 21:00 ` Mathias Nyman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2a5d79d8-e12e-4e72-38f7-ab743b3a1efd@linux.intel.com \
--to=mathias.nyman@linux.intel.com \
--cc=linux-usb@vger.kernel.org \
--cc=mark@xwax.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.