On 2021-09-27 21:06:50 [+0200], Pavel Machek wrote: > Hi! Hi, > What makes the CPU trigger special with RT? Other triggers will be > called from interesting places, too... Johanes pointed out other > problems with that rwlock, and we are getting rid of the rwlock. There seem to be a few misunderstandings. Let me clear them up for you: - A non sleeping lock is spinlock_t and rwlock_t as you point out but only on !PREEMPT_RT. In context of PREEMPT_RT both of them are sleeping locks. - An interrupt handler on PREEMPT_RT is always threaded. From threaded context sleeping is possible and therefore a spinlock_t can be acquired by regular request_irq(). - The timer callback (timer_list or hrtimer) is *usually* invoked from softirq context which is preemptible on PREEMPT_RT. Therefore sleeping is possible in order to acquire a spinlock_t. The exceptional callbacks (which are not invoked from softirq thus the term usually previously) must not acquire spinlock_t and are specially marked. - The idle loop (x86 or ARM makes no difference) is always invoked with disabled interrupts and so sleeping is a no no on PREEMPT_RT. So a spinlock_t can not be acquired in this context. You mention "interesting places" above. Either this is not the case or nobody reported it yet. > Best regards, > Pavel Sebastian