I also have a similar problem which does Not seem to be solved by the patched kernel although the perf report looks very similar and plugging in a USB device clears the problem. The starting and inhibiting of the kworker spinning is very specific and rather bizare on my new Skylake machine running Linux Mint 17.3 beta (Cinnamon 2.8 desktop) with kernels between 3.19 and 4.2 during test. It only starts when external power is off and the machine is suspended/resumed - I have not so far been able to provoke it any other way. If power is restored excess usage stops but restarts if power unplugged. If power is on and a suspend/resume cycle is carried out external power can be unplugged without the excess usage. Any USB 2 device stops the excess usage when plugged into the USB2 port including USB3 devices. USB 3 devices plugged into a USB3 port do not stop the power usage. Turning on the webcam stops the usage as long as it is on - the webcam is on the usb2 hub Turning Bluetooth off and on with the function key stops the high usage as long as it still remains on. Software disabling and enabling does not work. When bluetooth switched by function key it disappears/appears in lsusb under the USB 2 hub In other words everything seems to point to the USB 2 system. perf report + 68.46% 0.00% kworker/0:3 [kernel.kallsyms] [k] ret_from_fork ▒ + 68.46% 0.00% kworker/0:3 [kernel.kallsyms] [k] kthread ▒ + 68.46% 0.00% kworker/0:3 [kernel.kallsyms] [k] worker_thread ▒ + 68.43% 0.02% kworker/0:3 [kernel.kallsyms] [k] process_one_work ▒ + 67.44% 0.07% kworker/0:3 [kernel.kallsyms] [k] rpm_idle ▒ + 66.89% 0.07% kworker/0:3 [kernel.kallsyms] [k] rpm_suspend ▒ + 66.84% 0.02% kworker/0:3 [kernel.kallsyms] [k] pm_runtime_work ▒ + 66.47% 0.00% kworker/0:3 [kernel.kallsyms] [k] usb_runtime_idle ▒ + 66.47% 0.00% kworker/0:3 [kernel.kallsyms] [k] __rpm_callback ▒ + 66.44% 0.00% kworker/0:3 [kernel.kallsyms] [k] __pm_runtime_suspend ▒ + 66.23% 0.02% kworker/0:3 [kernel.kallsyms] [k] rpm_callback ▒ + 66.21% 0.02% kworker/0:3 [kernel.kallsyms] [k] usb_runtime_suspend ▒ + 66.11% 0.02% kworker/0:3 [kernel.kallsyms] [k] usb_suspend_both ▒ + 64.11% 0.02% kworker/0:3 [kernel.kallsyms] [k] hub_resume ▒ + 64.11% 0.02% kworker/0:3 [kernel.kallsyms] [k] usb_resume_interface.isra.6 ▒ + 64.04% 0.52% kworker/0:3 [kernel.kallsyms] [k] hub_activate ▒ + 62.49% 0.24% kworker/0:3 [kernel.kallsyms] [k] hub_port_status ▒ + 62.02% 0.21% kworker/0:3 [kernel.kallsyms] [k] usb_control_msg ▒ + 59.15% 0.26% kworker/0:3 [kernel.kallsyms] [k] usb_start_wait_urb ▒ + 53.26% 0.05% kworker/0:3 [kernel.kallsyms] [k] usb_submit_urb ▒ + 53.26% 0.64% kworker/0:3 [kernel.kallsyms] [k] usb_submit_urb.part.6 ▒ + 50.96% 1.70% kworker/0:3 [kernel.kallsyms] [k] usb_hcd_submit_urb ▒ + 36.85% 36.23% kworker/0:3 [kernel.kallsyms] [k] xhci_hub_control ▒ + 17.07% 0.00% ksoftirqd/0 [kernel.kallsyms] [k] ret_from_fork ▒ + 17.07% 0.00% ksoftirqd/0 [kernel.kallsyms] [k] kthread ▒ + 16.65% 1.33% ksoftirqd/0 [kernel.kallsyms] [k] smpboot_thread_fn ▒ + 9.88% 0.69% kworker/0:3 [kernel.kallsyms] [k] usb_hcd_giveback_urb ▒ + 8.22% 0.83% kworker/0:3 [kernel.kallsyms] [k] __tasklet_schedule .................................... lspci and lsusb @Helios:~$ lspci 00:00.0 Host bridge: Intel Corporation Sky Lake Host Bridge/DRAM Registers (rev 08) 00:02.0 VGA compatible controller: Intel Corporation Sky Lake Integrated Graphics (rev 07) 00:14.0 USB controller: Intel Corporation Device 9d2f (rev 21) 00:14.2 Signal processing controller: Intel Corporation Device 9d31 (rev 21) 00:16.0 Communication controller: Intel Corporation Device 9d3a (rev 21) 00:17.0 SATA controller: Intel Corporation Device 9d03 (rev 21) 00:1c.0 PCI bridge: Intel Corporation Device 9d14 (rev f1) 00:1f.0 ISA bridge: Intel Corporation Device 9d48 (rev 21) 00:1f.2 Memory controller: Intel Corporation Device 9d21 (rev 21) 00:1f.3 Audio device: Intel Corporation Device 9d70 (rev 21) 00:1f.4 SMBus: Intel Corporation Device 9d23 (rev 21) 01:00.0 Network controller: Intel Corporation Wireless 3160 (rev 83) @Helios:~$ lsusb -t /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 5000M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/12p, 480M |__ Port 2: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M |__ Port 4: Dev 4, If 0, Class=Video, Driver=uvcvideo, 480M |__ Port 4: Dev 4, If 1, Class=Video, Driver=uvcvideo, 480M @Helios:~$ I have also found a thread looking into similar problems at https://www.spinics.net/lists/linux-usb/msg133143.html and I get an identical output to echo 'module usbcore =p' >/sys/kernel/debug/dynamic_debug/control which they use as a diagnostic. I should note I have i915.preliminary_hw_support=1 as Skylake being considered of "preliminary hardware support" by the Intel DRM kernel driver but it seems to actually make no difference. Please let me know if there is any additional information I can provide or tests I can run