summaryrefslogtreecommitdiff
path: root/lib/raid6/rvv.h
diff options
context:
space:
mode:
authorChunyan Zhang <zhangchunyan@iscas.ac.cn>2025-11-17 21:19:25 -0700
committerPaul Walmsley <pjw@kernel.org>2025-11-19 09:19:28 -0700
commit3c58d7a51341fa032eda45d8b9904dbfae120ef5 (patch)
treece34565e76fdd41ddad24ae4b96dc711f10e9a83 /lib/raid6/rvv.h
parent6fcce9f028fb75ce03e4221f5f4f652741d178c4 (diff)
raid6: riscv: Allow code to be compiled in userspace
To support userspace raid6test, this patch adds __KERNEL__ ifdef for kernel header inclusions also userspace wrapper definitions to allow code to be compiled in userspace. This patch also drops the NSIZE macro, instead of using the vector length, which can work for both kernel and user space. Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com> Signed-off-by: Chunyan Zhang <zhangchunyan@iscas.ac.cn> Link: https://patch.msgid.link/20250718072711.3865118-5-zhangchunyan@iscas.ac.cn Signed-off-by: Paul Walmsley <pjw@kernel.org>
Diffstat (limited to 'lib/raid6/rvv.h')
-rw-r--r--lib/raid6/rvv.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/raid6/rvv.h b/lib/raid6/rvv.h
index 94044a1b707b..6d0708a2c8a4 100644
--- a/lib/raid6/rvv.h
+++ b/lib/raid6/rvv.h
@@ -7,6 +7,23 @@
* Definitions for RISC-V RAID-6 code
*/
+#ifdef __KERNEL__
+#include <asm/vector.h>
+#else
+#define kernel_vector_begin()
+#define kernel_vector_end()
+#include <sys/auxv.h>
+#include <asm/hwcap.h>
+#define has_vector() (getauxval(AT_HWCAP) & COMPAT_HWCAP_ISA_V)
+#endif
+
+#include <linux/raid/pq.h>
+
+static int rvv_has_vector(void)
+{
+ return has_vector();
+}
+
#define RAID6_RVV_WRAPPER(_n) \
static void raid6_rvv ## _n ## _gen_syndrome(int disks, \
size_t bytes, void **ptrs) \