Remove swpb-based spinlock implementation for ARMv5 and earlier

Enterprise / PostgreSQL - Robert Haas [postgresql.org] - 6 July 2014 13:56 UTC

Per recent analysis by Andres Freund, this implementation is in fact unsafe, because ARMv5 has weak memory ordering, which means tha the CPU could move loads or stores across the volatile store performed by the default S_UNLOCK. We could try to fix this, but have no ARMv5 hardware to test on, so removing support seems better. We can still support ARMv5 systems on GCC versions new enough to have built-in atomics support for this platform, and can also re-add support for the old way if someone has hardware that can be used to test a fix. However, since the requirement to use a relatively-new GCC hasn't been an issue for ARMv6 or ARMv7, which lack the swpb instruction altogether, perhaps it won't be an issue for ARMv5 either.

4893ccd Remove swpb-based spinlock implementation for ARMv5 and earlier.
src/include/storage/s_lock.h | 54 +++++-------------------------------------
1 file changed, 6 insertions(+), 48 deletions(-)

Upstream: git.postgresql.org


  • Share