How to improve resume time of EHCI controller on Lenovo X60t?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear Linux USB folks,


With commit 85724edec (Merge tag 'leds_for_4.12' of
git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds), 
testing the resume time on a Lenovo X60t connected to the docking
station with the script `analyze_suspend.py` [1][2], one USB
controller(?) needs the most time with 376 ms.

> usb @ 17ef:1000 [5-6] {usb} async_device (Total Suspend: 88.202 ms Total Resume: 376.385 ms)

Around 270 ms are spent in `generic_resume [usbcore]`.

Please find the compressed HTML result page attached, which was created
with `sudo ./analyze_suspend.py -config config/suspend-callgraph.cfg`.

Here is some more information about the devices.

```
$ lspci -nn -s 00:1d -v
00:1d.0 USB controller [0c03]: Intel Corporation NM10/ICH7 Family USB UHCI Controller #1 [8086:27c8] (rev 02) (prog-if 00 [UHCI])
        Subsystem: Lenovo ThinkPad R60/T60/X60 series [17aa:200a]
        Flags: medium devsel, IRQ 16
        I/O ports at 5000 [size=32]
        Kernel driver in use: uhci_hcd

00:1d.1 USB controller [0c03]: Intel Corporation NM10/ICH7 Family USB UHCI Controller #2 [8086:27c9] (rev 02) (prog-if 00 [UHCI])
        Subsystem: Lenovo ThinkPad R60/T60/X60 series [17aa:200a]
        Flags: medium devsel, IRQ 17
        I/O ports at 5020 [size=32]
        Kernel driver in use: uhci_hcd

00:1d.2 USB controller [0c03]: Intel Corporation NM10/ICH7 Family USB UHCI Controller #3 [8086:27ca] (rev 02) (prog-if 00 [UHCI])
        Subsystem: Lenovo ThinkPad R60/T60/X60 series [17aa:200a]
        Flags: medium devsel, IRQ 18
        I/O ports at 5040 [size=32]
        Kernel driver in use: uhci_hcd

00:1d.3 USB controller [0c03]: Intel Corporation NM10/ICH7 Family USB UHCI Controller #4 [8086:27cb] (rev 02) (prog-if 00 [UHCI])
        Subsystem: Lenovo ThinkPad R60/T60/X60 series [17aa:200a]
        Flags: medium devsel, IRQ 19
        I/O ports at 5060 [size=32]
        Kernel driver in use: uhci_hcd

00:1d.7 USB controller [0c03]: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller [8086:27cc] (rev 02) (prog-if 20 [EHCI])
        Subsystem: Lenovo ThinkPad R60/T60/X60 series [17aa:200b]
        Flags: medium devsel, IRQ 19
        Memory at e4444000 (32-bit, non-prefetchable) [size=1K]
        Capabilities: <access denied>
        Kernel driver in use: ehci-pci
$ sudo lsusb -d 17ef:1000 -v

Bus 005 Device 002: ID 17ef:1000 Lenovo
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         2 TT per port
  bMaxPacketSize0        64
  idVendor           0x17ef Lenovo
  idProduct          0x1000
  bcdDevice            0.01
  iManufacturer           0
  iProduct                0
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      1 Single TT
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0001  1x 1 bytes
        bInterval              12
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0 Unused
      bInterfaceProtocol      2 TT per port
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0001  1x 1 bytes
        bInterval              12
Hub Descriptor:   
  bLength               9
  bDescriptorType      41
  nNbrPorts             4
  wHubCharacteristic 0x0009
    Per-port power switching
    Per-port overcurrent protection
    TT think time 8 FS bits
  bPwrOn2PwrGood       50 * 2 milli seconds
  bHubContrCurrent      1 milli Ampere
  DeviceRemovable    0x00
  PortPwrCtrlMask    0xff
 Hub Port Status: 
   Port 1: 0000.0100 power
   Port 2: 0000.0100 power
   Port 3: 0000.0100 power
   Port 4: 0000.0100 power
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0 Unused
  bDeviceProtocol         0 Full speed (or root) hub
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered
```

Can there something be done about that?


Thanks,

Paul


[1] https://01.org/suspendresume
[2] https://github.com/01org/pm-graph

Attachment: lenovo_x60t_mem.html.7z
Description: application/7z-compressed

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux