Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1299746 > unrolled thread
| Started by | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| First post | 2015-12-31 20:10 +0100 |
| Last post | 2016-01-01 11:30 +0100 |
| Articles | 20 on this page of 74 — 14 participants |
Back to article view | Back to linux.kernel
[PATCH v2 00/34] arch: barrier cleanup + barriers for virt "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
[PATCH v2 08/32] arm: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
Re: [PATCH v2 08/32] arm: reuse asm-generic/barrier.h Russell King - ARM Linux <linux@arm.linux.org.uk> - 2016-01-02 12:30 +0100
[PATCH v2 27/32] x86: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
[PATCH v2 04/32] ia64: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
[PATCH v2 22/32] s390: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx Peter Zijlstra <peterz@infradead.org> - 2016-01-04 14:50 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-04 21:20 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx Martin Schwidefsky <schwidefsky@de.ibm.com> - 2016-01-05 09:20 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-05 10:40 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx Martin Schwidefsky <schwidefsky@de.ibm.com> - 2016-01-05 13:10 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-05 14:10 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx Martin Schwidefsky <schwidefsky@de.ibm.com> - 2016-01-05 15:30 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx Christian Borntraeger <borntraeger@de.ibm.com> - 2016-01-05 16:50 +0100
Re: [PATCH v2 22/32] s390: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-05 17:10 +0100
[PATCH v2 15/32] powerpc: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
Re: [PATCH v2 15/32] powerpc: define __smp_xxx Boqun Feng <boqun.feng@gmail.com> - 2016-01-05 02:40 +0100
Re: [PATCH v2 15/32] powerpc: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-05 10:00 +0100
Re: [PATCH v2 15/32] powerpc: define __smp_xxx Boqun Feng <boqun.feng@gmail.com> - 2016-01-05 11:00 +0100
Re: [PATCH v2 15/32] powerpc: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-05 17:20 +0100
Re: [PATCH v2 15/32] powerpc: define __smp_xxx Boqun Feng <boqun.feng@gmail.com> - 2016-01-06 03:00 +0100
Re: [PATCH v2 15/32] powerpc: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-06 21:30 +0100
Re: [PATCH v2 15/32] powerpc: define __smp_xxx Boqun Feng <boqun.feng@gmail.com> - 2016-01-07 01:50 +0100
[PATCH v2 12/32] x86/um: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
Re: [PATCH v2 12/32] x86/um: reuse asm-generic/barrier.h Richard Weinberger <richard@nod.at> - 2016-01-06 00:20 +0100
[PATCH v2 10/32] metag: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
Re: [PATCH v2 10/32] metag: reuse asm-generic/barrier.h James Hogan <james.hogan@imgtec.com> - 2016-01-05 00:30 +0100
[PATCH v2 16/32] arm64: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
[PATCH v2 03/32] ia64: rename nop->iosapic_nop "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
[PATCH v2 06/32] s390: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:10 +0100
Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h Peter Zijlstra <peterz@infradead.org> - 2016-01-04 14:30 +0100
Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h Martin Schwidefsky <schwidefsky@de.ibm.com> - 2016-01-04 16:10 +0100
Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-04 21:50 +0100
Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h Martin Schwidefsky <schwidefsky@de.ibm.com> - 2016-01-05 09:10 +0100
Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-04 21:40 +0100
[PATCH v2 21/32] mips: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
[PATCH v2 09/32] arm64: reuse asm-generic/barrier.h "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
[PATCH v2 32/32] virtio_ring: use virt_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
Re: [PATCH v2 32/32] virtio_ring: use virt_store_mb Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> - 2016-01-01 18:30 +0100
Re: [PATCH v2 32/32] virtio_ring: use virt_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-03 10:10 +0100
[PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Peter Zijlstra <peterz@infradead.org> - 2016-01-04 15:10 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rich Felker <dalias@libc.org> - 2016-01-06 00:40 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-06 12:20 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Peter Zijlstra <peterz@infradead.org> - 2016-01-06 12:50 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-06 13:00 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Peter Zijlstra <peterz@infradead.org> - 2016-01-06 15:40 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rob Landley <rob@landley.net> - 2016-01-06 16:50 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Peter Zijlstra <peterz@infradead.org> - 2016-01-06 18:00 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rob Landley <rob@landley.net> - 2016-01-06 21:30 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Geert Uytterhoeven <geert@linux-m68k.org> - 2016-01-06 20:00 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rich Felker <dalias@libc.org> - 2016-01-06 19:30 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-06 21:30 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rich Felker <dalias@libc.org> - 2016-01-07 01:00 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Peter Zijlstra <peterz@infradead.org> - 2016-01-07 14:40 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rich Felker <dalias@libc.org> - 2016-01-07 20:10 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-07 17:00 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-07 18:50 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rich Felker <dalias@libc.org> - 2016-01-07 20:20 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-07 23:50 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Rich Felker <dalias@libc.org> - 2016-01-08 05:30 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-08 08:30 +0100
Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-06 23:20 +0100
[PATCH v2 33/34] xenbus: use virt_xxx barriers "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
Re: [Xen-devel] [PATCH v2 33/34] xenbus: use virt_xxx barriers David Vrabel <david.vrabel@citrix.com> - 2016-01-04 12:40 +0100
Re: [PATCH v2 33/34] xenbus: use virt_xxx barriers Stefano Stabellini <stefano.stabellini@eu.citrix.com> - 2016-01-04 13:10 +0100
Re: [PATCH v2 33/34] xenbus: use virt_xxx barriers Peter Zijlstra <peterz@infradead.org> - 2016-01-04 15:20 +0100
[PATCH v2 26/32] xtensa: define __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
[PATCH v2 34/34] xen/io: use virt_xxx barriers "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
Re: [Xen-devel] [PATCH v2 34/34] xen/io: use virt_xxx barriers David Vrabel <david.vrabel@citrix.com> - 2016-01-04 12:40 +0100
Re: [PATCH v2 34/34] xen/io: use virt_xxx barriers Stefano Stabellini <stefano.stabellini@eu.citrix.com> - 2016-01-04 13:10 +0100
[PATCH v2 02/32] asm-generic: guard smp_store_release/load_acquire "Michael S. Tsirkin" <mst@redhat.com> - 2015-12-31 20:20 +0100
[PATCH v2 30/32] virtio_ring: update weak barriers to use __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-01 10:40 +0100
Re: [PATCH v2 30/32] virtio_ring: update weak barriers to use __smp_xxx "Michael S. Tsirkin" <mst@redhat.com> - 2016-01-01 11:30 +0100
Page 2 of 4 — ← Prev page 1 [2] 3 4 Next page →
| From | Boqun Feng <boqun.feng@gmail.com> |
|---|---|
| Date | 2016-01-06 03:00 +0100 |
| Subject | Re: [PATCH v2 15/32] powerpc: define __smp_xxx |
| Message-ID | <qNLyi-2LD-5@gated-at.bofh.it> |
| In reply to | #1301665 |
On Tue, Jan 05, 2016 at 06:16:48PM +0200, Michael S. Tsirkin wrote:
[snip]
> > > > Another thing is that smp_lwsync() may have a third user(other than
> > > > smp_load_acquire() and smp_store_release()):
> > > >
> > > > http://article.gmane.org/gmane.linux.ports.ppc.embedded/89877
> > > >
> > > > I'm OK to change my patch accordingly, but do we really want
> > > > smp_lwsync() get involved in this cleanup? If I understand you
> > > > correctly, this cleanup focuses on external API like smp_{r,w,}mb(),
> > > > while smp_lwsync() is internal to PPC.
> > > >
> > > > Regards,
> > > > Boqun
> > >
> > > I think you missed the leading ___ :)
> > >
> >
> > What I mean here was smp_lwsync() was originally internal to PPC, but
> > never mind ;-)
> >
> > > smp_store_release is external and it needs __smp_lwsync as
> > > defined here.
> > >
> > > I can duplicate some code and have smp_lwsync *not* call __smp_lwsync
> >
> > You mean bringing smp_lwsync() back? because I haven't seen you defining
> > in asm-generic/barriers.h in previous patches and you just delete it in
> > this patch.
> >
> > > but why do this? Still, if you prefer it this way,
> > > please let me know.
> > >
> >
> > I think deleting smp_lwsync() is fine, though I need to change atomic
> > variants patches on PPC because of it ;-/
> >
> > Regards,
> > Boqun
>
> Sorry, I don't understand - why do you have to do anything?
> I changed all users of smp_lwsync so they
> use __smp_lwsync on SMP and barrier() on !SMP.
>
> This is exactly the current behaviour, I also tested that
> generated code does not change at all.
>
> Is there a patch in your tree that conflicts with this?
>
Because in a patchset which implements atomic relaxed/acquire/release
variants on PPC I use smp_lwsync(), this makes it have another user,
please see this mail:
http://article.gmane.org/gmane.linux.ports.ppc.embedded/89877
in definition of PPC's __atomic_op_release().
But I think removing smp_lwsync() is a good idea and actually I think we
can go further to remove __smp_lwsync() and let __smp_load_acquire and
__smp_store_release call __lwsync() directly, but that is another thing.
Anyway, I will modify my patch.
Regards,
Boqun
>
> > > > > WRITE_ONCE(*p, v); \
> > > > > } while (0)
> > > > >
> > > > > -#define smp_load_acquire(p) \
> > > > > +#define __smp_load_acquire(p) \
> > > > > ({ \
> > > > > typeof(*p) ___p1 = READ_ONCE(*p); \
> > > > > compiletime_assert_atomic_type(*p); \
> > > > > - smp_lwsync(); \
> > > > > + __smp_lwsync(); \
> > > > > ___p1; \
> > > > > })
> > > > >
> > > > > --
> > > > > MST
> > > > >
> > > > > --
> > > > > 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/
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2016-01-06 21:30 +0100 |
| Subject | Re: [PATCH v2 15/32] powerpc: define __smp_xxx |
| Message-ID | <qO2Su-5Zm-21@gated-at.bofh.it> |
| In reply to | #1302328 |
On Wed, Jan 06, 2016 at 09:51:52AM +0800, Boqun Feng wrote:
> On Tue, Jan 05, 2016 at 06:16:48PM +0200, Michael S. Tsirkin wrote:
> [snip]
> > > > > Another thing is that smp_lwsync() may have a third user(other than
> > > > > smp_load_acquire() and smp_store_release()):
> > > > >
> > > > > http://article.gmane.org/gmane.linux.ports.ppc.embedded/89877
> > > > >
> > > > > I'm OK to change my patch accordingly, but do we really want
> > > > > smp_lwsync() get involved in this cleanup? If I understand you
> > > > > correctly, this cleanup focuses on external API like smp_{r,w,}mb(),
> > > > > while smp_lwsync() is internal to PPC.
> > > > >
> > > > > Regards,
> > > > > Boqun
> > > >
> > > > I think you missed the leading ___ :)
> > > >
> > >
> > > What I mean here was smp_lwsync() was originally internal to PPC, but
> > > never mind ;-)
> > >
> > > > smp_store_release is external and it needs __smp_lwsync as
> > > > defined here.
> > > >
> > > > I can duplicate some code and have smp_lwsync *not* call __smp_lwsync
> > >
> > > You mean bringing smp_lwsync() back? because I haven't seen you defining
> > > in asm-generic/barriers.h in previous patches and you just delete it in
> > > this patch.
> > >
> > > > but why do this? Still, if you prefer it this way,
> > > > please let me know.
> > > >
> > >
> > > I think deleting smp_lwsync() is fine, though I need to change atomic
> > > variants patches on PPC because of it ;-/
> > >
> > > Regards,
> > > Boqun
> >
> > Sorry, I don't understand - why do you have to do anything?
> > I changed all users of smp_lwsync so they
> > use __smp_lwsync on SMP and barrier() on !SMP.
> >
> > This is exactly the current behaviour, I also tested that
> > generated code does not change at all.
> >
> > Is there a patch in your tree that conflicts with this?
> >
>
> Because in a patchset which implements atomic relaxed/acquire/release
> variants on PPC I use smp_lwsync(), this makes it have another user,
> please see this mail:
>
> http://article.gmane.org/gmane.linux.ports.ppc.embedded/89877
>
> in definition of PPC's __atomic_op_release().
>
>
> But I think removing smp_lwsync() is a good idea and actually I think we
> can go further to remove __smp_lwsync() and let __smp_load_acquire and
> __smp_store_release call __lwsync() directly, but that is another thing.
>
> Anyway, I will modify my patch.
>
> Regards,
> Boqun
Thanks!
Could you send an ack then please?
> >
> > > > > > WRITE_ONCE(*p, v); \
> > > > > > } while (0)
> > > > > >
> > > > > > -#define smp_load_acquire(p) \
> > > > > > +#define __smp_load_acquire(p) \
> > > > > > ({ \
> > > > > > typeof(*p) ___p1 = READ_ONCE(*p); \
> > > > > > compiletime_assert_atomic_type(*p); \
> > > > > > - smp_lwsync(); \
> > > > > > + __smp_lwsync(); \
> > > > > > ___p1; \
> > > > > > })
> > > > > >
> > > > > > --
> > > > > > MST
> > > > > >
> > > > > > --
> > > > > > 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/
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Boqun Feng <boqun.feng@gmail.com> |
|---|---|
| Date | 2016-01-07 01:50 +0100 |
| Subject | Re: [PATCH v2 15/32] powerpc: define __smp_xxx |
| Message-ID | <qO6W5-jS-1@gated-at.bofh.it> |
| In reply to | #1303042 |
[Multipart message — attachments visible in raw view] — view raw
On Wed, Jan 06, 2016 at 10:23:51PM +0200, Michael S. Tsirkin wrote: [...] > > > > > > Sorry, I don't understand - why do you have to do anything? > > > I changed all users of smp_lwsync so they > > > use __smp_lwsync on SMP and barrier() on !SMP. > > > > > > This is exactly the current behaviour, I also tested that > > > generated code does not change at all. > > > > > > Is there a patch in your tree that conflicts with this? > > > > > > > Because in a patchset which implements atomic relaxed/acquire/release > > variants on PPC I use smp_lwsync(), this makes it have another user, > > please see this mail: > > > > http://article.gmane.org/gmane.linux.ports.ppc.embedded/89877 > > > > in definition of PPC's __atomic_op_release(). > > > > > > But I think removing smp_lwsync() is a good idea and actually I think we > > can go further to remove __smp_lwsync() and let __smp_load_acquire and > > __smp_store_release call __lwsync() directly, but that is another thing. > > > > Anyway, I will modify my patch. > > > > Regards, > > Boqun > > > Thanks! > Could you send an ack then please? > Sure, if you need one from me, feel free to add my ack for this patch: Acked-by: Boqun Feng <boqun.feng@gmail.com> Regards, Boqun
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:10 +0100 |
| Subject | [PATCH v2 12/32] x86/um: reuse asm-generic/barrier.h |
| Message-ID | <qLQLN-8pu-59@gated-at.bofh.it> |
| In reply to | #1299746 |
On x86/um CONFIG_SMP is never defined. As a result, several macros
match the asm-generic variant exactly. Drop the local definitions and
pull in asm-generic/barrier.h instead.
This is in preparation to refactoring this code area.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/x86/um/asm/barrier.h | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/arch/x86/um/asm/barrier.h b/arch/x86/um/asm/barrier.h
index 755481f..174781a 100644
--- a/arch/x86/um/asm/barrier.h
+++ b/arch/x86/um/asm/barrier.h
@@ -36,13 +36,6 @@
#endif /* CONFIG_X86_PPRO_FENCE */
#define dma_wmb() barrier()
-#define smp_mb() barrier()
-#define smp_rmb() barrier()
-#define smp_wmb() barrier()
-
-#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); barrier(); } while (0)
-
-#define read_barrier_depends() do { } while (0)
-#define smp_read_barrier_depends() do { } while (0)
+#include <asm-generic/barrier.h>
#endif
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Richard Weinberger <richard@nod.at> |
|---|---|
| Date | 2016-01-06 00:20 +0100 |
| Subject | Re: [PATCH v2 12/32] x86/um: reuse asm-generic/barrier.h |
| Message-ID | <qNJ3s-1f2-9@gated-at.bofh.it> |
| In reply to | #1299752 |
Am 31.12.2015 um 20:07 schrieb Michael S. Tsirkin: > On x86/um CONFIG_SMP is never defined. As a result, several macros > match the asm-generic variant exactly. Drop the local definitions and > pull in asm-generic/barrier.h instead. > > This is in preparation to refactoring this code area. > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com> > Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Richard Weinberger <richard@nod.at> Thanks, //richard -- 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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:10 +0100 |
| Subject | [PATCH v2 10/32] metag: reuse asm-generic/barrier.h |
| Message-ID | <qLQLN-8pu-57@gated-at.bofh.it> |
| In reply to | #1299746 |
On metag dma_rmb, dma_wmb, smp_store_mb, read_barrier_depends,
smp_read_barrier_depends, smp_store_release and smp_load_acquire match
the asm-generic variants exactly. Drop the local definitions and pull in
asm-generic/barrier.h instead.
This is in preparation to refactoring this code area.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/metag/include/asm/barrier.h | 25 ++-----------------------
1 file changed, 2 insertions(+), 23 deletions(-)
diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
index 172b7e5..b5b778b 100644
--- a/arch/metag/include/asm/barrier.h
+++ b/arch/metag/include/asm/barrier.h
@@ -44,9 +44,6 @@ static inline void wr_fence(void)
#define rmb() barrier()
#define wmb() mb()
-#define dma_rmb() rmb()
-#define dma_wmb() wmb()
-
#ifndef CONFIG_SMP
#define fence() do { } while (0)
#define smp_mb() barrier()
@@ -81,27 +78,9 @@ static inline void fence(void)
#endif
#endif
-#define read_barrier_depends() do { } while (0)
-#define smp_read_barrier_depends() do { } while (0)
-
-#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0)
-
-#define smp_store_release(p, v) \
-do { \
- compiletime_assert_atomic_type(*p); \
- smp_mb(); \
- WRITE_ONCE(*p, v); \
-} while (0)
-
-#define smp_load_acquire(p) \
-({ \
- typeof(*p) ___p1 = READ_ONCE(*p); \
- compiletime_assert_atomic_type(*p); \
- smp_mb(); \
- ___p1; \
-})
-
#define smp_mb__before_atomic() barrier()
#define smp_mb__after_atomic() barrier()
+#include <asm-generic/barrier.h>
+
#endif /* _ASM_METAG_BARRIER_H */
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | James Hogan <james.hogan@imgtec.com> |
|---|---|
| Date | 2016-01-05 00:30 +0100 |
| Subject | Re: [PATCH v2 10/32] metag: reuse asm-generic/barrier.h |
| Message-ID | <qNmJA-1Nj-27@gated-at.bofh.it> |
| In reply to | #1299753 |
[Multipart message — attachments visible in raw view] — view raw
On Thu, Dec 31, 2015 at 09:07:02PM +0200, Michael S. Tsirkin wrote:
> On metag dma_rmb, dma_wmb, smp_store_mb, read_barrier_depends,
> smp_read_barrier_depends, smp_store_release and smp_load_acquire match
> the asm-generic variants exactly. Drop the local definitions and pull in
> asm-generic/barrier.h instead.
>
> This is in preparation to refactoring this code area.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
Looks good, and confirmed no text change (once patch 1 is applied that
is).
Acked-by: James Hogan <james.hogan@imgtec.com>
Thanks
James
> ---
> arch/metag/include/asm/barrier.h | 25 ++-----------------------
> 1 file changed, 2 insertions(+), 23 deletions(-)
>
> diff --git a/arch/metag/include/asm/barrier.h b/arch/metag/include/asm/barrier.h
> index 172b7e5..b5b778b 100644
> --- a/arch/metag/include/asm/barrier.h
> +++ b/arch/metag/include/asm/barrier.h
> @@ -44,9 +44,6 @@ static inline void wr_fence(void)
> #define rmb() barrier()
> #define wmb() mb()
>
> -#define dma_rmb() rmb()
> -#define dma_wmb() wmb()
> -
> #ifndef CONFIG_SMP
> #define fence() do { } while (0)
> #define smp_mb() barrier()
> @@ -81,27 +78,9 @@ static inline void fence(void)
> #endif
> #endif
>
> -#define read_barrier_depends() do { } while (0)
> -#define smp_read_barrier_depends() do { } while (0)
> -
> -#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0)
> -
> -#define smp_store_release(p, v) \
> -do { \
> - compiletime_assert_atomic_type(*p); \
> - smp_mb(); \
> - WRITE_ONCE(*p, v); \
> -} while (0)
> -
> -#define smp_load_acquire(p) \
> -({ \
> - typeof(*p) ___p1 = READ_ONCE(*p); \
> - compiletime_assert_atomic_type(*p); \
> - smp_mb(); \
> - ___p1; \
> -})
> -
> #define smp_mb__before_atomic() barrier()
> #define smp_mb__after_atomic() barrier()
>
> +#include <asm-generic/barrier.h>
> +
> #endif /* _ASM_METAG_BARRIER_H */
> --
> MST
>
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:10 +0100 |
| Subject | [PATCH v2 16/32] arm64: define __smp_xxx |
| Message-ID | <qLQLN-8pu-55@gated-at.bofh.it> |
| In reply to | #1299746 |
This defines __smp_xxx barriers for arm64,
for use by virtualization.
smp_xxx barriers are removed as they are
defined correctly by asm-generic/barriers.h
Note: arm64 does not support !SMP config,
so smp_xxx and __smp_xxx are always equivalent.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/arm64/include/asm/barrier.h | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h
index 91a43f4..dae5c49 100644
--- a/arch/arm64/include/asm/barrier.h
+++ b/arch/arm64/include/asm/barrier.h
@@ -35,11 +35,11 @@
#define dma_rmb() dmb(oshld)
#define dma_wmb() dmb(oshst)
-#define smp_mb() dmb(ish)
-#define smp_rmb() dmb(ishld)
-#define smp_wmb() dmb(ishst)
+#define __smp_mb() dmb(ish)
+#define __smp_rmb() dmb(ishld)
+#define __smp_wmb() dmb(ishst)
-#define smp_store_release(p, v) \
+#define __smp_store_release(p, v) \
do { \
compiletime_assert_atomic_type(*p); \
switch (sizeof(*p)) { \
@@ -62,7 +62,7 @@ do { \
} \
} while (0)
-#define smp_load_acquire(p) \
+#define __smp_load_acquire(p) \
({ \
union { typeof(*p) __val; char __c[1]; } __u; \
compiletime_assert_atomic_type(*p); \
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:10 +0100 |
| Subject | [PATCH v2 03/32] ia64: rename nop->iosapic_nop |
| Message-ID | <qLQLN-8pu-53@gated-at.bofh.it> |
| In reply to | #1299746 |
asm-generic/barrier.h defines a nop() macro.
To be able to use this header on ia64, we shouldn't
call local functions/variables nop().
There's one instance where this breaks on ia64:
rename the function to iosapic_nop to avoid the conflict.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Tony Luck <tony.luck@intel.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/ia64/kernel/iosapic.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c
index d2fae05..90fde5b 100644
--- a/arch/ia64/kernel/iosapic.c
+++ b/arch/ia64/kernel/iosapic.c
@@ -256,7 +256,7 @@ set_rte (unsigned int gsi, unsigned int irq, unsigned int dest, int mask)
}
static void
-nop (struct irq_data *data)
+iosapic_nop (struct irq_data *data)
{
/* do nothing... */
}
@@ -415,7 +415,7 @@ iosapic_unmask_level_irq (struct irq_data *data)
#define iosapic_shutdown_level_irq mask_irq
#define iosapic_enable_level_irq unmask_irq
#define iosapic_disable_level_irq mask_irq
-#define iosapic_ack_level_irq nop
+#define iosapic_ack_level_irq iosapic_nop
static struct irq_chip irq_type_iosapic_level = {
.name = "IO-SAPIC-level",
@@ -453,7 +453,7 @@ iosapic_ack_edge_irq (struct irq_data *data)
}
#define iosapic_enable_edge_irq unmask_irq
-#define iosapic_disable_edge_irq nop
+#define iosapic_disable_edge_irq iosapic_nop
static struct irq_chip irq_type_iosapic_edge = {
.name = "IO-SAPIC-edge",
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:10 +0100 |
| Subject | [PATCH v2 06/32] s390: reuse asm-generic/barrier.h |
| Message-ID | <qLQLN-8pu-61@gated-at.bofh.it> |
| In reply to | #1299746 |
On s390 read_barrier_depends, smp_read_barrier_depends
smp_store_mb(), smp_mb__before_atomic and smp_mb__after_atomic match the
asm-generic variants exactly. Drop the local definitions and pull in
asm-generic/barrier.h instead.
This is in preparation to refactoring this code area.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/s390/include/asm/barrier.h | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
index 7ffd0b1..c358c31 100644
--- a/arch/s390/include/asm/barrier.h
+++ b/arch/s390/include/asm/barrier.h
@@ -30,14 +30,6 @@
#define smp_rmb() rmb()
#define smp_wmb() wmb()
-#define read_barrier_depends() do { } while (0)
-#define smp_read_barrier_depends() do { } while (0)
-
-#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); smp_mb(); } while (0)
-
#define smp_store_release(p, v) \
do { \
compiletime_assert_atomic_type(*p); \
@@ -53,4 +45,6 @@ do { \
___p1; \
})
+#include <asm-generic/barrier.h>
+
#endif /* __ASM_BARRIER_H */
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Peter Zijlstra <peterz@infradead.org> |
|---|---|
| Date | 2016-01-04 14:30 +0100 |
| Subject | Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h |
| Message-ID | <qNdmV-40K-3@gated-at.bofh.it> |
| In reply to | #1299756 |
On Thu, Dec 31, 2015 at 09:06:30PM +0200, Michael S. Tsirkin wrote:
> On s390 read_barrier_depends, smp_read_barrier_depends
> smp_store_mb(), smp_mb__before_atomic and smp_mb__after_atomic match the
> asm-generic variants exactly. Drop the local definitions and pull in
> asm-generic/barrier.h instead.
>
> This is in preparation to refactoring this code area.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
> ---
> arch/s390/include/asm/barrier.h | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
> index 7ffd0b1..c358c31 100644
> --- a/arch/s390/include/asm/barrier.h
> +++ b/arch/s390/include/asm/barrier.h
> @@ -30,14 +30,6 @@
> #define smp_rmb() rmb()
> #define smp_wmb() wmb()
>
> -#define read_barrier_depends() do { } while (0)
> -#define smp_read_barrier_depends() do { } while (0)
> -
> -#define smp_mb__before_atomic() smp_mb()
> -#define smp_mb__after_atomic() smp_mb()
As per:
lkml.kernel.org/r/20150921112252.3c2937e1@mschwide
s390 should change this to barrier() instead of smp_mb() and hence
should not use the generic versions.
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Martin Schwidefsky <schwidefsky@de.ibm.com> |
|---|---|
| Date | 2016-01-04 16:10 +0100 |
| Subject | Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h |
| Message-ID | <qNeVI-55l-11@gated-at.bofh.it> |
| In reply to | #1300744 |
On Mon, 4 Jan 2016 14:20:42 +0100
Peter Zijlstra <peterz@infradead.org> wrote:
> On Thu, Dec 31, 2015 at 09:06:30PM +0200, Michael S. Tsirkin wrote:
> > On s390 read_barrier_depends, smp_read_barrier_depends
> > smp_store_mb(), smp_mb__before_atomic and smp_mb__after_atomic match the
> > asm-generic variants exactly. Drop the local definitions and pull in
> > asm-generic/barrier.h instead.
> >
> > This is in preparation to refactoring this code area.
> >
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> > arch/s390/include/asm/barrier.h | 10 ++--------
> > 1 file changed, 2 insertions(+), 8 deletions(-)
> >
> > diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
> > index 7ffd0b1..c358c31 100644
> > --- a/arch/s390/include/asm/barrier.h
> > +++ b/arch/s390/include/asm/barrier.h
> > @@ -30,14 +30,6 @@
> > #define smp_rmb() rmb()
> > #define smp_wmb() wmb()
> >
> > -#define read_barrier_depends() do { } while (0)
> > -#define smp_read_barrier_depends() do { } while (0)
> > -
> > -#define smp_mb__before_atomic() smp_mb()
> > -#define smp_mb__after_atomic() smp_mb()
>
> As per:
>
> lkml.kernel.org/r/20150921112252.3c2937e1@mschwide
>
> s390 should change this to barrier() instead of smp_mb() and hence
> should not use the generic versions.
Yes, we wanted to simplify this. Thanks for the reminder, I'll queue
a patch.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2016-01-04 21:50 +0100 |
| Subject | Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h |
| Message-ID | <qNkeL-8sV-23@gated-at.bofh.it> |
| In reply to | #1300795 |
On Mon, Jan 04, 2016 at 04:03:39PM +0100, Martin Schwidefsky wrote:
> On Mon, 4 Jan 2016 14:20:42 +0100
> Peter Zijlstra <peterz@infradead.org> wrote:
>
> > On Thu, Dec 31, 2015 at 09:06:30PM +0200, Michael S. Tsirkin wrote:
> > > On s390 read_barrier_depends, smp_read_barrier_depends
> > > smp_store_mb(), smp_mb__before_atomic and smp_mb__after_atomic match the
> > > asm-generic variants exactly. Drop the local definitions and pull in
> > > asm-generic/barrier.h instead.
> > >
> > > This is in preparation to refactoring this code area.
> > >
> > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > > ---
> > > arch/s390/include/asm/barrier.h | 10 ++--------
> > > 1 file changed, 2 insertions(+), 8 deletions(-)
> > >
> > > diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
> > > index 7ffd0b1..c358c31 100644
> > > --- a/arch/s390/include/asm/barrier.h
> > > +++ b/arch/s390/include/asm/barrier.h
> > > @@ -30,14 +30,6 @@
> > > #define smp_rmb() rmb()
> > > #define smp_wmb() wmb()
> > >
> > > -#define read_barrier_depends() do { } while (0)
> > > -#define smp_read_barrier_depends() do { } while (0)
> > > -
> > > -#define smp_mb__before_atomic() smp_mb()
> > > -#define smp_mb__after_atomic() smp_mb()
> >
> > As per:
> >
> > lkml.kernel.org/r/20150921112252.3c2937e1@mschwide
> >
> > s390 should change this to barrier() instead of smp_mb() and hence
> > should not use the generic versions.
>
> Yes, we wanted to simplify this. Thanks for the reminder, I'll queue
> a patch.
Could you base on my patchset maybe, to avoid conflicts,
and I'll merge it?
Or if it's just replacing these 2 with barrier() I can do this
myself easily.
> --
> blue skies,
> Martin.
>
> "Reality continues to ruin my life." - Calvin.
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Martin Schwidefsky <schwidefsky@de.ibm.com> |
|---|---|
| Date | 2016-01-05 09:10 +0100 |
| Subject | Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h |
| Message-ID | <qNuQO-7Jz-1@gated-at.bofh.it> |
| In reply to | #1301075 |
On Mon, 4 Jan 2016 22:42:44 +0200
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Mon, Jan 04, 2016 at 04:03:39PM +0100, Martin Schwidefsky wrote:
> > On Mon, 4 Jan 2016 14:20:42 +0100
> > Peter Zijlstra <peterz@infradead.org> wrote:
> >
> > > On Thu, Dec 31, 2015 at 09:06:30PM +0200, Michael S. Tsirkin wrote:
> > > > On s390 read_barrier_depends, smp_read_barrier_depends
> > > > smp_store_mb(), smp_mb__before_atomic and smp_mb__after_atomic match the
> > > > asm-generic variants exactly. Drop the local definitions and pull in
> > > > asm-generic/barrier.h instead.
> > > >
> > > > This is in preparation to refactoring this code area.
> > > >
> > > > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > > > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > > > ---
> > > > arch/s390/include/asm/barrier.h | 10 ++--------
> > > > 1 file changed, 2 insertions(+), 8 deletions(-)
> > > >
> > > > diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
> > > > index 7ffd0b1..c358c31 100644
> > > > --- a/arch/s390/include/asm/barrier.h
> > > > +++ b/arch/s390/include/asm/barrier.h
> > > > @@ -30,14 +30,6 @@
> > > > #define smp_rmb() rmb()
> > > > #define smp_wmb() wmb()
> > > >
> > > > -#define read_barrier_depends() do { } while (0)
> > > > -#define smp_read_barrier_depends() do { } while (0)
> > > > -
> > > > -#define smp_mb__before_atomic() smp_mb()
> > > > -#define smp_mb__after_atomic() smp_mb()
> > >
> > > As per:
> > >
> > > lkml.kernel.org/r/20150921112252.3c2937e1@mschwide
> > >
> > > s390 should change this to barrier() instead of smp_mb() and hence
> > > should not use the generic versions.
> >
> > Yes, we wanted to simplify this. Thanks for the reminder, I'll queue
> > a patch.
>
> Could you base on my patchset maybe, to avoid conflicts,
> and I'll merge it?
> Or if it's just replacing these 2 with barrier() I can do this
> myself easily.
Probably the easiest solution if you do the patch yourself and
include it in your patch set.
--
blue skies,
Martin.
"Reality continues to ruin my life." - Calvin.
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2016-01-04 21:40 +0100 |
| Subject | Re: [PATCH v2 06/32] s390: reuse asm-generic/barrier.h |
| Message-ID | <qNk55-8oP-39@gated-at.bofh.it> |
| In reply to | #1300744 |
On Mon, Jan 04, 2016 at 02:20:42PM +0100, Peter Zijlstra wrote:
> On Thu, Dec 31, 2015 at 09:06:30PM +0200, Michael S. Tsirkin wrote:
> > On s390 read_barrier_depends, smp_read_barrier_depends
> > smp_store_mb(), smp_mb__before_atomic and smp_mb__after_atomic match the
> > asm-generic variants exactly. Drop the local definitions and pull in
> > asm-generic/barrier.h instead.
> >
> > This is in preparation to refactoring this code area.
> >
> > Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> > arch/s390/include/asm/barrier.h | 10 ++--------
> > 1 file changed, 2 insertions(+), 8 deletions(-)
> >
> > diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h
> > index 7ffd0b1..c358c31 100644
> > --- a/arch/s390/include/asm/barrier.h
> > +++ b/arch/s390/include/asm/barrier.h
> > @@ -30,14 +30,6 @@
> > #define smp_rmb() rmb()
> > #define smp_wmb() wmb()
> >
> > -#define read_barrier_depends() do { } while (0)
> > -#define smp_read_barrier_depends() do { } while (0)
> > -
> > -#define smp_mb__before_atomic() smp_mb()
> > -#define smp_mb__after_atomic() smp_mb()
>
> As per:
>
> lkml.kernel.org/r/20150921112252.3c2937e1@mschwide
>
> s390 should change this to barrier() instead of smp_mb() and hence
> should not use the generic versions.
Thanks Peter!
OK so I will just rename this to __smp_mb__before_atomic and
__smp_mb__after_atomic but keep them around.
I'm not changing these - that's best left to s390 maintainers.
Should I add a TODO comment to change them to barrier so
we don't forget?
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:20 +0100 |
| Subject | [PATCH v2 21/32] mips: define __smp_xxx |
| Message-ID | <qLQVs-8sN-5@gated-at.bofh.it> |
| In reply to | #1299746 |
This defines __smp_xxx barriers for mips,
for use by virtualization.
smp_xxx barriers are removed as they are
defined correctly by asm-generic/barriers.h
Note: the only exception is smp_mb__before_llsc which is mips-specific.
We define both the __smp_mb__before_llsc variant (for use in
asm/barriers.h) and smp_mb__before_llsc (for use elsewhere on this
architecture).
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/mips/include/asm/barrier.h | 26 ++++++++++++++------------
1 file changed, 14 insertions(+), 12 deletions(-)
diff --git a/arch/mips/include/asm/barrier.h b/arch/mips/include/asm/barrier.h
index 3eac4b9..d296633 100644
--- a/arch/mips/include/asm/barrier.h
+++ b/arch/mips/include/asm/barrier.h
@@ -85,20 +85,20 @@
#define wmb() fast_wmb()
#define rmb() fast_rmb()
-#if defined(CONFIG_WEAK_ORDERING) && defined(CONFIG_SMP)
+#if defined(CONFIG_WEAK_ORDERING)
# ifdef CONFIG_CPU_CAVIUM_OCTEON
-# define smp_mb() __sync()
-# define smp_rmb() barrier()
-# define smp_wmb() __syncw()
+# define __smp_mb() __sync()
+# define __smp_rmb() barrier()
+# define __smp_wmb() __syncw()
# else
-# define smp_mb() __asm__ __volatile__("sync" : : :"memory")
-# define smp_rmb() __asm__ __volatile__("sync" : : :"memory")
-# define smp_wmb() __asm__ __volatile__("sync" : : :"memory")
+# define __smp_mb() __asm__ __volatile__("sync" : : :"memory")
+# define __smp_rmb() __asm__ __volatile__("sync" : : :"memory")
+# define __smp_wmb() __asm__ __volatile__("sync" : : :"memory")
# endif
#else
-#define smp_mb() barrier()
-#define smp_rmb() barrier()
-#define smp_wmb() barrier()
+#define __smp_mb() barrier()
+#define __smp_rmb() barrier()
+#define __smp_wmb() barrier()
#endif
#if defined(CONFIG_WEAK_REORDERING_BEYOND_LLSC) && defined(CONFIG_SMP)
@@ -111,6 +111,7 @@
#ifdef CONFIG_CPU_CAVIUM_OCTEON
#define smp_mb__before_llsc() smp_wmb()
+#define __smp_mb__before_llsc() __smp_wmb()
/* Cause previous writes to become visible on all CPUs as soon as possible */
#define nudge_writes() __asm__ __volatile__(".set push\n\t" \
".set arch=octeon\n\t" \
@@ -118,11 +119,12 @@
".set pop" : : : "memory")
#else
#define smp_mb__before_llsc() smp_llsc_mb()
+#define __smp_mb__before_llsc() smp_llsc_mb()
#define nudge_writes() mb()
#endif
-#define smp_mb__before_atomic() smp_mb__before_llsc()
-#define smp_mb__after_atomic() smp_llsc_mb()
+#define __smp_mb__before_atomic() __smp_mb__before_llsc()
+#define __smp_mb__after_atomic() smp_llsc_mb()
#include <asm-generic/barrier.h>
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:20 +0100 |
| Subject | [PATCH v2 09/32] arm64: reuse asm-generic/barrier.h |
| Message-ID | <qLQVr-8sN-3@gated-at.bofh.it> |
| In reply to | #1299746 |
On arm64 nop, read_barrier_depends, smp_read_barrier_depends
smp_store_mb(), smp_mb__before_atomic and smp_mb__after_atomic match the
asm-generic variants exactly. Drop the local definitions and pull in
asm-generic/barrier.h instead.
This is in preparation to refactoring this code area.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
---
arch/arm64/include/asm/barrier.h | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h
index 9622eb4..91a43f4 100644
--- a/arch/arm64/include/asm/barrier.h
+++ b/arch/arm64/include/asm/barrier.h
@@ -91,14 +91,7 @@ do { \
__u.__val; \
})
-#define read_barrier_depends() do { } while(0)
-#define smp_read_barrier_depends() do { } while(0)
-
-#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); smp_mb(); } while (0)
-#define nop() asm volatile("nop");
-
-#define smp_mb__before_atomic() smp_mb()
-#define smp_mb__after_atomic() smp_mb()
+#include <asm-generic/barrier.h>
#endif /* __ASSEMBLY__ */
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2015-12-31 20:20 +0100 |
| Subject | [PATCH v2 32/32] virtio_ring: use virt_store_mb |
| Message-ID | <qLQVs-8sN-11@gated-at.bofh.it> |
| In reply to | #1299746 |
We need a full barrier after writing out event index, using
virt_store_mb there seems better than open-coding. As usual, we need a
wrapper to account for strong barriers.
It's tempting to use this in vhost as well, for that, we'll
need a variant of smp_store_mb that works on __user pointers.
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
include/linux/virtio_ring.h | 12 ++++++++++++
drivers/virtio/virtio_ring.c | 15 +++++++++------
2 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
index f3fa55b..3a74d91 100644
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -45,6 +45,18 @@ static inline void virtio_wmb(bool weak_barriers)
wmb();
}
+static inline void virtio_store_mb(bool weak_barriers,
+ __virtio16 *p, __virtio16 v)
+{
+ if (weak_barriers)
+ virt_store_mb(*p, v);
+ else
+ {
+ WRITE_ONCE(*p, v);
+ mb();
+ }
+}
+
struct virtio_device;
struct virtqueue;
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index ee663c4..e12e385 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -517,10 +517,10 @@ void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len)
/* If we expect an interrupt for the next entry, tell host
* by writing event index and flush out the write before
* the read in the next get_buf call. */
- if (!(vq->avail_flags_shadow & VRING_AVAIL_F_NO_INTERRUPT)) {
- vring_used_event(&vq->vring) = cpu_to_virtio16(_vq->vdev, vq->last_used_idx);
- virtio_mb(vq->weak_barriers);
- }
+ if (!(vq->avail_flags_shadow & VRING_AVAIL_F_NO_INTERRUPT))
+ virtio_store_mb(vq->weak_barriers,
+ &vring_used_event(&vq->vring),
+ cpu_to_virtio16(_vq->vdev, vq->last_used_idx));
#ifdef DEBUG
vq->last_add_time_valid = false;
@@ -653,8 +653,11 @@ bool virtqueue_enable_cb_delayed(struct virtqueue *_vq)
}
/* TODO: tune this threshold */
bufs = (u16)(vq->avail_idx_shadow - vq->last_used_idx) * 3 / 4;
- vring_used_event(&vq->vring) = cpu_to_virtio16(_vq->vdev, vq->last_used_idx + bufs);
- virtio_mb(vq->weak_barriers);
+
+ virtio_store_mb(vq->weak_barriers,
+ &vring_used_event(&vq->vring),
+ cpu_to_virtio16(_vq->vdev, vq->last_used_idx + bufs));
+
if (unlikely((u16)(virtio16_to_cpu(_vq->vdev, vq->vring.used->idx) - vq->last_used_idx) > bufs)) {
END_USE(vq);
return false;
--
MST
--
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/
[toc] | [prev] | [next] | [standalone]
| From | Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> |
|---|---|
| Date | 2016-01-01 18:30 +0100 |
| Subject | Re: [PATCH v2 32/32] virtio_ring: use virt_store_mb |
| Message-ID | <qMbGz-5lD-49@gated-at.bofh.it> |
| In reply to | #1299759 |
Hello.
On 12/31/2015 10:09 PM, Michael S. Tsirkin wrote:
> We need a full barrier after writing out event index, using
> virt_store_mb there seems better than open-coding. As usual, we need a
> wrapper to account for strong barriers.
>
> It's tempting to use this in vhost as well, for that, we'll
> need a variant of smp_store_mb that works on __user pointers.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> include/linux/virtio_ring.h | 12 ++++++++++++
> drivers/virtio/virtio_ring.c | 15 +++++++++------
> 2 files changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
> index f3fa55b..3a74d91 100644
> --- a/include/linux/virtio_ring.h
> +++ b/include/linux/virtio_ring.h
> @@ -45,6 +45,18 @@ static inline void virtio_wmb(bool weak_barriers)
> wmb();
> }
>
> +static inline void virtio_store_mb(bool weak_barriers,
> + __virtio16 *p, __virtio16 v)
> +{
> + if (weak_barriers)
> + virt_store_mb(*p, v);
> + else
> + {
The kernel coding style dictates:
if (weak_barriers) {
virt_store_mb(*p, v);
} else {
> + WRITE_ONCE(*p, v);
> + mb();
> + }
> +}
> +
[...]
MBR, Sergei
--
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/
[toc] | [prev] | [next] | [standalone]
| From | "Michael S. Tsirkin" <mst@redhat.com> |
|---|---|
| Date | 2016-01-03 10:10 +0100 |
| Subject | Re: [PATCH v2 32/32] virtio_ring: use virt_store_mb |
| Message-ID | <qMMPM-3p0-5@gated-at.bofh.it> |
| In reply to | #1299959 |
On Fri, Jan 01, 2016 at 08:23:46PM +0300, Sergei Shtylyov wrote:
> Hello.
>
> On 12/31/2015 10:09 PM, Michael S. Tsirkin wrote:
>
> >We need a full barrier after writing out event index, using
> >virt_store_mb there seems better than open-coding. As usual, we need a
> >wrapper to account for strong barriers.
> >
> >It's tempting to use this in vhost as well, for that, we'll
> >need a variant of smp_store_mb that works on __user pointers.
> >
> >Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> >---
> > include/linux/virtio_ring.h | 12 ++++++++++++
> > drivers/virtio/virtio_ring.c | 15 +++++++++------
> > 2 files changed, 21 insertions(+), 6 deletions(-)
> >
> >diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
> >index f3fa55b..3a74d91 100644
> >--- a/include/linux/virtio_ring.h
> >+++ b/include/linux/virtio_ring.h
> >@@ -45,6 +45,18 @@ static inline void virtio_wmb(bool weak_barriers)
> > wmb();
> > }
> >
> >+static inline void virtio_store_mb(bool weak_barriers,
> >+ __virtio16 *p, __virtio16 v)
> >+{
> >+ if (weak_barriers)
> >+ virt_store_mb(*p, v);
> >+ else
> >+ {
>
> The kernel coding style dictates:
>
> if (weak_barriers) {
> virt_store_mb(*p, v);
> } else {
>
> >+ WRITE_ONCE(*p, v);
> >+ mb();
> >+ }
> >+}
> >+
> [...]
>
> MBR, Sergei
Will fix, thanks!
--
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/
[toc] | [prev] | [next] | [standalone]
Page 2 of 4 — ← Prev page 1 [2] 3 4 Next page →
Back to top | Article view | linux.kernel
csiph-web