Closed
add support for loongarch64 #17
dpdwajAdd on Aug 18Closed at 10 days ago
add support for loongarch64 #17
Closed
Merged fromdpdwaj/knetmasterintosrc-openeuler/knetmaster
Total: 2 files changed+62-2
| @@ -0,0 +1,56 @@ | |||
| 1 | +From 3e2a8981ede116782fc5cb63d0ebb9e36c550feb Mon Sep 17 00:00:00 2001 | ||
| 2 | +From: doupengda <doupengda@loongson.cn> | ||
| 3 | +Date: Tue, 18 Aug 2026 17:06:30 +0800 | ||
| 4 | +Subject: [PATCH] knet-1.0.0 add support for loongarch64 | ||
| 5 | + | ||
| 6 | +--- | ||
| 7 | + CMakeLists.txt | 2 ++ | ||
| 8 | + src/knet/framework/base/include/knet_lock.h | 5 +++++ | ||
| 9 | + src/stack/tcp/src/dpfwk/utils/include/inner/utils_spinlock.h | 2 ++ | ||
| 10 | + 3 files changed, 9 insertions(+) | ||
| 11 | + | ||
| 12 | +diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
| 13 | +index d87f76f..d55eb89 100644 | ||
| 14 | +--- a/CMakeLists.txt | ||
| 15 | ++++ b/CMakeLists.txt | ||
| 16 | +@@ -8,6 +8,8 @@ if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64") | ||
| 17 | + add_compile_options(-march=armv8-a+crc) | ||
| 18 | + elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64") | ||
| 19 | + add_compile_options(-msse4.2) | ||
| 20 | ++elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "loongarch64") | ||
| 21 | ++ add_compile_options(-march=loongarch64) | ||
| 22 | + endif() | ||
| 23 | + | ||
| 24 | + #设置头文件依赖路径 | ||
| 25 | +diff --git a/src/knet/framework/base/include/knet_lock.h b/src/knet/framework/base/include/knet_lock.h | ||
| 26 | +index 4a77f5f..158ad80 100644 | ||
| 27 | +--- a/src/knet/framework/base/include/knet_lock.h | ||
| 28 | ++++ b/src/knet/framework/base/include/knet_lock.h | ||
| 29 | +@@ -52,6 +52,11 @@ KNET_WaitPolicy KNET_HalGetWaitPolicy(void); | ||
| 30 | + { | ||
| 31 | + __asm__ __volatile__("pause \n" ::: "memory"); | ||
| 32 | + } | ||
| 33 | ++#elif defined(__loongarch64) | ||
| 34 | ++ static inline void KNET_HalCpuRelax(void) | ||
| 35 | ++ { | ||
| 36 | ++ __asm__ __volatile__("dbar 0" : : : "memory"); | ||
| 37 | ++ } | ||
| 38 | + #else | ||
| 39 | + static inline void KNET_HalCpuRelax(void) | ||
| 40 | + { | ||
| 41 | +diff --git a/src/stack/tcp/src/dpfwk/utils/include/inner/utils_spinlock.h b/src/stack/tcp/src/dpfwk/utils/include/inner/utils_spinlock.h | ||
| 42 | +index 429f5f8..4bae0b1 100644 | ||
| 43 | +--- a/src/stack/tcp/src/dpfwk/utils/include/inner/utils_spinlock.h | ||
| 44 | ++++ b/src/stack/tcp/src/dpfwk/utils/include/inner/utils_spinlock.h | ||
| 45 | +@@ -34,6 +34,8 @@ static inline void SPINLOCK_CpuRelax(void) | ||
| 46 | + __asm__ __volatile__("pause": : :"memory"); | ||
| 47 | + #elif defined(__aarch64__) || defined(_M_ARM64) | ||
| 48 | + __asm__ __volatile__("yield": : :"memory"); | ||
| 49 | ++#elif defined(__loongarch64) | ||
| 50 | ++ __asm__ __volatile__("dbar 0" : : : "memory"); | ||
| 51 | + #else | ||
| 52 | + return; | ||
| 53 | + #endif | ||
| 54 | +-- | ||
| 55 | +2.54.0 | ||
| 56 | + | ||
| @@ -1,7 +1,7 @@ | |||
| 1 | Summary: libknet | 1 | Summary: libknet |
| 2 | Name: knet | 2 | Name: knet |
| 3 | Version: 1.0.0 | 3 | Version: 1.0.0 |
| 4 | -Release: 2 | 4 | +Release: 3 |
| 5 | License: MulanPSL-2.0 | 5 | License: MulanPSL-2.0 |
| 6 | Group: Development/Libraries | 6 | Group: Development/Libraries |
| 7 | Vendor: Huawei Technologies Co., Ltd. | 7 | Vendor: Huawei Technologies Co., Ltd. |
| @@ -11,6 +11,7 @@ BuildRequires: dpdk >= 21.11-5 | |||
| 11 | BuildRequires: libboundscheck cjson-devel cjson | 11 | BuildRequires: libboundscheck cjson-devel cjson |
| 12 | Source: %{name}-%{version}.tar.gz | 12 | Source: %{name}-%{version}.tar.gz |
| 13 | 13 | ||
| 14 | +Patch1: knet-1.0.0-add-support-for-loongarch64.patch | ||
| 14 | 15 | ||
| 15 | %define project %{name}-%{version} | 16 | %define project %{name}-%{version} |
| 16 | %define projectdir %(echo $PWD)/rpmbuild/BUILD/%{project} | 17 | %define projectdir %(echo $PWD)/rpmbuild/BUILD/%{project} |
| @@ -23,7 +24,7 @@ Source: %{name}-%{version}.tar.gz | |||
| 23 | A multi-protocol framework, enables NIC acceleration and provides seamless application migration. | 24 | A multi-protocol framework, enables NIC acceleration and provides seamless application migration. |
| 24 | 25 | ||
| 25 | %prep | 26 | %prep |
| 26 | -%setup -q | 27 | +%autosetup -p1 |
| 27 | 28 | ||
| 28 | 29 | ||
| 29 | %build | 30 | %build |
| @@ -94,6 +95,9 @@ fi | |||
| 94 | %dir %{knetsysdir}/knet/run | 95 | %dir %{knetsysdir}/knet/run |
| 95 | 96 | ||
| 96 | %changelog | 97 | %changelog |
| 98 | +* Tue Aug 18 2026 doupengda <doupengda@loongson.cn> 1.0.0-3 | ||
| 99 | +- add support for loongarch64 | ||
| 100 | + | ||
| 97 | * Tue Feb 10 2026 Build System <tangzhengliang1@huawei.com> - 1.0.0-2 | 101 | * Tue Feb 10 2026 Build System <tangzhengliang1@huawei.com> - 1.0.0-2 |
| 98 | - resolve cjson, dpdk, libboundscheck dependency automatically | 102 | - resolve cjson, dpdk, libboundscheck dependency automatically |
| 99 | 103 | ||