When I was reading the futex.c code, I noticed that locking a PI mutex
can apparently cause an allocation, via alloc_pi_state() and
refill_pi_state_cache(). Doesn't this mean that memory allocation (and
the corresponding possible IO latency) could be introduced into
real-time code - the primary user of PI mutexes?
Am I missing something here, or is some sort of PI mutex "prefaulting"
needed to avoid allocation when taking PI locks? It would seem that
the sleeps and unbounded latency that a GFP_KERNEL allocation can
introduce would make these unusable for real-time code...