I have irq/21-xhci-hcd displayed as the process consuming 90% CPU on top. There was also a lot of CPU time spent on servicing software interrupts (si).

This is on embedded Linux.

Does this mean that it's IRQ 21? Can I then use lspci -vvv to get more info on IRQ 21?

If that's not the case, do I need to use other methods like doing dmesg or watch -n1 -d "cat /proc/interrupts"?

What's the best way to get more info on this, including which kernel module is affected? Which kernel thread and function is responsible?


1 Answer 1


xhci stands for eXtensible Host Controller Interface which is standard for USB 3.0 "SuperSpeed" host controller hardware.
irq/21-xhci-hcd is likely to represent the irq associated to one particular usb bus. (Which can host several different usb devices)

lsusb -t utility should give you more information (and lsusb -vt even more) regarding the individual devices, the bus they are connected to as well as the drivers involved (one for the bus and another for the device itself) in particular.

The problem you notice could be the fact of one particular very busy or ill-functionning usb device. You should be able to identify it (thanks to the lsusb utility) and physically remove it (if possible) and re-test.

Time spent servicing software interrupts are likely to be but not necessarily related. You could check if they evolve in the same order of magnitude viewing /proc/stat watching in particular the "tasklet" soft-irq periodically. Regarding the latter while the info is reported as part of /proc/stat, one might find easier to watch /proc/softirqs (because of the explicit labels)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.