From: "Michael S. Tsirkin" <mst@redhat.com> To: Peter Zijlstra <peterz@infradead.org> Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jason Wang <jasowang@redhat.com>, Rusty Russell <rusty@rustcorp.com.au>, qemu-devel@nongnu.org, Alexander Duyck <alexander.duyck@gmail.com>, linux-kernel@vger.kernel.org, David Vrabel <david.vrabel@citrix.com>, xen-devel@lists.xenproject.org, Boris Ostrovsky <boris.ostrovsky@oracle.com>, virtualization@lists.linux-foundation.org, Arnd Bergmann <arnd@arndb.de>, linux-arch@vger.kernel.org Subject: [PATCH RFC] smp_store_mb should use smp_mb Date: Mon, 21 Dec 2015 09:22:18 +0200 [thread overview] Message-ID: <20151221091130-mutt-send-email-mst@redhat.com> (raw) In-Reply-To: <20151221085947-mutt-send-email-mst@redhat.com> On some architectures smp_store_mb() calls mb() which is stronger than implied by both the name and the documentation. smp_store_mb is only used by core kernel code at the moment, so we know no one mis-uses it for an MMIO barrier. Make it call smp_mb consistently before some arch-specific code uses it as such by mistake. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- Note: I'm guessing an ack from arch maintainers will be needed, but I'm working on a bigger cleanup moving a bunch of duplicated code into asm-generic/barrier.h which depends on this, so not Cc'ing widely yet. Please Ack if appropriate but do not merge yet. diff --git a/arch/ia64/include/asm/barrier.h b/arch/ia64/include/asm/barrier.h index df896a1..425552b 100644 --- a/arch/ia64/include/asm/barrier.h +++ b/arch/ia64/include/asm/barrier.h @@ -77,7 +77,7 @@ do { \ ___p1; \ }) -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) /* * The group barrier in front of the rsm & ssm are necessary to ensure diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h index 0eca6ef..4f0169e 100644 --- a/arch/powerpc/include/asm/barrier.h +++ b/arch/powerpc/include/asm/barrier.h @@ -34,7 +34,7 @@ #define rmb() __asm__ __volatile__ ("sync" : : : "memory") #define wmb() __asm__ __volatile__ ("sync" : : : "memory") -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) #ifdef __SUBARCH_HAS_LWSYNC # define SMPWMB LWSYNC diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h index d68e11e..6c1d8b5 100644 --- a/arch/s390/include/asm/barrier.h +++ b/arch/s390/include/asm/barrier.h @@ -36,7 +36,7 @@ #define smp_mb__before_atomic() smp_mb() #define smp_mb__after_atomic() smp_mb() -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) #define smp_store_release(p, v) \ do { \ diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h index b42afad..0f45f93 100644 --- a/include/asm-generic/barrier.h +++ b/include/asm-generic/barrier.h @@ -93,7 +93,7 @@ #endif /* CONFIG_SMP */ #ifndef smp_store_mb -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) #endif #ifndef smp_mb__before_atomic
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com> To: Peter Zijlstra <peterz@infradead.org> Cc: linux-arch@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>, Andrew Cooper <andrew.cooper3@citrix.com>, Jason Wang <jasowang@redhat.com>, Rusty Russell <rusty@rustcorp.com.au>, qemu-devel@nongnu.org, Alexander Duyck <alexander.duyck@gmail.com>, linux-kernel@vger.kernel.org, David Vrabel <david.vrabel@citrix.com>, xen-devel@lists.xenproject.org, Boris Ostrovsky <boris.ostrovsky@oracle.com>, virtualization@lists.linux-foundation.org Subject: [Qemu-devel] [PATCH RFC] smp_store_mb should use smp_mb Date: Mon, 21 Dec 2015 09:22:18 +0200 [thread overview] Message-ID: <20151221091130-mutt-send-email-mst@redhat.com> (raw) In-Reply-To: <20151221085947-mutt-send-email-mst@redhat.com> On some architectures smp_store_mb() calls mb() which is stronger than implied by both the name and the documentation. smp_store_mb is only used by core kernel code at the moment, so we know no one mis-uses it for an MMIO barrier. Make it call smp_mb consistently before some arch-specific code uses it as such by mistake. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> --- Note: I'm guessing an ack from arch maintainers will be needed, but I'm working on a bigger cleanup moving a bunch of duplicated code into asm-generic/barrier.h which depends on this, so not Cc'ing widely yet. Please Ack if appropriate but do not merge yet. diff --git a/arch/ia64/include/asm/barrier.h b/arch/ia64/include/asm/barrier.h index df896a1..425552b 100644 --- a/arch/ia64/include/asm/barrier.h +++ b/arch/ia64/include/asm/barrier.h @@ -77,7 +77,7 @@ do { \ ___p1; \ }) -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) /* * The group barrier in front of the rsm & ssm are necessary to ensure diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h index 0eca6ef..4f0169e 100644 --- a/arch/powerpc/include/asm/barrier.h +++ b/arch/powerpc/include/asm/barrier.h @@ -34,7 +34,7 @@ #define rmb() __asm__ __volatile__ ("sync" : : : "memory") #define wmb() __asm__ __volatile__ ("sync" : : : "memory") -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) #ifdef __SUBARCH_HAS_LWSYNC # define SMPWMB LWSYNC diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h index d68e11e..6c1d8b5 100644 --- a/arch/s390/include/asm/barrier.h +++ b/arch/s390/include/asm/barrier.h @@ -36,7 +36,7 @@ #define smp_mb__before_atomic() smp_mb() #define smp_mb__after_atomic() smp_mb() -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) #define smp_store_release(p, v) \ do { \ diff --git a/include/asm-generic/barrier.h b/include/asm-generic/barrier.h index b42afad..0f45f93 100644 --- a/include/asm-generic/barrier.h +++ b/include/asm-generic/barrier.h @@ -93,7 +93,7 @@ #endif /* CONFIG_SMP */ #ifndef smp_store_mb -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); mb(); } while (0) +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0) #endif #ifndef smp_mb__before_atomic
next prev parent reply other threads:[~2015-12-21 7:22 UTC|newest] Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-12-17 10:32 [PATCH] virtio_ring: use smp_store_mb Michael S. Tsirkin 2015-12-17 10:32 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-17 10:52 ` Peter Zijlstra 2015-12-17 10:52 ` Peter Zijlstra 2015-12-17 10:52 ` [Qemu-devel] " Peter Zijlstra 2015-12-17 13:16 ` Michael S. Tsirkin 2015-12-17 13:16 ` Michael S. Tsirkin 2015-12-17 13:16 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-17 13:57 ` Peter Zijlstra 2015-12-17 13:57 ` Peter Zijlstra 2015-12-17 13:57 ` [Qemu-devel] " Peter Zijlstra 2015-12-17 14:33 ` Michael S. Tsirkin 2015-12-17 14:33 ` Michael S. Tsirkin 2015-12-17 14:33 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-17 14:39 ` Peter Zijlstra 2015-12-17 14:39 ` Peter Zijlstra 2015-12-17 14:39 ` [Qemu-devel] " Peter Zijlstra 2015-12-17 14:43 ` Michael S. Tsirkin 2015-12-17 14:43 ` Michael S. Tsirkin 2015-12-17 14:43 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-20 9:25 ` new barrier type for paravirt (was Re: [PATCH] virtio_ring: use smp_store_mb) Michael S. Tsirkin 2015-12-20 9:25 ` Michael S. Tsirkin 2015-12-20 9:25 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-20 17:07 ` Andrew Cooper 2015-12-20 17:07 ` [Xen-devel] " Andrew Cooper 2015-12-20 17:07 ` Andrew Cooper 2015-12-20 17:07 ` [Qemu-devel] " Andrew Cooper 2015-12-20 19:59 ` Peter Zijlstra 2015-12-20 19:59 ` Peter Zijlstra 2015-12-20 19:59 ` [Qemu-devel] " Peter Zijlstra 2015-12-21 7:10 ` Michael S. Tsirkin 2015-12-21 7:10 ` [Xen-devel] " Michael S. Tsirkin 2015-12-21 7:10 ` Michael S. Tsirkin 2015-12-21 7:10 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-21 7:22 ` [PATCH RFC] smp_store_mb should use smp_mb Michael S. Tsirkin 2015-12-21 7:22 ` Michael S. Tsirkin 2015-12-21 7:22 ` Michael S. Tsirkin [this message] 2015-12-21 7:22 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-20 19:59 ` new barrier type for paravirt (was Re: [PATCH] virtio_ring: use smp_store_mb) Peter Zijlstra 2015-12-21 10:47 ` David Vrabel 2015-12-21 10:47 ` [Xen-devel] " David Vrabel 2015-12-21 10:47 ` David Vrabel 2015-12-21 10:47 ` [Qemu-devel] " David Vrabel 2015-12-21 11:52 ` Michael S. Tsirkin 2015-12-21 11:52 ` [Xen-devel] " Michael S. Tsirkin 2015-12-21 11:52 ` Michael S. Tsirkin 2015-12-21 11:52 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-21 14:50 ` Stefano Stabellini 2015-12-21 14:50 ` Stefano Stabellini 2015-12-21 14:50 ` Stefano Stabellini 2015-12-21 14:50 ` Stefano Stabellini 2015-12-21 14:50 ` [Qemu-devel] " Stefano Stabellini 2015-12-20 9:25 ` Michael S. Tsirkin 2015-12-17 11:22 ` [PATCH] virtio_ring: use smp_store_mb Peter Zijlstra 2015-12-17 11:22 ` [Qemu-devel] " Peter Zijlstra 2015-12-17 13:26 ` Michael S. Tsirkin 2015-12-17 13:26 ` Michael S. Tsirkin 2015-12-17 13:26 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-17 14:02 ` Peter Zijlstra 2015-12-17 14:02 ` Peter Zijlstra 2015-12-17 14:02 ` [Qemu-devel] " Peter Zijlstra 2015-12-17 14:34 ` Michael S. Tsirkin 2015-12-17 14:34 ` Michael S. Tsirkin 2015-12-17 14:34 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-17 15:09 ` Peter Zijlstra 2015-12-17 15:09 ` Peter Zijlstra 2015-12-17 15:09 ` [Qemu-devel] " Peter Zijlstra 2015-12-17 15:52 ` Will Deacon 2015-12-17 15:52 ` Will Deacon 2015-12-17 15:52 ` [Qemu-devel] " Will Deacon 2015-12-17 19:21 ` Michael S. Tsirkin 2015-12-17 19:21 ` Michael S. Tsirkin 2015-12-17 19:21 ` [Qemu-devel] " Michael S. Tsirkin 2015-12-17 11:22 ` Peter Zijlstra
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=20151221091130-mutt-send-email-mst@redhat.com \ --to=mst@redhat.com \ --cc=alexander.duyck@gmail.com \ --cc=andrew.cooper3@citrix.com \ --cc=arnd@arndb.de \ --cc=boris.ostrovsky@oracle.com \ --cc=david.vrabel@citrix.com \ --cc=jasowang@redhat.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=peterz@infradead.org \ --cc=qemu-devel@nongnu.org \ --cc=rusty@rustcorp.com.au \ --cc=virtualization@lists.linux-foundation.org \ --cc=xen-devel@lists.xenproject.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: linkBe 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.