fix-crc32c-unittest-failed-on-aarch64
new file: 0008-common-crc32c_aarch64-fix-crc32c-unittest-failed-on-.patch modified: ceph.spec Signed-off-by: Dai Zhiwei <daizhiwei3@huawei.com> Signed-off-by: luo rixin <luorixin@huawei.com>
This commit is contained in:
parent
663f243727
commit
49fa1bbf02
@ -0,0 +1,62 @@
|
||||
From 06ca2eba72fa5c23602f45dfeb770c62d1f20a76 Mon Sep 17 00:00:00 2001
|
||||
From: luo rixin <luorixin@huawei.com>
|
||||
Date: Wed, 19 May 2021 10:27:18 +0800
|
||||
Subject: [PATCH] common/crc32c_aarch64: fix crc32c unittest failed on aarch64
|
||||
|
||||
On centos 8.2 for aarch64 with gcc 8.3, the complier will use
|
||||
register v0 conflicting with the register v0 be usded in inline
|
||||
asm code. Adding the related registers into clobber list to inform
|
||||
complier avoiding the confict.
|
||||
|
||||
Fixes: https://tracker.ceph.com/issues/50835
|
||||
|
||||
Signed-off-by: luo rixin <luorixin@huawei.com>
|
||||
---
|
||||
src/common/crc32c_aarch64.c | 10 ++++++----
|
||||
1 file changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/common/crc32c_aarch64.c b/src/common/crc32c_aarch64.c
|
||||
index d15736a0cd..99e5883994 100644
|
||||
--- a/src/common/crc32c_aarch64.c
|
||||
+++ b/src/common/crc32c_aarch64.c
|
||||
@@ -147,7 +147,7 @@ uint32_t ceph_crc32c_aarch64(uint32_t crc, unsigned char const *buffer, unsigned
|
||||
"mov x16, #0x8014 \n\t"
|
||||
"movk x16, #0x8f15, lsl 16 \n\t"
|
||||
"mov v0.2d[0], x16 \n\t"
|
||||
- :::"x16");
|
||||
+ :::"x16","v0","v1");
|
||||
|
||||
while ((length -= 1024) >= 0) {
|
||||
PREF1KL2(1024*3);
|
||||
@@ -178,7 +178,8 @@ uint32_t ceph_crc32c_aarch64(uint32_t crc, unsigned char const *buffer, unsigned
|
||||
"crc32cx %w[c0], wzr, %x[c0] \n\t"
|
||||
"eor %w[c], %w[c], %w[c0] \n\t"
|
||||
:[c1]"+r"(crc1), [c0]"+r"(crc0), [c2]"+r"(crc2), [c]"+r"(crc)
|
||||
- :[v]"r"(*((const uint64_t *)buffer)));
|
||||
+ :[v]"r"(*((const uint64_t *)buffer))
|
||||
+ :"v0","v1","v2","v3");
|
||||
buffer += sizeof(uint64_t);
|
||||
}
|
||||
#endif /* HAVE_ARMV8_CRC_CRYPTO_INTRINSICS */
|
||||
@@ -229,7 +230,7 @@ uint32_t ceph_crc32c_aarch64(uint32_t crc, unsigned char const *buffer, unsigned
|
||||
__asm__("mov x16, #0xf38a \n\t"
|
||||
"movk x16, #0xe417, lsl 16 \n\t"
|
||||
"mov v1.2d[0], x16 \n\t"
|
||||
- :::"x16");
|
||||
+ :::"x16","v1");
|
||||
|
||||
while ((length -= 1024) >= 0) {
|
||||
__asm__("crc32cx %w[c0], %w[c], xzr\n\t"
|
||||
@@ -247,7 +248,8 @@ uint32_t ceph_crc32c_aarch64(uint32_t crc, unsigned char const *buffer, unsigned
|
||||
"mov %x[c0], v3.2d[0] \n\t"
|
||||
"crc32cx %w[c], wzr, %x[c0] \n\t"
|
||||
:[c]"=r"(crc)
|
||||
- :[c0]"r"(crc0));
|
||||
+ :[c0]"r"(crc0)
|
||||
+ :"v1","v3");
|
||||
}
|
||||
#endif /* HAVE_ARMV8_CRC_CRYPTO_INTRINSICS */
|
||||
|
||||
--
|
||||
2.24.4
|
||||
|
||||
@ -110,7 +110,7 @@
|
||||
#################################################################################
|
||||
Name: ceph
|
||||
Version: 14.2.15
|
||||
Release: 6%{?dist}
|
||||
Release: 7%{?dist}
|
||||
%if 0%{?fedora} || 0%{?rhel} || 0%{?openEuler}
|
||||
Epoch: 2
|
||||
%endif
|
||||
@ -137,6 +137,7 @@ Patch4: 0004-CVE-2020-27781-4.patch
|
||||
Patch5: 0005-CVE-2020-27781-5.patch
|
||||
Patch6: 0006-CVE-2021-3524-1.patch
|
||||
Patch7: 0007-fix-build-error-PTHREAD_STACK_MIN.patch
|
||||
Patch9: 0008-common-crc32c_aarch64-fix-crc32c-unittest-failed-on-.patch
|
||||
|
||||
%if 0%{?suse_version}
|
||||
# _insert_obs_source_lines_here
|
||||
@ -2044,6 +2045,9 @@ exit 0
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Nov 5 2021 Dai Zhiwei <daizhiwei3@huawei.com> - 1:14.2.15-7
|
||||
- fix aarch64 crc32c unittest error
|
||||
|
||||
* Fri Aug 13 2021 yanglongkang <yanglongkang@huawei.com> - 1:14.2.15-6
|
||||
- fix build error PTHREAD_STACJK_MIN
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user