• Mathieu Desnoyers's avatar
    membarrier: Provide GLOBAL_EXPEDITED command · c5f58bd5
    Mathieu Desnoyers authored
    Allow expedited membarrier to be used for data shared between processes
    through shared memory.
    
    Processes wishing to receive the membarriers register with
    MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED. Those which want to issue
    membarrier invoke MEMBARRIER_CMD_GLOBAL_EXPEDITED.
    
    This allows extremely simple kernel-level implementation: we have almost
    everything we need with the PRIVATE_EXPEDITED barrier code. All we need
    to do is to add a flag in the mm_struct that will be used to check
    whether we need to send the IPI to the current thread of each CPU.
    
    There is a slight downside to this approach compared to targeting
    specific shared memory users: when performing a membarrier operation,
    all registered "global" receivers will get the barrier, even if they
    don't share a memory mapping with the sender issuing
    MEMBARRIER_CMD_GLOBAL_EXPEDITED.
    
    This registration approach seems to fit the requirement of not
    disturbing processes that really deeply care about real-time: they
    simply should not register with MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED.
    
    In order to align the membarrier command names, the "MEMBARRIER_CMD_SHARED"
    command is renamed to "MEMBARRIER_CMD_GLOBAL", keeping an alias of
    MEMBARRIER_CMD_SHARED to MEMBARRIER_CMD_GLOBAL for UAPI header backward
    compatibility.
    Signed-off-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Acked-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrea Parri <parri.andrea@gmail.com>
    Cc: Andrew Hunter <ahh@google.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Avi Kivity <avi@scylladb.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Dave Watson <davejwatson@fb.com>
    Cc: David Sehr <sehr@google.com>
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Maged Michael <maged.michael@gmail.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-api@vger.kernel.org
    Link: http://lkml.kernel.org/r/20180129202020.8515-5-mathieu.desnoyers@efficios.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    c5f58bd5
membarrier.h 846 Bytes