On Tue, Apr 13 2021 at 14:19, Song Chen wrote: > In general, irq handler thread will be assigned a default priority which > is MAX_RT_PRIO/2, as a result, no one can preempt others. > > Here is the case I found in a real project, an interrupt int_a is > coming, wakes up its handler handler_a and handler_a wakes up a > userspace RT process task_a. > > However, if another irq handler handler_b which has nothing to do > with any RT tasks is running when int_a is coming, handler_a can't > preempt handler_b, as a result, task_a can't be waken up immediately > as expected until handler_b gives up cpu voluntarily. In this case, > determinism breaks. It breaks because the system designer failed to assign proper priorities to the irq threads int_a, int_b and to the user space process task_a. That's not solvable at the kernel level. Thanks, tglx