From 29976f0b4121b3a26475c2188aecc2412289190f Mon Sep 17 00:00:00 2001 From: Kao Makino Date: Mon, 25 Jan 2021 10:30:32 -0800 Subject: [PATCH] Fix minor issues for aarch64 --- cmake/ConfigureCompiler.cmake | 4 ++-- cmake/InstallLayout.cmake | 29 +++++++++++++++++------------ flow/Platform.actor.cpp | 12 ++++++------ flow/ThreadPrimitives.h | 6 +++--- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/cmake/ConfigureCompiler.cmake b/cmake/ConfigureCompiler.cmake index 19833dffa9..93e0a0c3b4 100644 --- a/cmake/ConfigureCompiler.cmake +++ b/cmake/ConfigureCompiler.cmake @@ -311,9 +311,9 @@ else() endif() if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") - # Graviton or later + # Graviton2 or later # https://github.com/aws/aws-graviton-gettting-started - add_compile_options(-march=armv8-a+crc+simd) + add_compile_options(-march=armv8.2-a+crc+simd) endif() # Check whether we can use dtrace probes diff --git a/cmake/InstallLayout.cmake b/cmake/InstallLayout.cmake index 1670f65b0f..dd95fb9e95 100644 --- a/cmake/InstallLayout.cmake +++ b/cmake/InstallLayout.cmake @@ -303,15 +303,15 @@ set(CPACK_RPM_CLIENTS-EL7_PACKAGE_NAME "foundationdb-clients") set(CPACK_RPM_SERVER-EL7_PACKAGE_NAME "foundationdb-server") set(CPACK_RPM_SERVER-VERSIONED_PACKAGE_NAME "foundationdb-server-${PROJECT_VERSION}") -set(CPACK_RPM_CLIENTS-EL7_FILE_NAME "${rpm-clients-filename}.el7.x86_64.rpm") -set(CPACK_RPM_CLIENTS-VERSIONED_FILE_NAME "${rpm-clients-filename}.versioned.x86_64.rpm") -set(CPACK_RPM_SERVER-EL7_FILE_NAME "${rpm-server-filename}.el7.x86_64.rpm") -set(CPACK_RPM_SERVER-VERSIONED_FILE_NAME "${rpm-server-filename}.versioned.x86_64.rpm") +set(CPACK_RPM_CLIENTS-EL7_FILE_NAME "${rpm-clients-filename}.el7.${CMAKE_SYSTEM_PROCESSOR}.rpm") +set(CPACK_RPM_CLIENTS-VERSIONED_FILE_NAME "${rpm-clients-filename}.versioned.${CMAKE_SYSTEM_PROCESSOR}.rpm") +set(CPACK_RPM_SERVER-EL7_FILE_NAME "${rpm-server-filename}.el7.${CMAKE_SYSTEM_PROCESSOR}.rpm") +set(CPACK_RPM_SERVER-VERSIONED_FILE_NAME "${rpm-server-filename}.versioned.${CMAKE_SYSTEM_PROCESSOR}.rpm") -set(CPACK_RPM_CLIENTS-EL7_DEBUGINFO_FILE_NAME "${rpm-clients-filename}.el7-debuginfo.x86_64.rpm") -set(CPACK_RPM_CLIENTS-VERSIONED_DEBUGINFO_FILE_NAME "${rpm-clients-filename}.versioned-debuginfo.x86_64.rpm") -set(CPACK_RPM_SERVER-EL7_DEBUGINFO_FILE_NAME "${rpm-server-filename}.el7-debuginfo.x86_64.rpm") -set(CPACK_RPM_SERVER-VERSIONED_DEBUGINFO_FILE_NAME "${rpm-server-filename}.versioned-debuginfo.x86_64.rpm") +set(CPACK_RPM_CLIENTS-EL7_DEBUGINFO_FILE_NAME "${rpm-clients-filename}.el7-debuginfo.${CMAKE_SYSTEM_PROCESSOR}.rpm") +set(CPACK_RPM_CLIENTS-VERSIONED_DEBUGINFO_FILE_NAME "${rpm-clients-filename}.versioned-debuginfo.${CMAKE_SYSTEM_PROCESSOR}.rpm") +set(CPACK_RPM_SERVER-EL7_DEBUGINFO_FILE_NAME "${rpm-server-filename}.el7-debuginfo.${CMAKE_SYSTEM_PROCESSOR}.rpm") +set(CPACK_RPM_SERVER-VERSIONED_DEBUGINFO_FILE_NAME "${rpm-server-filename}.versioned-debuginfo.${CMAKE_SYSTEM_PROCESSOR}.rpm") file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/packaging/emptydir") fdb_install(DIRECTORY "${CMAKE_BINARY_DIR}/packaging/emptydir/" DESTINATION data COMPONENT server) @@ -377,8 +377,13 @@ set(CPACK_RPM_CLIENTS-VERSIONED_PRE_UNINSTALL_SCRIPT_FILE # Configuration for DEB ################################################################################ -set(CPACK_DEBIAN_CLIENTS-DEB_FILE_NAME "${deb-clients-filename}_amd64.deb") -set(CPACK_DEBIAN_SERVER-DEB_FILE_NAME "${deb-server-filename}_amd64.deb") +if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") + set(CPACK_DEBIAN_CLIENTS-DEB_FILE_NAME "${deb-clients-filename}_amd64.deb") + set(CPACK_DEBIAN_SERVER-DEB_FILE_NAME "${deb-server-filename}_amd64.deb") +else() + set(CPACK_DEBIAN_CLIENTS-DEB_FILE_NAME "${deb-clients-filename}_${CMAKE_SYSTEM_PROCESSOR}.deb") + set(CPACK_DEBIAN_SERVER-DEB_FILE_NAME "${deb-server-filename}_${CMAKE_SYSTEM_PROCESSOR}.deb") +endif() set(CPACK_DEB_COMPONENT_INSTALL ON) set(CPACK_DEBIAN_DEBUGINFO_PACKAGE ${GENERATE_DEBUG_PACKAGES}) set(CPACK_DEBIAN_PACKAGE_SECTION "database") @@ -427,8 +432,8 @@ endif() ################################################################################ set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) -set(CPACK_ARCHIVE_CLIENTS-TGZ_FILE_NAME "${deb-clients-filename}.x86_64") -set(CPACK_ARCHIVE_SERVER-TGZ_FILE_NAME "${deb-server-filename}.x86_64") +set(CPACK_ARCHIVE_CLIENTS-TGZ_FILE_NAME "${deb-clients-filename}.${CMAKE_SYSTEM_PROCESSOR}") +set(CPACK_ARCHIVE_SERVER-TGZ_FILE_NAME "${deb-server-filename}.${CMAKE_SYSTEM_PROCESSOR}") ################################################################################ # Server configuration diff --git a/flow/Platform.actor.cpp b/flow/Platform.actor.cpp index 7d8620c6fe..7c05bdf7ee 100644 --- a/flow/Platform.actor.cpp +++ b/flow/Platform.actor.cpp @@ -2371,7 +2371,7 @@ ACTOR Future> findFiles( std::string directory, std::string bool directoryOnly, bool async) { INJECT_FAULT( platform_error, "findFiles" ); // findFiles failed (Win32) state vector result; - state int64_t tsc_begin = __rdtsc(); + state int64_t tsc_begin = timestampCounter(); state WIN32_FIND_DATA fd; @@ -2390,9 +2390,9 @@ ACTOR Future> findFiles( std::string directory, std::string } if (!FindNextFile( h, &fd )) break; - if (async && __rdtsc() - tsc_begin > FLOW_KNOBS->TSC_YIELD_TIME && !g_network->isSimulated()) { + if (async && timestampCounter() - tsc_begin > FLOW_KNOBS->TSC_YIELD_TIME && !g_network->isSimulated()) { wait( yield() ); - tsc_begin = __rdtsc(); + tsc_begin = timestampCounter(); } } if (GetLastError() != ERROR_NO_MORE_FILES) { @@ -2421,7 +2421,7 @@ ACTOR Future> findFiles( std::string directory, std::string bool directoryOnly, bool async) { INJECT_FAULT( platform_error, "findFiles" ); // findFiles failed state vector result; - state int64_t tsc_begin = __rdtsc(); + state int64_t tsc_begin = timestampCounter(); state DIR *dip = nullptr; @@ -2451,9 +2451,9 @@ ACTOR Future> findFiles( std::string directory, std::string (!directoryOnly && acceptFile(buf.st_mode, name, extension))) { result.push_back( name ); } - if (async && __rdtsc() - tsc_begin > FLOW_KNOBS->TSC_YIELD_TIME && !g_network->isSimulated()) { + if (async && timestampCounter() - tsc_begin > FLOW_KNOBS->TSC_YIELD_TIME && !g_network->isSimulated()) { wait( yield() ); - tsc_begin = __rdtsc(); + tsc_begin = timestampCounter(); } } diff --git a/flow/ThreadPrimitives.h b/flow/ThreadPrimitives.h index 87cd703234..2cbbaf8021 100644 --- a/flow/ThreadPrimitives.h +++ b/flow/ThreadPrimitives.h @@ -64,10 +64,10 @@ public: } void enter() { while (isLocked.test_and_set(std::memory_order_acquire)) -#ifndef __aarch64__ - _mm_pause(); +#ifdef __aarch64__ + __asm__ volatile("isb"); #else - ; /* spin */ + _mm_pause(); #endif #if VALGRIND ANNOTATE_RWLOCK_ACQUIRED(this, true);