Re: [PATCH 01/13] compiler.h: Split {READ, WRITE}_ONCE definitions out into rwonce.h
flat view
From: Arnd Bergmann <arnd@arndb.de>
Date: 2019-11-11 09:33:14
Also in:
linux-alpha, lkml
On Mon, Nov 11, 2019 at 9:10 AM Christian Borntraeger [off-list ref] wrote:
On 08.11.19 20:57, Arnd Bergmann wrote:quoted
On Fri, Nov 8, 2019 at 6:01 PM Will Deacon [off-list ref] wrote:quoted
In preparation for allowing architectures to define their own implementation of the 'READ_ONCE()' macro, move the generic '{READ,WRITE}_ONCE()' definitions out of the unwieldy 'linux/compiler.h' and into a new 'rwonce.h' header under 'asm-generic'.Adding Christian Bornträger to Cc, he originally added the READ_ONCE()/WRITE_ONCE() code. I wonder if it would be appropriate now to revert back to a much simpler version of these helpers for any modern compiler. As I understand, only gcc-4.6 and gcc4.7 actually need the song-and-dance version with the union and switch/case, while for others, we can might be able back to a macro doing a volatile access.As far as I know this particular issue with volatile access on aggregate types was fixed in gcc 4.8. On the other hand we know that the current construct will work on all compilers. Not so sure about the orignal ACCESS_ONCE implementation.
I've seen problems with clang on the current version, leading to unnecessary
temporaries being spilled to the stack in some cases, so I think it would still
help to simplify it.
We probably don't want the exact ACCESS_ONCE() implementation back
that existed before, but rather something that implements the stricter
READ_ONCE() and WRITE_ONCE(). I'd probably also want to avoid the
__builtin_memcpy() exception for odd-sized accesses and instead have
a separate way to do those.
Arnd
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization