In a user thread I block on wait_event_interruptible_timeout() for about 3300 usecs or until my threaded interrupt handler calls wake_up_interruptible() when the hardware event happens. This seems to work fine for the case when the event actually happens. But for the timeout case, the function wait_event_interruptible_timeout() is sleeping 9000 usecs or so rather than 3300 usecs as requested. I confirmed this by toggling a GPIO pin before and after the call and feeding that signal to a logic analyzer. The user thread is RT round robin at about a priority 5. Am I doing something disallowed under PREEMPT_RT? What could be the reason for the inaccurate wait_event_interruptible_timeout() timeout? ret = wait_event_interruptible_timeout(bh->rx_waitq, bh->rx_intr_flag, usecs_to_jiffies(aTimeoutUSecs) );