From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-1634197-1517936503-5-11705007704487797847 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.001, 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=1517936502; b=KD0IQHTMga0d2Ocrz0XVQJ3xJOROkry0NEnjnZS8YWVjUNm 9EHECEOHHtRbjZfNKVgjYwGT4ZVqrybL13yTw8u489OGOV1wENQI+wKYOyW79kcx Xi8vzfs/cFVcE/xk0+wcZEGyRSBa1biE7D2yIuLEZd5+s3rkTvPzhEOB+CEirvE7 t6yOjIiBsRfJDTkXhlpyK4L0b1Bz7pfWez8gRw/DsfcLk3Me6i81COBgU13MQzCW p21cAYK/a1HvIGVqhJ1uyfuN8B3DmpHzYVjI6RWByj8+LLXDNnRdlRcN990JYDqG x5bQbrV9LPzB6A5mGxK7cLqd6Zi0rZwwrqzljXQ== 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=1517936502; bh=jT5xgizu3XlzpZ3Mlvg8tMH863 7qZjQv6VuOZlImQ/A=; b=brdWmnH4Wq/ZMv/RDv5BLCXJy4bO+fx6NMBE4Sm02+ GDc4/r3Dt9NiO59n12L/qTkxc1vmRBcan5vAE22eKHN0UsNdVcEUyc193G9T8Cr/ qQSh6+vogp58rhEGb2Omcb9A6CSC11k+PotJZtFs0Ulj/44Q37AN4RXy9MSz72WX sK99lAwL/Irk1PdUzI3JT2D+BD5zqvL3nPITokiFm3xncu+UAaVYgMiJsLa2eC7z eFnG3pPzuNTiaWCQxfUNdJ5Q+k23/xFKcD7oLqdtm2lqnY2qFO22LmMWAJ+JHw4F a8/MC0hWuUwFHYg7NA0BLrxDYLUEIKfKYB7/m+d72SbA== ARC-Authentication-Results: i=1; mx4.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: mx4.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 S1753023AbeBFRAn (ORCPT ); Tue, 6 Feb 2018 12:00:43 -0500 Received: from mail.efficios.com ([167.114.142.141]:41077 "EHLO mail.efficios.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753346AbeBFRAf (ORCPT ); Tue, 6 Feb 2018 12:00:35 -0500 From: Mathieu Desnoyers To: Ingo Molnar Cc: linux-kernel@vger.kernel.org, Mathieu Desnoyers , Thomas Gleixner , "Peter Zijlstra (Intel)" , Andrea Parri , Andrew Hunter , Andy Lutomirski , Avi Kivity , Benjamin Herrenschmidt , Boqun Feng , Dave Watson , David Sehr , Greg Hackmann , "H. Peter Anvin" , Linus Torvalds , Maged Michael , Michael Ellerman , "Paul E. McKenney" , Paul Mackerras , Russell King , Will Deacon , linux-api@vger.kernel.org, linux-arch@vger.kernel.org Subject: [RFC PATCH] membarrier-sync-core: Document architecture support Date: Tue, 6 Feb 2018 12:00:13 -0500 Message-Id: <1517936413-19675-1-git-send-email-mathieu.desnoyers@efficios.com> X-Mailer: git-send-email 1.9.1 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: Ensure we gather architecture requirements about each architecture supporting the "sync_core" membarrier command in a single file under Documentation/features. [ This patch applies on top of tip sched/core. ] Signed-off-by: Mathieu Desnoyers Cc: Ingo Molnar Cc: Thomas Gleixner Cc: Peter Zijlstra (Intel) Cc: Andrea Parri Cc: Andrew Hunter Cc: Andy Lutomirski Cc: Avi Kivity Cc: Benjamin Herrenschmidt Cc: Boqun Feng Cc: Dave Watson Cc: David Sehr Cc: Greg Hackmann Cc: H. Peter Anvin Cc: Linus Torvalds Cc: Maged Michael Cc: Michael Ellerman Cc: Paul E. McKenney Cc: Paul Mackerras Cc: Russell King Cc: Will Deacon Cc: linux-api@vger.kernel.org Cc: linux-arch@vger.kernel.org --- .../sched/membarrier-sync-core/arch-support.txt | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Documentation/features/sched/membarrier-sync-core/arch-support.txt diff --git a/Documentation/features/sched/membarrier-sync-core/arch-support.txt b/Documentation/features/sched/membarrier-sync-core/arch-support.txt new file mode 100644 index 0000000..2c815a7 --- /dev/null +++ b/Documentation/features/sched/membarrier-sync-core/arch-support.txt @@ -0,0 +1,62 @@ +# +# Feature name: membarrier-sync-core +# Kconfig: ARCH_HAS_MEMBARRIER_SYNC_CORE +# description: arch supports core serializing membarrier +# +# Architecture requirements +# +# * arm64 +# +# Rely on eret context synchronization when returning from IPI handler, and +# when returning to user-space. +# +# * x86 +# +# x86-32 uses IRET as return from interrupt, which takes care of the IPI. +# However, it uses both IRET and SYSEXIT to go back to user-space. The IRET +# instruction is core serializing, but not SYSEXIT. +# +# x86-64 uses IRET as return from interrupt, which takes care of the IPI. +# However, it can return to user-space through either SYSRETL (compat code), +# SYSRETQ, or IRET. +# +# Given that neither SYSRET{L,Q}, nor SYSEXIT, are core serializing, we rely +# instead on write_cr3() performed by switch_mm() to provide core serialization +# after changing the current mm, and deal with the special case of kthread -> +# uthread (temporarily keeping current mm into active_mm) by issuing a +# sync_core_before_usermode() in that specific case. +# + ----------------------- + | arch |status| + ----------------------- + | alpha: | TODO | + | arc: | TODO | + | arm: | TODO | + | arm64: | ok | + | blackfin: | TODO | + | c6x: | TODO | + | cris: | TODO | + | frv: | TODO | + | h8300: | TODO | + | hexagon: | TODO | + | ia64: | TODO | + | m32r: | TODO | + | m68k: | TODO | + | metag: | TODO | + | microblaze: | TODO | + | mips: | TODO | + | mn10300: | TODO | + | nios2: | TODO | + | openrisc: | TODO | + | parisc: | TODO | + | powerpc: | TODO | + | s390: | TODO | + | score: | TODO | + | sh: | TODO | + | sparc: | TODO | + | tile: | TODO | + | um: | TODO | + | unicore32: | TODO | + | x86: | ok | + | xtensa: | TODO | + ----------------------- -- 1.9.1