Red Hat Bugzilla – Bug 1429640
[rt] ipc/msg: Implement lockless pipelined wakeups
Last modified: 2017-08-01 20:25:36 EDT
Move the wakeup_process() invocation so it is not done under the perm->lock by making use of a lockless wake_q. With this change, the waiter is woken up once the message has been assigned and it does not need to loop on SMP if the message points to NULL. In the signal case we still need to check the pointer under the lock to verify the state. This change should also avoid the introduction of preempt_disable() in -RT which avoids a busy-loop which pools for the NULL -> !NULL change if the waiter has a higher priority compared to the waker.
Created attachment 1260532 [details] ipc/msg: Implement lockless pipelined wakeups Ported to -586 build of RHEL-RT
tested with scratch build: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=12694532
Created attachment 1270949 [details] ipc/msg: Implement lockless pipelined wakeups (v4)
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2017:2077