All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: linux-arch@vger.kernel.org, James Hogan <james.hogan@imgtec.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Ralf Baechle <ralf@linux-mips.org>,
	virtualization@lists.linux-foundation.org,
	linux-metag@vger.kernel.org,
	Andrey Konovalov <andreyknvl@google.com>,
	Ingo Molnar <mingo@kernel.org>
Subject: [PATCH 21/34] metag: define __smp_XXX
Date: Wed, 30 Dec 2015 15:25:44 +0200	[thread overview]
Message-ID: <1451473761-30019-22-git-send-email-mst@redhat.com> (raw)
In-Reply-To: <1451473761-30019-1-git-send-email-mst@redhat.com>

This defines __smp_XXX barriers for metag,
for use by virtualization.

smp_XXX barriers are removed as they are
defined correctly by asm-generic/barriers.h

Note: as __smp_XX macros should not depend on CONFIG_SMP, they can not
use the existing fence() macro since that is defined differently between
SMP and !SMP.  For this reason, this patch introduces a wrapper
metag_fence() that doesn't depend on CONFIG_SMP.
fence() is then defined using that, depending on CONFIG_SMP.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 arch/metag/include/asm/barrier.h | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
index b5b778b..84880c9 100644
--- a/arch/metag/include/asm/barrier.h
+++ b/arch/metag/include/asm/barrier.h
@@ -44,13 +44,6 @@ static inline void wr_fence(void)
 #define rmb()		barrier()
 #define wmb()		mb()
 
-#ifndef CONFIG_SMP
-#define fence()		do { } while (0)
-#define smp_mb()        barrier()
-#define smp_rmb()       barrier()
-#define smp_wmb()       barrier()
-#else
-
 #ifdef CONFIG_METAG_SMP_WRITE_REORDERING
 /*
  * Write to the atomic memory unlock system event register (command 0). This is
@@ -60,26 +53,31 @@ static inline void wr_fence(void)
  * incoherence). It is therefore ineffective if used after and on the same
  * thread as a write.
  */
-static inline void fence(void)
+static inline void metag_fence(void)
 {
 	volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_ATOMIC_UNLOCK;
 	barrier();
 	*flushptr = 0;
 	barrier();
 }
-#define smp_mb()        fence()
-#define smp_rmb()       fence()
-#define smp_wmb()       barrier()
+#define __smp_mb()        metag_fence()
+#define __smp_rmb()       metag_fence()
+#define __smp_wmb()       barrier()
 #else
-#define fence()		do { } while (0)
-#define smp_mb()        barrier()
-#define smp_rmb()       barrier()
-#define smp_wmb()       barrier()
+#define metag_fence()		do { } while (0)
+#define __smp_mb()        barrier()
+#define __smp_rmb()       barrier()
+#define __smp_wmb()       barrier()
 #endif
+
+#ifdef CONFIG_SMP
+#define fence() metag_fence()
+#else
+#define fence()		do { } while (0)
 #endif
 
-#define smp_mb__before_atomic()	barrier()
-#define smp_mb__after_atomic()	barrier()
+#define __smp_mb__before_atomic()	barrier()
+#define __smp_mb__after_atomic()	barrier()
 
 #include <asm-generic/barrier.h>
 
-- 
MST

WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: Peter Zijlstra <peterz@infradead.org>,
	Arnd Bergmann <arnd@arndb.de>,
	linux-arch@vger.kernel.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	virtualization@lists.linux-foundation.org,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	James Hogan <james.hogan@imgtec.com>,
	Ingo Molnar <mingo@kernel.org>,
	Andrey Konovalov <andreyknvl@google.com>,
	Ralf Baechle <ralf@linux-mips.org>,
	linux-metag@vger.kernel.org
Subject: [PATCH 21/34] metag: define __smp_xxx
Date: Wed, 30 Dec 2015 15:25:44 +0200	[thread overview]
Message-ID: <1451473761-30019-22-git-send-email-mst@redhat.com> (raw)
Message-ID: <20151230132544.nNfWjc9L_tyZWHuxwUCpATC1rUN1az1QIkQs4c_p7Js@z> (raw)
In-Reply-To: <1451473761-30019-1-git-send-email-mst@redhat.com>

This defines __smp_XXX barriers for metag,
for use by virtualization.

smp_XXX barriers are removed as they are
defined correctly by asm-generic/barriers.h

Note: as __smp_XX macros should not depend on CONFIG_SMP, they can not
use the existing fence() macro since that is defined differently between
SMP and !SMP.  For this reason, this patch introduces a wrapper
metag_fence() that doesn't depend on CONFIG_SMP.
fence() is then defined using that, depending on CONFIG_SMP.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
 arch/metag/include/asm/barrier.h | 32 +++++++++++++++-----------------
 1 file changed, 15 insertions(+), 17 deletions(-)

diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
index b5b778b..84880c9 100644
--- a/arch/metag/include/asm/barrier.h
+++ b/arch/metag/include/asm/barrier.h
@@ -44,13 +44,6 @@ static inline void wr_fence(void)
 #define rmb()		barrier()
 #define wmb()		mb()
 
-#ifndef CONFIG_SMP
-#define fence()		do { } while (0)
-#define smp_mb()        barrier()
-#define smp_rmb()       barrier()
-#define smp_wmb()       barrier()
-#else
-
 #ifdef CONFIG_METAG_SMP_WRITE_REORDERING
 /*
  * Write to the atomic memory unlock system event register (command 0). This is
@@ -60,26 +53,31 @@ static inline void wr_fence(void)
  * incoherence). It is therefore ineffective if used after and on the same
  * thread as a write.
  */
-static inline void fence(void)
+static inline void metag_fence(void)
 {
 	volatile int *flushptr = (volatile int *) LINSYSEVENT_WR_ATOMIC_UNLOCK;
 	barrier();
 	*flushptr = 0;
 	barrier();
 }
-#define smp_mb()        fence()
-#define smp_rmb()       fence()
-#define smp_wmb()       barrier()
+#define __smp_mb()        metag_fence()
+#define __smp_rmb()       metag_fence()
+#define __smp_wmb()       barrier()
 #else
-#define fence()		do { } while (0)
-#define smp_mb()        barrier()
-#define smp_rmb()       barrier()
-#define smp_wmb()       barrier()
+#define metag_fence()		do { } while (0)
+#define __smp_mb()        barrier()
+#define __smp_rmb()       barrier()
+#define __smp_wmb()       barrier()
 #endif
+
+#ifdef CONFIG_SMP
+#define fence() metag_fence()
+#else
+#define fence()		do { } while (0)
 #endif
 
-#define smp_mb__before_atomic()	barrier()
-#define smp_mb__after_atomic()	barrier()
+#define __smp_mb__before_atomic()	barrier()
+#define __smp_mb__after_atomic()	barrier()
 
 #include <asm-generic/barrier.h>
 
-- 
MST


  parent reply	other threads:[~2015-12-30 13:25 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-30 12:58 [PATCH 00/34] arch: barrier cleanup + __smp_xxx barriers for virt Michael S. Tsirkin
2015-12-30 12:58 ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 00/34] arch: barrier cleanup + __smp_XXX " Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 01/34] Documentation/memory-barriers.txt: document __smb_mb() Michael S. Tsirkin
2015-12-30 13:24   ` Michael S. Tsirkin
2016-01-04 11:08     ` Stefano Stabellini
2016-01-04 11:08     ` Stefano Stabellini
2016-01-04 11:08       ` Stefano Stabellini
2016-01-04 11:27       ` Michael S. Tsirkin
2016-01-04 11:27       ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 02/34] asm-generic: guard smp_store_release/load_acquire Michael S. Tsirkin
2015-12-30 13:24   ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 03/34] ia64: rename nop->iosapic_nop Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 16:39     ` Luck, Tony
2015-12-30 16:39       ` Luck, Tony
2015-12-30 13:24   ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 04/34] ia64: reuse asm-generic/barrier.h Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 16:41     ` Luck, Tony
2015-12-30 16:41     ` Luck, Tony
2015-12-30 13:24   ` [PATCH 05/34] powerpc: " Michael S. Tsirkin
2015-12-30 13:24   ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 06/34] s390: " Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 07/34] sparc: " Michael S. Tsirkin
2015-12-30 13:24   ` Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 17:56     ` David Miller
2015-12-30 17:56       ` David Miller
2015-12-30 19:55       ` Michael S. Tsirkin
2015-12-30 19:55         ` Michael S. Tsirkin
2015-12-30 19:55         ` Michael S. Tsirkin
2015-12-30 20:47         ` David Miller
2015-12-30 20:47           ` David Miller
2015-12-30 20:47           ` David Miller
2015-12-30 17:56     ` David Miller
2015-12-30 13:24   ` [PATCH 08/34] asm-generic: smp_store_mb should use smp_mb Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 13:44     ` Arnd Bergmann
2015-12-30 13:44     ` Arnd Bergmann
2015-12-30 20:30       ` Michael S. Tsirkin
2015-12-30 22:43         ` Arnd Bergmann
2015-12-30 22:43         ` Arnd Bergmann
2015-12-30 20:30       ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 09/34] arm: reuse asm-generic/barrier.h Michael S. Tsirkin
2015-12-30 13:24   ` Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 13:24   ` [PATCH 10/34] arm64: " Michael S. Tsirkin
2015-12-30 13:24     ` Michael S. Tsirkin
2015-12-30 13:24   ` Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 11/34] metag: " Michael S. Tsirkin
2015-12-30 13:25   ` Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 12/34] mips: " Michael S. Tsirkin
2015-12-30 13:25   ` Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 13/34] x86/um: " Michael S. Tsirkin
2015-12-30 13:25   ` Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 14/34] x86: " Michael S. Tsirkin
2015-12-30 13:25   ` Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 15/34] asm-generic: add __smp_XXX wrappers Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 15/34] asm-generic: add __smp_xxx wrappers Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 16/34] powerpc: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:25   ` Michael S. Tsirkin
2015-12-30 13:25     ` Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 16/34] powerpc: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 17/34] arm64: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:25   ` Michael S. Tsirkin
2015-12-30 13:25     ` Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 17/34] arm64: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 18/34] arm: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:25   ` Michael S. Tsirkin
2015-12-30 13:25     ` Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 18/34] arm: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 19/34] blackfin: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 19/34] blackfin: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 20/34] ia64: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 20/34] ia64: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25     ` Michael S. Tsirkin
2015-12-30 16:43     ` [PATCH 20/34] ia64: define __smp_XXX Luck, Tony
2015-12-30 13:25   ` Michael S. Tsirkin [this message]
2015-12-30 13:25     ` [PATCH 21/34] metag: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 22/34] mips: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 22/34] mips: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 22/34] mips: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 23/34] s390: " Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 23/34] s390: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:25   ` [PATCH 24/34] sh: define __smp_XXX, fix smp_store_mb for !SMP Michael S. Tsirkin
2015-12-30 13:25     ` [PATCH 24/34] sh: define __smp_xxx, " Michael S. Tsirkin
2015-12-30 13:25     ` Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 25/34] sparc: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:26     ` [PATCH 25/34] sparc: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:26     ` Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 26/34] tile: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:26     ` [PATCH 26/34] tile: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 27/34] xtensa: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:26     ` [PATCH 27/34] xtensa: define __smp_xxx Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 28/34] x86: define __smp_XXX Michael S. Tsirkin
2015-12-30 13:26     ` [PATCH 28/34] x86: define __smp_xxX Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 29/34] Revert "virtio_ring: Update weak barriers to use dma_wmb/rmb" Michael S. Tsirkin
2015-12-30 13:26   ` Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 30/34] virtio_ring: update weak barriers to use __smp_XXX Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 31/34] xenbus: use __smp_XXX barriers Michael S. Tsirkin
2015-12-30 13:26   ` Michael S. Tsirkin
2015-12-30 13:26     ` [PATCH 31/34] xenbus: use __smp_xxx barriers Michael S. Tsirkin
2016-01-04 11:58     ` [PATCH 31/34] xenbus: use __smp_XXX barriers Stefano Stabellini
2016-01-04 11:58     ` Stefano Stabellini
2015-12-30 13:26   ` [PATCH 32/34] xen/io: " Michael S. Tsirkin
2015-12-30 13:26   ` Michael S. Tsirkin
2015-12-30 13:26     ` [PATCH 32/34] xen/io: use __smp_xxx barriers Michael S. Tsirkin
2016-01-04 11:59     ` [PATCH 32/34] xen/io: use __smp_XXX barriers Stefano Stabellini
2016-01-04 11:59     ` Stefano Stabellini
2015-12-30 13:26   ` [PATCH 33/34] virtio: use __smp_load_acquire/__smp_store_release Michael S. Tsirkin
2015-12-30 13:26   ` Michael S. Tsirkin
2015-12-30 13:26   ` [PATCH 34/34] virtio_ring: use __smp_store_mb Michael S. Tsirkin
2015-12-30 13:26   ` Michael S. Tsirkin
2015-12-30 13:49   ` [PATCH 00/34] arch: barrier cleanup + __smp_XXX barriers for virt Arnd Bergmann
2015-12-30 21:45     ` [PATCH 00/34] arch: barrier cleanup + __smp_xxx " Michael S. Tsirkin
2015-12-30 21:45     ` Michael S. Tsirkin
2015-12-30 22:45       ` Arnd Bergmann
2015-12-30 22:45       ` Arnd Bergmann
2015-12-30 20:46   ` David Miller
2015-12-30 20:46     ` David Miller
2015-12-30 21:36     ` Michael S. Tsirkin
2015-12-30 21:59       ` David Miller
2015-12-30 21:59         ` David Miller
2015-12-30 21:36     ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1451473761-30019-22-git-send-email-mst@redhat.com \
    --to=mst@redhat.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=andreyknvl@google.com \
    --cc=arnd@arndb.de \
    --cc=james.hogan@imgtec.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-metag@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=ralf@linux-mips.org \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.