It is not possible for a USB device to "interrupt" its host controller in the same way as other hardware interrupts. USB supports an interrupt transfer method, but this is actually done by polling 1 , and the latency that can be achieved is about 1 ms, but is ultimately limited by host performance.
You asked
Why does the USB polling mechanism detect the device instead of interrupting?
Well, one of the reasons would be that the USB protocol simply does not support interrupts at all in the usual hardware sense, most likely it will simplify the protocol. For example, if a device wanted to interpret a transmission that was in progress, it would have to somehow signal it, either by decomposing the existing transmission, or an additional signal line should be added to the entire system. Quick bus polling in hardware is fast enough for most types of devices.
Please note that when a new device is detected, not all three points where polling is recommended. Indeed, we never know when to expect a new USB device to appear on the bus (No. 1), this rarely happens (# 3), and inactive detection is not a priority right away (# 2). Why waste time and energy on a case that is unlikely to happen?
source share