From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-4061326-1516723067-2-11483768104782760787 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.25, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='US', FromHeader='com', MailFrom='org' X-Spam-charsets: X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-api-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1516723066; b=n7syfwbudkchio3iWBRH/XPbQIBATOt+NZ9qs1e8O4CL42e bwlgEt732Wo5dZDTTg0JwnPt9s912mvMtcM2hAAWin0IWbPkrUnTIkdPSUSjJ8QV gW/TiOi2wsxIwJZI26qxgp7O1GCOd4r4Pq4QDDqlPy4dTpGdK+F3ZNsXhhKFKVLm t7rMWZFsU0HZ1fw0Z03a1cFCpGygZbLWzXH0sxsDGKuq5O7Vr7UJlbJhAjvxaux+ zwHevLDgwbl4tD2JZqFcWp8fiVyZEG2tZSKedde63CrgNZ8oQmiLed6gsN3F33bp 81uWlB/VQqpwk6TVJCJKkBwt2SfT+STCQoAr/yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id:sender :list-id; s=arctest; t=1516723066; bh=eFon6RYiJhzJucSc+wHRBi3CMz WxYpDYAlZKqeHg+t0=; b=dm7QloXF3+7M0A/VnW85REIyaVk+TjyDUrw4Jc6/Hq wrbbE5jABnrGKF8ZtrMiixnIY1opF90wY9zTA7u0fpVFsJGIkaqWiVf4iXsydqAS AyEvAoAw0Re2S8/N2JzdOPj7rxTEUevw3CRbxFpmA9nOzETkjNRU8CSfT/z5YR2m VPAZJ0aBIdqByEs0dKFB2wcdITAQDb+2USf3UYIbMgukmvbpjwO7USzgKON6aBqh Gu1DUZtIADLN/zAgA1VyRhYlQrCadfOTP3FAnEgFl9lPwx72K5wjN7DLjYh30Hro 0Csban69GsxCUYGKsnDxpsiMcQub45XPxlBzIRux1/NA== ARC-Authentication-Results: i=1; mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=efficios.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-api-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=efficios.com header.result=pass header_is_org_domain=yes Authentication-Results: mx2.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=efficios.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-api-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=efficios.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751335AbeAWP5p (ORCPT ); Tue, 23 Jan 2018 10:57:45 -0500 Received: from mail.efficios.com ([167.114.142.141]:34587 "EHLO mail.efficios.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751264AbeAWP5o (ORCPT ); Tue, 23 Jan 2018 10:57:44 -0500 From: Mathieu Desnoyers To: Ingo Molnar , Peter Zijlstra , Thomas Gleixner Cc: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org, Andy Lutomirski , "Paul E . McKenney" , Boqun Feng , Andrew Hunter , Maged Michael , Avi Kivity , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Dave Watson , "H . Peter Anvin" , Andrea Parri , Russell King , Greg Hackmann , Will Deacon , David Sehr , Linus Torvalds , x86@kernel.org, Mathieu Desnoyers Subject: [PATCH for 4.16 00/11] membarrier updates for 4.16 Date: Tue, 23 Jan 2018 10:57:22 -0500 Message-Id: <20180123155733.3404-1-mathieu.desnoyers@efficios.com> X-Mailer: git-send-email 2.11.0 Sender: linux-api-owner@vger.kernel.org X-Mailing-List: linux-api@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: Hi Ingo, Peter, Thomas, Here is the updated membarrier patch series following review from Andy. It would be appreciated of those can go through the scheduler tree for the 4.16 merge window. Patch "x86: Implement sync_core_before_usermode" got a reviewed-by from Thomas, but I removed the tag following KPTI-related optimizations based on the discussion with Andy afterwards. Highlights: "powerpc: membarrier: Skip memory barrier in switch_mm()" takes care of a TODO that was left in the private expedited implementation when merged in 4.14: an extra memory barrier was added on context switch on powerpc. Ensure that the barrier is only performed when scheduling between different processes, only for threads belonging to processes that have registered their intent to use the private expedited command. "membarrier: provide GLOBAL_EXPEDITED command" adds new commands to membarrier for registration and use of membarrier across processes communicating through shared memory mappings. The non-expedited command has proven to be really too slow (taking 10ms and more to complete) for real-world use. The expedited version completes in a matter of microseconds. This patch renames the pre-existing MEMBARRIER_CMD_SHARED to MEMBARRIER_CMD_GLOBAL for consistency, keeping the old enum label as an alias for backward compatibility. "membarrier: Provide core serializing command" provides core serialization for JIT reclaim. We received positive feedback from Android developers that the proposed ABI fits their use-case. Only x86 32/64 and arm 64 implement this command so far. This is opt-in per architecture. The other patches add selftests and documentation. Thanks, Mathieu Mathieu Desnoyers (11): membarrier: selftest: Test private expedited cmd (v2) powerpc: membarrier: Skip memory barrier in switch_mm() (v7) membarrier: Document scheduler barrier requirements (v5) membarrier: provide GLOBAL_EXPEDITED command (v3) membarrier: selftest: Test global expedited cmd (v2) Introduce sync_core_before_usermode (v2) x86: Implement sync_core_before_usermode (v3) membarrier: Provide core serializing command (v2) membarrier: x86: Provide core serializing command (v4) membarrier: arm64: Provide core serializing command membarrier: selftest: Test private expedited sync core cmd MAINTAINERS | 1 + arch/arm64/Kconfig | 1 + arch/arm64/kernel/entry.S | 4 + arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/membarrier.h | 27 +++ arch/powerpc/mm/mmu_context.c | 7 + arch/x86/Kconfig | 2 + arch/x86/entry/entry_32.S | 5 + arch/x86/entry/entry_64.S | 4 + arch/x86/include/asm/sync_core.h | 28 +++ arch/x86/mm/tlb.c | 6 + include/linux/sched/mm.h | 40 +++- include/linux/sync_core.h | 21 ++ include/uapi/linux/membarrier.h | 74 ++++++- init/Kconfig | 9 + kernel/sched/core.c | 53 +++-- kernel/sched/membarrier.c | 177 +++++++++++++-- .../testing/selftests/membarrier/membarrier_test.c | 237 +++++++++++++++++++-- 18 files changed, 629 insertions(+), 68 deletions(-) create mode 100644 arch/powerpc/include/asm/membarrier.h create mode 100644 arch/x86/include/asm/sync_core.h create mode 100644 include/linux/sync_core.h -- 2.11.0