linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rich Felker <dalias@libc.org>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	linux-kernel@vger.kernel.org, linux-sh@vger.kernel.org,
	Rob Landley <rob@landley.net>, Jeff Dionne <jeff@uclinux.org>,
	Yoshinori Sato <ysato@users.sourceforge.jp>
Subject: Re: [PATCH v2 31/32] sh: support a 2-byte smp_store_mb
Date: Thu, 7 Jan 2016 23:25:05 -0500	[thread overview]
Message-ID: <20160108042505.GJ238@brightrain.aerifal.cx> (raw)
In-Reply-To: <20160108003519-mutt-send-email-mst@redhat.com>

On Fri, Jan 08, 2016 at 12:41:35AM +0200, Michael S. Tsirkin wrote:
> > > > It would be nice to have these in asm-generic for archs which don't
> > > > define their own versions rather than having cruft like this repeated
> > > > per-arch. Strictly speaking, the volatile u32 used to access the
> > > > 32-bit word containing the u8 or u16 should be
> > > > __attribute__((__may_alias__)) too. Is there an existing kernel type
> > > > for a "may_alias u32" or should it perhaps be added?
> > > > 
> > > > Rich
> > > 
> > > BTW this seems suboptimal for grb and irq variants which apparently
> > > can do things correctly.
> > 
> > In principle I agree, but u8/u16 xchg is mostly unused (completely
> > unused in my builds) and unlikely to matter to performance. Also, the
> > irq variant is only for the original sh2 which is not even produced
> > anymore afaik. Our reimplementation of the sh2 ISA, the J2, has a
> > cas.l instruction that will be used instead because it supports SMP
> > where interrupt masking is insufficient to achieve atomicity.
> > 
> > Rich
> 
> Since it looks like there will soon be active maintainers
> for this arch, I think it's best if I make the minimal possible
> changes and then you guys can rewrite it any way you like,
> drop irq variant or whatever.
> 
> The minimal change is probably the below code but
> the grb variant is just copy paste from xchg_u8
> with a minor tweak -
> can you pls confirm it looks right?

I haven't had a chance to test it, but I don't see anything obviously
wrong with it.

> I tested the llsc code on ppc and x86 and since it's
> portable I know the logic is correct there.

Sounds good. Since it will also be needed for the cas.l variant I'd
rather have this in the main asm/cmpxchg.h where it can be shared if
you see an easy way to do that now, but if not I can take care of it
later when merging cmpxchg-cas.h. Perhaps just putting __xchg_cmpxchg
in the main asm/cmpxchg.h would suffice so that only the thin wrappers
need to be duplicated. Ideally it could even be moved outside of the
arch asm headers, but then there might be annoying header ordering
issues to deal with.

> Will post v3 with this included but would appreciate
> your input first.

Go ahead. Thanks!

Rich

  reply	other threads:[~2016-01-08  4:25 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-31 19:05 [PATCH v2 00/34] arch: barrier cleanup + barriers for virt Michael S. Tsirkin
2015-12-31 19:05 ` [PATCH v2 01/32] lcoking/barriers, arch: Use smp barriers in smp_store_release() Michael S. Tsirkin
2015-12-31 19:05 ` [PATCH v2 02/32] asm-generic: guard smp_store_release/load_acquire Michael S. Tsirkin
2015-12-31 19:06 ` [PATCH v2 03/32] ia64: rename nop->iosapic_nop Michael S. Tsirkin
2015-12-31 19:06 ` [PATCH v2 04/32] ia64: reuse asm-generic/barrier.h Michael S. Tsirkin
2015-12-31 19:06 ` [PATCH v2 05/32] powerpc: " Michael S. Tsirkin
2015-12-31 19:06 ` [PATCH v2 06/32] s390: " Michael S. Tsirkin
2016-01-04 13:20   ` Peter Zijlstra
2016-01-04 15:03     ` Martin Schwidefsky
2016-01-04 20:42       ` Michael S. Tsirkin
2016-01-05  8:03         ` Martin Schwidefsky
2016-01-04 20:34     ` Michael S. Tsirkin
2015-12-31 19:06 ` [PATCH v2 07/32] sparc: " Michael S. Tsirkin
2015-12-31 19:43   ` David Miller
2015-12-31 19:06 ` [PATCH v2 08/32] arm: " Michael S. Tsirkin
2016-01-02 11:20   ` Russell King - ARM Linux
2015-12-31 19:06 ` [PATCH v2 09/32] arm64: " Michael S. Tsirkin
2015-12-31 19:07 ` [PATCH v2 10/32] metag: " Michael S. Tsirkin
2016-01-04 23:24   ` James Hogan
2015-12-31 19:07 ` [PATCH v2 11/32] mips: " Michael S. Tsirkin
2016-01-04 13:26   ` Peter Zijlstra
2015-12-31 19:07 ` [PATCH v2 12/32] x86/um: " Michael S. Tsirkin
2016-01-05 23:12   ` Richard Weinberger
2015-12-31 19:07 ` [PATCH v2 13/32] x86: " Michael S. Tsirkin
2015-12-31 19:07 ` [PATCH v2 14/32] asm-generic: add __smp_xxx wrappers Michael S. Tsirkin
2015-12-31 19:07 ` [PATCH v2 15/32] powerpc: define __smp_xxx Michael S. Tsirkin
2016-01-05  1:36   ` Boqun Feng
2016-01-05  8:51     ` Michael S. Tsirkin
2016-01-05  9:53       ` Boqun Feng
2016-01-05 16:16         ` Michael S. Tsirkin
2016-01-06  1:51           ` Boqun Feng
2016-01-06 20:23             ` Michael S. Tsirkin
2016-01-07  0:43               ` Boqun Feng
2015-12-31 19:07 ` [PATCH v2 16/32] arm64: " Michael S. Tsirkin
2015-12-31 19:07 ` [PATCH v2 17/32] arm: " Michael S. Tsirkin
2016-01-02 11:24   ` Russell King - ARM Linux
2016-01-03  9:12     ` Michael S. Tsirkin
2016-01-04 13:36       ` Peter Zijlstra
2016-01-04 13:54         ` Peter Zijlstra
2016-01-04 13:59           ` Russell King - ARM Linux
2016-01-05 14:38             ` Michael S. Tsirkin
2016-01-04 20:39           ` Michael S. Tsirkin
2016-01-04 20:12         ` Michael S. Tsirkin
2015-12-31 19:08 ` [PATCH v2 18/32] blackfin: " Michael S. Tsirkin
2015-12-31 19:08 ` [PATCH v2 19/32] ia64: " Michael S. Tsirkin
2015-12-31 19:08 ` [PATCH v2 20/32] metag: " Michael S. Tsirkin
2016-01-04 13:41   ` Peter Zijlstra
2016-01-04 15:25     ` James Hogan
2016-01-04 15:30       ` Peter Zijlstra
2016-01-04 16:04         ` James Hogan
2016-01-05  0:09   ` James Hogan
2016-01-11 11:10     ` Michael S. Tsirkin
2015-12-31 19:08 ` [PATCH v2 21/32] mips: " Michael S. Tsirkin
2015-12-31 19:08 ` [PATCH v2 22/32] s390: " Michael S. Tsirkin
2016-01-04 13:45   ` Peter Zijlstra
2016-01-04 20:18     ` Michael S. Tsirkin
2016-01-05  8:13       ` Martin Schwidefsky
2016-01-05  9:30         ` Michael S. Tsirkin
2016-01-05 12:08           ` Martin Schwidefsky
2016-01-05 13:04             ` Michael S. Tsirkin
2016-01-05 14:21               ` Martin Schwidefsky
2016-01-05 15:39           ` Christian Borntraeger
2016-01-05 16:04             ` Michael S. Tsirkin
2015-12-31 19:08 ` [PATCH v2 23/32] sh: define __smp_xxx, fix smp_store_mb for !SMP Michael S. Tsirkin
2015-12-31 19:08 ` [PATCH v2 24/32] sparc: define __smp_xxx Michael S. Tsirkin
2015-12-31 19:44   ` David Miller
2015-12-31 19:09 ` [PATCH v2 25/32] tile: " Michael S. Tsirkin
2015-12-31 19:09 ` [PATCH v2 26/32] xtensa: " Michael S. Tsirkin
2015-12-31 19:09 ` [PATCH v2 27/32] x86: " Michael S. Tsirkin
2015-12-31 19:09 ` [PATCH v2 28/32] asm-generic: implement virt_xxx memory barriers Michael S. Tsirkin
2015-12-31 19:09 ` [PATCH v2 29/32] Revert "virtio_ring: Update weak barriers to use dma_wmb/rmb" Michael S. Tsirkin
2015-12-31 19:09 ` [PATCH v2 31/32] sh: support a 2-byte smp_store_mb Michael S. Tsirkin
2016-01-04 14:05   ` Peter Zijlstra
2016-01-05 23:27   ` Rich Felker
2016-01-06 11:19     ` Michael S. Tsirkin
2016-01-06 11:40       ` Peter Zijlstra
2016-01-06 11:52         ` Michael S. Tsirkin
2016-01-06 14:32           ` Peter Zijlstra
2016-01-06 15:42             ` Rob Landley
2016-01-06 16:57               ` Peter Zijlstra
2016-01-06 20:21                 ` Rob Landley
2016-01-06 18:57               ` Geert Uytterhoeven
2016-01-06 18:23             ` Rich Felker
2016-01-06 20:23               ` Michael S. Tsirkin
2016-01-06 23:53                 ` Rich Felker
2016-01-07 13:37                   ` Peter Zijlstra
2016-01-07 19:05                     ` Rich Felker
2016-01-07 15:50                   ` Michael S. Tsirkin
2016-01-07 17:48                   ` Michael S. Tsirkin
2016-01-07 19:10                     ` Rich Felker
2016-01-07 22:41                       ` Michael S. Tsirkin
2016-01-08  4:25                         ` Rich Felker [this message]
2016-01-08  7:23                           ` Michael S. Tsirkin
2016-01-06 22:14               ` Michael S. Tsirkin
2015-12-31 19:09 ` [PATCH v2 32/32] virtio_ring: use virt_store_mb Michael S. Tsirkin
2016-01-01 17:23   ` Sergei Shtylyov
2016-01-03  9:01     ` Michael S. Tsirkin
2015-12-31 19:10 ` [PATCH v2 33/34] xenbus: use virt_xxx barriers Michael S. Tsirkin
2016-01-04 11:32   ` [Xen-devel] " David Vrabel
2016-01-04 12:03   ` Stefano Stabellini
2016-01-04 14:09   ` Peter Zijlstra
2015-12-31 19:10 ` [PATCH v2 34/34] xen/io: " Michael S. Tsirkin
2016-01-04 11:32   ` [Xen-devel] " David Vrabel
2016-01-04 12:05   ` Stefano Stabellini
2016-01-01  9:39 ` [PATCH v2 30/32] virtio_ring: update weak barriers to use __smp_xxx Michael S. Tsirkin
2016-01-01 10:21   ` 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=20160108042505.GJ238@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=jeff@uclinux.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=peterz@infradead.org \
    --cc=rob@landley.net \
    --cc=ysato@users.sourceforge.jp \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).