High CPU load produced by USB (DW2)

Mirza Krak mirza.krak at gmail.com
Wed Feb 7 01:48:57 PST 2018


Hi.

I initially started a thread on a different mailing list [1], and you
can take look there for some additional background.

I am using a 4.14.15 stable kernel on a RK3288 SoC (FireFly RK3288
board) which uses the DW2 USB core. I have noticed that when
connecting a USB device there is unreasonable high CPU load produced
by the USB interrupts.

Here is one example with a MIDI keyboard connected on USB (not really
doing anything on it)

   79     2 root     SW       0   0%  19% [irq/45-dwc2_hso]
   78     2 root     SW       0   0%  11% [irq/45-ff540000]

Can also see that there is a "HIGH" interrupt count

root at esp5-d1:~# watch cat /proc/interrupts | grep usb
 45:   43681938          0          0          0     GIC-0  57 Level
  ff540000.usb, dwc2_hsotg:usb1
 46:          0          0          0          0     GIC-0  55 Level
  ff580000.usb, ff580000.usb, dwc2_hsotg:usb2
 45:   43829473          0          0          0     GIC-0  57 Level
  ff540000.usb, dwc2_hsotg:usb1
 46:          0          0          0          0     GIC-0  55 Level
  ff580000.usb, ff580000.usb, dwc2_hsotg:usb2
 45:   43972333          0          0          0     GIC-0  57 Level
  ff540000.usb, dwc2_hsotg:usb1
 46:          0          0          0          0     GIC-0  55 Level
  ff580000.usb, ff580000.usb, dwc2_hsotg:usb2
 45:   44118769          0          0          0     GIC-0  57 Level
  ff540000.usb, dwc2_hsotg:usb1
 46:          0          0          0          0     GIC-0  55 Level
  ff580000.usb, ff580000.usb, dwc2_hsotg:usb2
 45:   44267876          0          0          0     GIC-0  57 Level
  ff540000.usb, dwc2_hsotg:usb1
 46:          0          0          0          0     GIC-0  55 Level
  ff580000.usb, ff580000.usb, dwc2_hsotg:usb2

Again not really doing anything with the device, it is just connected.
I have also tested with server different devices with same result (BT
and WLAN).

The CPU load is exposed when I add "threadirqs" to kernel arguments,
otherwise it does not seem that it accounted for (not see in "top")
but the number of interrupts is still high.

Any thoughts on this? Please let me know if there is additional
information that I can provide to help debug this.


[1]. https://www.spinics.net/lists/linux-rt-users/msg18341.html

-- 
Med Vänliga Hälsningar / Best Regards

Mirza Krak



More information about the Linux-rockchip mailing list