[PATCH] Add loongarch64 native spin lock.

Started by YANG Xudongalmost 3 years ago3 messageshackers
Jump to latest
#1YANG Xudong
yangxudong@ymatrix.cn

Hi,

This patch set tries to add loongarch64 native spin lock to postgresql.

- [PATCH 1/2] implements a loongarch64 native spin lock.
- [PATCH 2/2] fixes s_lock_test to make it runnable via `make check'.

The patch set is tested on my Loongson 3A5000 machine with Loong Arch
Linux and GCC 13.1.0 with default ./configure with no options.

Output of `make check' in src/backend/storage/lmgr is attached.

See:
[1]: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#atomic-memory-access-instructions
https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#atomic-memory-access-instructions
[2]: https://github.com/torvalds/linux/blob/f1fcbaa18b28dec10281551dfe6ed3a3ed80e3d6/arch/loongarch/include/asm/cmpxchg.h#L12
https://github.com/torvalds/linux/blob/f1fcbaa18b28dec10281551dfe6ed3a3ed80e3d6/arch/loongarch/include/asm/cmpxchg.h#L12

----
YANG Xudong

Attachments:

0001-Implement-loongarch64-native-spinlock-with-TAS.patchtext/plain; charset=UTF-8; name=0001-Implement-loongarch64-native-spinlock-with-TAS.patchDownload+39-1
0002-Make-s_lock_test-work.patchtext/plain; charset=UTF-8; name=0002-Make-s_lock_test-work.patchDownload+5-2
output.txttext/plain; charset=UTF-8; name=output.txtDownload
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: YANG Xudong (#1)
Re: [PATCH] Add loongarch64 native spin lock.

YANG Xudong <yangxudong@ymatrix.cn> writes:

This patch set tries to add loongarch64 native spin lock to postgresql.

This came up before, and our response was

https://git.postgresql.org/gitweb/?p=postgresql.git&amp;a=commitdiff&amp;h=1c72d82c2

In principle, at least, there is no longer any need for
machine-specific s_lock.h additions. Is there a strong reason
why the __sync_lock_test_and_set solution isn't good enough?

regards, tom lane

#3YANG Xudong
yangxudong@ymatrix.cn
In reply to: Tom Lane (#2)
Re: [PATCH] Add loongarch64 native spin lock.

Thanks for the information.

I checked the assembly code of __sync_lock_test_and_set generated by GCC
for loongarch64. It is exactly the same as this patch.

I guess this patch is not necessary any more.

Regards

Show quoted text

On 2023/5/17 20:37, Tom Lane wrote:

YANG Xudong <yangxudong@ymatrix.cn> writes:

This patch set tries to add loongarch64 native spin lock to postgresql.

This came up before, and our response was

https://git.postgresql.org/gitweb/?p=postgresql.git&amp;a=commitdiff&amp;h=1c72d82c2

In principle, at least, there is no longer any need for
machine-specific s_lock.h additions. Is there a strong reason
why the __sync_lock_test_and_set solution isn't good enough?

regards, tom lane