Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753779AbbDVUYs (ORCPT ); Wed, 22 Apr 2015 16:24:48 -0400 Received: from mail-ob0-f171.google.com ([209.85.214.171]:36615 "EHLO mail-ob0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751429AbbDVUYr (ORCPT ); Wed, 22 Apr 2015 16:24:47 -0400 MIME-Version: 1.0 In-Reply-To: <1429283202-6245-1-git-send-email-mathieu.desnoyers@efficios.com> References: <1429283202-6245-1-git-send-email-mathieu.desnoyers@efficios.com> From: Pranith Kumar Date: Wed, 22 Apr 2015 16:24:15 -0400 Message-ID: Subject: Re: [PATCH v16] sys_membarrier(): system-wide memory barrier (generic, x86) To: Mathieu Desnoyers Cc: LKML , Josh Triplett , KOSAKI Motohiro , Steven Rostedt , Nicholas Miell , Linus Torvalds , Ingo Molnar , Alan Cox , Lai Jiangshan , Stephen Hemminger , Andrew Morton , Thomas Gleixner , Peter Zijlstra , David Howells , Michael Kerrisk Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1793 Lines: 53 On Fri, Apr 17, 2015 at 11:06 AM, Mathieu Desnoyers wrote: > diff --git a/init/Kconfig b/init/Kconfig > index f5dbc6d..89bad6a 100644 > --- a/init/Kconfig > +++ b/init/Kconfig > @@ -1559,6 +1559,19 @@ config PCI_QUIRKS > bugs/quirks. Disable this only if your target machine is > unaffected by PCI quirks. > > +config MEMBARRIER > + bool "Enable membarrier() system call" if EXPERT > + default y > + depends on SMP > + help > + Enable the membarrier() system call that allows issuing memory > + barriers across all running threads, which can be used to distribute > + the cost of user-space memory barriers asymmetrically by transforming > + pairs of memory barriers into pairs consisting of membarrier() and a > + compiler barrier. > + > + If unsure, say Y. > + I understand why this syscall makes sense on SMP only, but you are anyways checking num_online_cpus() and returning if it is only one. Is this limitation necessary then? How do !SMP systems handle this syscall? (I am guessing glibc wrapper?) ... > +SYSCALL_DEFINE2(membarrier, int, cmd, int, flags) > +{ > + switch (cmd) { > + case MEMBARRIER_CMD_QUERY: > + return MEMBARRIER_CMD_BITMASK; > + case MEMBARRIER_CMD_SHARED: > + if (num_online_cpus() > 1) > + synchronize_sched(); > + return 0; > + default: > + return -EINVAL; > + } > +} -- Pranith -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/