2024-02-04 08:45:43

by Paul Menzel

[permalink] [raw]
Subject: Linux warning `usb: port power management may be unreliable` on Dell XPS 13 9360

Dear Linux folks,


On the Dell XPS 13 9360, Linux warns:

usb: port power management may be unreliable

$ lsusb -t
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p,
480M
|__ Port 003: Dev 002, If 0, Class=Wireless, Driver=[none], 12M
|__ Port 003: Dev 002, If 1, Class=Wireless, Driver=[none], 12M
|__ Port 004: Dev 003, If 0, Class=Human Interface Device,
Driver=usbhid, 12M
|__ Port 005: Dev 004, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 005: Dev 004, If 1, Class=Video, Driver=uvcvideo, 480M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p,
5000M

Enabling dynamic debug with `usbcore.dyndbg=+p` – `dyndbg="file port.c
+p"` did not work¹ – the additional messages are:

[ 1.149417] usb usb2-port1: peered to usb1-port1
[ 1.150123] usb usb2-port2: peered to usb1-port2
[ 1.150916] usb usb2-port3: peered to usb1-port6
[ 1.151621] usb: failed to peer usb2-port4 and usb1-port6 by
location (usb2-port4:none) (usb1-port6:usb2-port3)
[ 1.151634] usb usb2-port4: failed to peer to usb1-port6 (-16)
[ 1.151642] usb: port power management may be unreliable
[ 1.152314] usb: failed to peer usb2-port5 and usb1-port6 by
location (usb2-port5:none) (usb1-port6:usb2-port3)
[ 1.152325] usb usb2-port5: failed to peer to usb1-port6 (-16)
[ 1.153020] usb: failed to peer usb2-port6 and usb1-port6 by
location (usb2-port6:none) (usb1-port6:usb2-port3)
[ 1.153031] usb usb2-port6: failed to peer to usb1-port6 (-16)
[ 1.153079] usb usb2: port-1 no _DSM function 5
[ 1.153096] usb usb2: port-2 no _DSM function 5
[ 1.153111] usb usb2: port-3 no _DSM function 5
[ 1.153124] usb usb2: port-4 no _DSM function 5
[ 1.153137] usb usb2: port-5 no _DSM function 5
[ 1.153151] usb usb2: port-6 no _DSM function 5
[ 1.166521] usb usb1-port3: status 0101 change 0001
[ 1.166555] usb usb1-port4: status 0101 change 0001
[ 1.166584] usb usb1-port5: status 0101 change 0001
[ 1.270442] usb usb1-port3: status 0101, change 0000, 12 Mb/s
[ 1.362751] usb usb2: bus auto-suspend, wakeup 1

So the problematic ports do not show up in `lsusb`, do they?

Please find the output of `dmesg` attached.


Kind regards,

Paul


¹ Strangely the first quote seems to be re-ordered:

GRUB:

linux /vmlinuz-6.8.0-rc2+
root=UUID=32e29882-d94d-4a92-9ee4-4d03002bfa29 ro quiet pci=noaer
mem_sleep_default=deep log_buf_len=8M cryptomgr.notests dyndbg="file
port.c +p"

Linux log:

[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.8.0-rc2+
root=UUID=32e29882-d94d-4a92-9ee4-4d03002bfa29 ro quiet pci=noaer
mem_sleep_default=deep log_buf_len=8M cryptomgr.notests "dyndbg=file
port.c +p"

With the module the quotes are removed:

GRUB:

linux /vmlinuz-6.8.0-rc2+
root=UUID=32e29882-d94d-4a92-9ee4-4d03002bfa29 ro quiet pci=noaer
mem_sleep_default=deep log_buf_len=8M cryptomgr.notests usbcore.dyndbg="+p"

Linux log:

[ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.8.0-rc2+
root=UUID=32e29882-d94d-4a92-9ee4-4d03002bfa29 ro quiet pci=noaer
mem_sleep_default=deep log_buf_len=8M cryptomgr.notests usbcore.dyndbg=+p


Attachments:
=?UTF-8?Q?20240204=E2=80=93dell-xps-13-9360=E2=80=93linux-6=2E8-rc2-usbcore=2Edyndbg=2Etxt?= (94.11 kB)

2024-02-05 19:24:22

by Mathias Nyman

[permalink] [raw]
Subject: Re: Linux warning `usb: port power management may be unreliable` on Dell XPS 13 9360

On 4.2.2024 10.45, Paul Menzel wrote:
> Dear Linux folks,
>
>
> On the Dell XPS 13 9360, Linux warns:
>
>     usb: port power management may be unreliable

Is this a new issue, regression?
Was the firmware recently updated?

>
>     $ lsusb -t
>     /:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
>         |__ Port 003: Dev 002, If 0, Class=Wireless, Driver=[none], 12M
>         |__ Port 003: Dev 002, If 1, Class=Wireless, Driver=[none], 12M
>         |__ Port 004: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
>         |__ Port 005: Dev 004, If 0, Class=Video, Driver=uvcvideo, 480M
>         |__ Port 005: Dev 004, If 1, Class=Video, Driver=uvcvideo, 480M
>     /:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 5000M
>
> Enabling dynamic debug with `usbcore.dyndbg=+p` – `dyndbg="file port.c +p"` did not work¹ – the additional messages are:
>
>     [    1.149417] usb usb2-port1: peered to usb1-port1
>     [    1.150123] usb usb2-port2: peered to usb1-port2
>     [    1.150916] usb usb2-port3: peered to usb1-port6
>     [    1.151621] usb: failed to peer usb2-port4 and usb1-port6 by location (usb2-port4:none) (usb1-port6:usb2-port3)
>     [    1.151634] usb usb2-port4: failed to peer to usb1-port6 (-16)
>     [    1.151642] usb: port power management may be unreliable
>     [    1.152314] usb: failed to peer usb2-port5 and usb1-port6 by location (usb2-port5:none) (usb1-port6:usb2-port3)
>     [    1.152325] usb usb2-port5: failed to peer to usb1-port6 (-16)
>     [    1.153020] usb: failed to peer usb2-port6 and usb1-port6 by location (usb2-port6:none) (usb1-port6:usb2-port3)
>     [    1.153031] usb usb2-port6: failed to peer to usb1-port6 (-16)
>     [    1.153079] usb usb2: port-1 no _DSM function 5
>     [    1.153096] usb usb2: port-2 no _DSM function 5
>     [    1.153111] usb usb2: port-3 no _DSM function 5
>     [    1.153124] usb usb2: port-4 no _DSM function 5
>     [    1.153137] usb usb2: port-5 no _DSM function 5
>     [    1.153151] usb usb2: port-6 no _DSM function 5
>     [    1.166521] usb usb1-port3: status 0101 change 0001
>     [    1.166555] usb usb1-port4: status 0101 change 0001
>     [    1.166584] usb usb1-port5: status 0101 change 0001
>     [    1.270442] usb usb1-port3: status 0101, change 0000, 12 Mb/s
>     [    1.362751] usb usb2: bus auto-suspend, wakeup 1

These are all related to reading values from firmware ACPI tables.

The "failed to peer portx-porty.." messages are because driver can't match which
HS USB 2 and SS USB3 ports are in the same physical connector based on info
read from firmware ACPI _PLD entries

_DSM function 5 is related to port link power management.

Both cases mostly impact power management, but might affects something
else. Haven't looked at it in detail.

ACPI table dump could show more info, especially the DSDT table


>
> So the problematic ports do not show up in `lsusb`, do they?
>
> Please find the output of `dmesg` attached.

dmesg shows that "usb2" is the SuperSpeed USB 3 roothub.
It's suspended as no SuperSpeed devices are connected to it.

Do USB 3 devices work normally on this machine?

Thanks
Mathias


2024-02-06 09:05:40

by Paul Menzel

[permalink] [raw]
Subject: Re: Linux warning `usb: port power management may be unreliable` on Dell XPS 13 9360

Dear Mathias,


Thank you very much for your quick reply.


Am 05.02.24 um 16:15 schrieb Mathias Nyman:
> On 4.2.2024 10.45, Paul Menzel wrote:

>> On the Dell XPS 13 9360, Linux warns:
>>
>>      usb: port power management may be unreliable
>
> Is this a new issue, regression?

No, it is not. In the database provided by *Hardware for Linux* [1], I
could find an upload with Ubuntu 16.04.12’s Linux version
4.4.0-176-generic with the warning [2][3].

> Was the firmware recently updated?

No, it wasn’t. Unfortunately, Dell does not provide any firmware updates
for the device anymore, and the latest version 2.21.0 is from July 2021 [4].

>>      $ lsusb -t
>>      /:  Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/12p, 480M
>>          |__ Port 003: Dev 002, If 0, Class=Wireless, Driver=[none], 12M
>>          |__ Port 003: Dev 002, If 1, Class=Wireless, Driver=[none], 12M
>>          |__ Port 004: Dev 003, If 0, Class=Human Interface Device, Driver=usbhid, 12M
>>          |__ Port 005: Dev 004, If 0, Class=Video, Driver=uvcvideo, 480M
>>          |__ Port 005: Dev 004, If 1, Class=Video, Driver=uvcvideo, 480M
>>      /:  Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/6p, 5000M
>>
>> Enabling dynamic debug with `usbcore.dyndbg=+p` – `dyndbg="file port.c
>> +p"` did not work¹ – the additional messages are:
>>
>>      [    1.149417] usb usb2-port1: peered to usb1-port1
>>      [    1.150123] usb usb2-port2: peered to usb1-port2
>>      [    1.150916] usb usb2-port3: peered to usb1-port6
>>      [    1.151621] usb: failed to peer usb2-port4 and usb1-port6 by location (usb2-port4:none) (usb1-port6:usb2-port3)
>>      [    1.151634] usb usb2-port4: failed to peer to usb1-port6 (-16)
>>      [    1.151642] usb: port power management may be unreliable
>>      [    1.152314] usb: failed to peer usb2-port5 and usb1-port6 by location (usb2-port5:none) (usb1-port6:usb2-port3)
>>      [    1.152325] usb usb2-port5: failed to peer to usb1-port6 (-16)
>>      [    1.153020] usb: failed to peer usb2-port6 and usb1-port6 by location (usb2-port6:none) (usb1-port6:usb2-port3)
>>      [    1.153031] usb usb2-port6: failed to peer to usb1-port6 (-16)
>>      [    1.153079] usb usb2: port-1 no _DSM function 5
>>      [    1.153096] usb usb2: port-2 no _DSM function 5
>>      [    1.153111] usb usb2: port-3 no _DSM function 5
>>      [    1.153124] usb usb2: port-4 no _DSM function 5
>>      [    1.153137] usb usb2: port-5 no _DSM function 5
>>      [    1.153151] usb usb2: port-6 no _DSM function 5
>>      [    1.166521] usb usb1-port3: status 0101 change 0001
>>      [    1.166555] usb usb1-port4: status 0101 change 0001
>>      [    1.166584] usb usb1-port5: status 0101 change 0001
>>      [    1.270442] usb usb1-port3: status 0101, change 0000, 12 Mb/s
>>      [    1.362751] usb usb2: bus auto-suspend, wakeup 1
>
> These are all related to reading values from firmware ACPI tables.
>
> The "failed to peer portx-porty.." messages are because driver can't match
> which HS USB 2 and SS USB3 ports are in the same physical connector based
> on info read from firmware ACPI _PLD entries
>
> _DSM function 5 is related to port link power management.
>
> Both cases mostly impact power management, but might affect something
> else. Haven't looked at it in detail.
>
> ACPI table dump could show more info, especially the DSDT table

I created issue #218465 in the Linux Kernel Bugzilla [5] and attached
the output of `acpidump` there.

>> So the problematic ports do not show up in `lsusb`, do they?
>>
>> Please find the output of `dmesg` attached.
>
> dmesg shows that "usb2" is the SuperSpeed USB 3 roothub.
> It's suspended as no SuperSpeed devices are connected to it.

Yes, nothing is connected to it.

> Do USB 3 devices work normally on this machine?

Kind off. I have to pass pci=noaer and sometimes Linux warns about some
USB-C things, but so far the devices I test work fine.


Kind regards,

Paul


[1]: https://linux-hardware.org/
[2]: https://linux-hardware.org/?probe=713D96799F
[3]:
https://github.com/linuxhw/Dmesg/blob/main/Notebook/Dell/XPS/XPS%2013%209360/F5BE747E0815/UBUNTU-16.04/4.4.0-176-GENERIC/X86_64/713D96799F#L669
[4]:
https://www.dell.com/support/home/en-us/drivers/driversdetails?driverid=xkrg8&oscode=wt64a&productcode=xps-13-9360-laptop
[5]: https://bugzilla.kernel.org/show_bug.cgi?id=218465