Re: Linux warning `usb: port power management may be unreliable` on Dell XPS 13 9360

From: Mathias Nyman
Date: Mon Feb 05 2024 - 10:14:46 EST


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