* [PATCH 0/5] raid6: raid6test build fixes and cleanups
@ 2023-07-31 10:49 WANG Xuerui
2023-07-31 10:49 ` [PATCH 1/5] raid6: remove the <linux/export.h> include from recov.c WANG Xuerui
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: WANG Xuerui @ 2023-07-31 10:49 UTC (permalink / raw)
To: Song Liu; +Cc: linux-raid, linux-kernel, WANG Xuerui
From: WANG Xuerui <git@xen0n.name>
Hi,
While working on porting the RAID6 math to the LoongArch SIMD
extensions, I found out the raid6test tool build is broken for some
time (seemingly on all arches), so I took some time to fix it and did
some cleanups while at it.
Before the fix:
> In file included from ../../../include/linux/export.h:5,
> from recov.c:16:
> ../../../include/linux/compiler.h:246:10: fatal error: asm/rwonce.h: No such file or directory
> 246 | #include <asm/rwonce.h>
> | ^~~~~~~~~~~~~~
> compilation terminated.
> make: *** [Makefile:58: recov.o] Error 1
After the fix I was able to build and test it on x86_64 and loongarch64,
with clean `git status` output after building.
WANG Xuerui (5):
raid6: remove the <linux/export.h> include from recov.c
raid6: guard the tables.c include of <linux/export.h> with __KERNEL__
raid6: test: cosmetic cleanups for the test Makefile
raid6: test: make sure all intermediate and artifact files are
.gitignored
raid6: test: only check for Altivec if building on powerpc hosts
lib/raid6/mktables.c | 2 ++
lib/raid6/recov.c | 1 -
lib/raid6/test/.gitignore | 2 ++
lib/raid6/test/Makefile | 50 ++++++++++++++++++++-------------------
4 files changed, 30 insertions(+), 25 deletions(-)
create mode 100644 lib/raid6/test/.gitignore
--
2.40.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/5] raid6: remove the <linux/export.h> include from recov.c
2023-07-31 10:49 [PATCH 0/5] raid6: raid6test build fixes and cleanups WANG Xuerui
@ 2023-07-31 10:49 ` WANG Xuerui
2023-07-31 10:49 ` [PATCH 2/5] raid6: guard the tables.c include of <linux/export.h> with __KERNEL__ WANG Xuerui
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: WANG Xuerui @ 2023-07-31 10:49 UTC (permalink / raw)
To: Song Liu; +Cc: linux-raid, linux-kernel, WANG Xuerui
From: WANG Xuerui <git@xen0n.name>
There is no exported symbol left in recov.c, so the include is now
unnecessary, and breaks the raid6test build. Remove it.
Signed-off-by: WANG Xuerui <git@xen0n.name>
---
lib/raid6/recov.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/raid6/recov.c b/lib/raid6/recov.c
index e49d519de6cbe..a7c1b2bbe40d8 100644
--- a/lib/raid6/recov.c
+++ b/lib/raid6/recov.c
@@ -13,7 +13,6 @@
* the syndrome.)
*/
-#include <linux/export.h>
#include <linux/raid/pq.h>
/* Recover two failed data blocks. */
--
2.40.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/5] raid6: guard the tables.c include of <linux/export.h> with __KERNEL__
2023-07-31 10:49 [PATCH 0/5] raid6: raid6test build fixes and cleanups WANG Xuerui
2023-07-31 10:49 ` [PATCH 1/5] raid6: remove the <linux/export.h> include from recov.c WANG Xuerui
@ 2023-07-31 10:49 ` WANG Xuerui
2023-07-31 10:49 ` [PATCH 3/5] raid6: test: cosmetic cleanups for the test Makefile WANG Xuerui
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: WANG Xuerui @ 2023-07-31 10:49 UTC (permalink / raw)
To: Song Liu; +Cc: linux-raid, linux-kernel, WANG Xuerui
From: WANG Xuerui <git@xen0n.name>
The export directives for the tables are already emitted with __KERNEL__
guards, but the <linux/export.h> include is not, causing errors when
building the raid6test program. Guard this include too to fix the
raid6test build.
Signed-off-by: WANG Xuerui <git@xen0n.name>
---
lib/raid6/mktables.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/lib/raid6/mktables.c b/lib/raid6/mktables.c
index f02e10fa62381..3be03793237c2 100644
--- a/lib/raid6/mktables.c
+++ b/lib/raid6/mktables.c
@@ -56,7 +56,9 @@ int main(int argc, char *argv[])
uint8_t v;
uint8_t exptbl[256], invtbl[256];
+ printf("#ifdef __KERNEL__\n");
printf("#include <linux/export.h>\n");
+ printf("#endif\n");
printf("#include <linux/raid/pq.h>\n");
/* Compute multiplication table */
--
2.40.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/5] raid6: test: cosmetic cleanups for the test Makefile
2023-07-31 10:49 [PATCH 0/5] raid6: raid6test build fixes and cleanups WANG Xuerui
2023-07-31 10:49 ` [PATCH 1/5] raid6: remove the <linux/export.h> include from recov.c WANG Xuerui
2023-07-31 10:49 ` [PATCH 2/5] raid6: guard the tables.c include of <linux/export.h> with __KERNEL__ WANG Xuerui
@ 2023-07-31 10:49 ` WANG Xuerui
2023-07-31 10:49 ` [PATCH 4/5] raid6: test: make sure all intermediate and artifact files are .gitignored WANG Xuerui
2023-07-31 10:49 ` [PATCH 5/5] raid6: test: only check for Altivec if building on powerpc hosts WANG Xuerui
4 siblings, 0 replies; 7+ messages in thread
From: WANG Xuerui @ 2023-07-31 10:49 UTC (permalink / raw)
To: Song Liu; +Cc: linux-raid, linux-kernel, WANG Xuerui
From: WANG Xuerui <git@xen0n.name>
Use tabs/spaces consistently: hard tabs for marking recipe lines only,
spaces for everything else.
Also, the OPTFLAGS declaration actually included the tabs preceding the
line comment, making compiler invocation lines unnecessarily long. As
the entire block of declarations are meant for ad-hoc customization
(otherwise they would probably make use of `?=` instead of `=`), move
the "Adjust as desired" comment above the block too to fix the long
invocation lines.
Signed-off-by: WANG Xuerui <git@xen0n.name>
---
lib/raid6/test/Makefile | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/lib/raid6/test/Makefile b/lib/raid6/test/Makefile
index 4fb7700a741bd..143cda60faa12 100644
--- a/lib/raid6/test/Makefile
+++ b/lib/raid6/test/Makefile
@@ -6,14 +6,15 @@
pound := \#
-CC = gcc
-OPTFLAGS = -O2 # Adjust as desired
-CFLAGS = -I.. -I ../../../include -g $(OPTFLAGS)
-LD = ld
-AWK = awk -f
-AR = ar
-RANLIB = ranlib
-OBJS = int1.o int2.o int4.o int8.o int16.o int32.o recov.o algos.o tables.o
+# Adjust as desired
+CC = gcc
+OPTFLAGS = -O2
+CFLAGS = -I.. -I ../../../include -g $(OPTFLAGS)
+LD = ld
+AWK = awk -f
+AR = ar
+RANLIB = ranlib
+OBJS = int1.o int2.o int4.o int8.o int16.o int32.o recov.o algos.o tables.o
ARCH := $(shell uname -m 2>/dev/null | sed -e /s/i.86/i386/)
ifeq ($(ARCH),i386)
@@ -37,9 +38,9 @@ endif
ifeq ($(IS_X86),yes)
OBJS += mmx.o sse1.o sse2.o avx2.o recov_ssse3.o recov_avx2.o avx512.o recov_avx512.o
CFLAGS += -DCONFIG_X86
- CFLAGS += $(shell echo "vpmovm2b %k1, %zmm5" | \
- gcc -c -x assembler - >/dev/null 2>&1 && \
- rm ./-.o && echo -DCONFIG_AS_AVX512=1)
+ CFLAGS += $(shell echo "vpmovm2b %k1, %zmm5" | \
+ gcc -c -x assembler - >/dev/null 2>&1 && \
+ rm ./-.o && echo -DCONFIG_AS_AVX512=1)
else ifeq ($(HAS_NEON),yes)
OBJS += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o
CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
@@ -63,12 +64,12 @@ endif
%.uc: ../%.uc
cp -f $< $@
-all: raid6.a raid6test
+all: raid6.a raid6test
raid6.a: $(OBJS)
- rm -f $@
- $(AR) cq $@ $^
- $(RANLIB) $@
+ rm -f $@
+ $(AR) cq $@ $^
+ $(RANLIB) $@
raid6test: test.c raid6.a
$(CC) $(CFLAGS) -o raid6test $^
--
2.40.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/5] raid6: test: make sure all intermediate and artifact files are .gitignored
2023-07-31 10:49 [PATCH 0/5] raid6: raid6test build fixes and cleanups WANG Xuerui
` (2 preceding siblings ...)
2023-07-31 10:49 ` [PATCH 3/5] raid6: test: cosmetic cleanups for the test Makefile WANG Xuerui
@ 2023-07-31 10:49 ` WANG Xuerui
2023-08-13 17:21 ` Song Liu
2023-07-31 10:49 ` [PATCH 5/5] raid6: test: only check for Altivec if building on powerpc hosts WANG Xuerui
4 siblings, 1 reply; 7+ messages in thread
From: WANG Xuerui @ 2023-07-31 10:49 UTC (permalink / raw)
To: Song Liu; +Cc: linux-raid, linux-kernel, WANG Xuerui
From: WANG Xuerui <git@xen0n.name>
Currently when the raid6test utility is built, the resulting binary and
an int.uc file are not being ignored, which can get inadvertently
committed as a result when one works on the raid6 code. Ignore them to
make `git status` clean at all times.
Signed-off-by: WANG Xuerui <git@xen0n.name>
---
lib/raid6/test/.gitignore | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 lib/raid6/test/.gitignore
diff --git a/lib/raid6/test/.gitignore b/lib/raid6/test/.gitignore
new file mode 100644
index 0000000000000..bb92e11396c6e
--- /dev/null
+++ b/lib/raid6/test/.gitignore
@@ -0,0 +1,2 @@
+/int.uc
+/raid6test
--
2.40.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/5] raid6: test: only check for Altivec if building on powerpc hosts
2023-07-31 10:49 [PATCH 0/5] raid6: raid6test build fixes and cleanups WANG Xuerui
` (3 preceding siblings ...)
2023-07-31 10:49 ` [PATCH 4/5] raid6: test: make sure all intermediate and artifact files are .gitignored WANG Xuerui
@ 2023-07-31 10:49 ` WANG Xuerui
4 siblings, 0 replies; 7+ messages in thread
From: WANG Xuerui @ 2023-07-31 10:49 UTC (permalink / raw)
To: Song Liu; +Cc: linux-raid, linux-kernel, WANG Xuerui
From: WANG Xuerui <git@xen0n.name>
Altivec is only available for powerpc hosts, so only check for its
availability when the host is powerpc, to avoid error messages being
shown on architectures other than x86, arm or powerpc.
Signed-off-by: WANG Xuerui <git@xen0n.name>
---
lib/raid6/test/Makefile | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/lib/raid6/test/Makefile b/lib/raid6/test/Makefile
index 143cda60faa12..1f693ea3b980c 100644
--- a/lib/raid6/test/Makefile
+++ b/lib/raid6/test/Makefile
@@ -35,6 +35,12 @@ ifeq ($(ARCH),aarch64)
HAS_NEON = yes
endif
+ifeq ($(findstring ppc,$(ARCH)),ppc)
+ CFLAGS += -I../../../arch/powerpc/include
+ HAS_ALTIVEC := $(shell printf '$(pound)include <altivec.h>\nvector int a;\n' |\
+ gcc -c -x c - >/dev/null && rm ./-.o && echo yes)
+endif
+
ifeq ($(IS_X86),yes)
OBJS += mmx.o sse1.o sse2.o avx2.o recov_ssse3.o recov_avx2.o avx512.o recov_avx512.o
CFLAGS += -DCONFIG_X86
@@ -44,15 +50,10 @@ ifeq ($(IS_X86),yes)
else ifeq ($(HAS_NEON),yes)
OBJS += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o
CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
-else
- HAS_ALTIVEC := $(shell printf '$(pound)include <altivec.h>\nvector int a;\n' |\
- gcc -c -x c - >/dev/null && rm ./-.o && echo yes)
- ifeq ($(HAS_ALTIVEC),yes)
- CFLAGS += -I../../../arch/powerpc/include
- CFLAGS += -DCONFIG_ALTIVEC
- OBJS += altivec1.o altivec2.o altivec4.o altivec8.o \
- vpermxor1.o vpermxor2.o vpermxor4.o vpermxor8.o
- endif
+else ifeq ($(HAS_ALTIVEC),yes)
+ CFLAGS += -DCONFIG_ALTIVEC
+ OBJS += altivec1.o altivec2.o altivec4.o altivec8.o \
+ vpermxor1.o vpermxor2.o vpermxor4.o vpermxor8.o
endif
.c.o:
--
2.40.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 4/5] raid6: test: make sure all intermediate and artifact files are .gitignored
2023-07-31 10:49 ` [PATCH 4/5] raid6: test: make sure all intermediate and artifact files are .gitignored WANG Xuerui
@ 2023-08-13 17:21 ` Song Liu
0 siblings, 0 replies; 7+ messages in thread
From: Song Liu @ 2023-08-13 17:21 UTC (permalink / raw)
To: WANG Xuerui; +Cc: linux-raid, linux-kernel, WANG Xuerui
On Mon, Jul 31, 2023 at 2:49 PM WANG Xuerui <kernel@xen0n.name> wrote:
>
> From: WANG Xuerui <git@xen0n.name>
>
> Currently when the raid6test utility is built, the resulting binary and
> an int.uc file are not being ignored, which can get inadvertently
> committed as a result when one works on the raid6 code. Ignore them to
> make `git status` clean at all times.
>
> Signed-off-by: WANG Xuerui <git@xen0n.name>
> ---
> lib/raid6/test/.gitignore | 2 ++
> 1 file changed, 2 insertions(+)
> create mode 100644 lib/raid6/test/.gitignore
>
> diff --git a/lib/raid6/test/.gitignore b/lib/raid6/test/.gitignore
> new file mode 100644
> index 0000000000000..bb92e11396c6e
> --- /dev/null
> +++ b/lib/raid6/test/.gitignore
> @@ -0,0 +1,2 @@
> +/int.uc
We also need neon.uc, right?
Song
> +/raid6test
> --
> 2.40.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-08-13 17:22 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-31 10:49 [PATCH 0/5] raid6: raid6test build fixes and cleanups WANG Xuerui
2023-07-31 10:49 ` [PATCH 1/5] raid6: remove the <linux/export.h> include from recov.c WANG Xuerui
2023-07-31 10:49 ` [PATCH 2/5] raid6: guard the tables.c include of <linux/export.h> with __KERNEL__ WANG Xuerui
2023-07-31 10:49 ` [PATCH 3/5] raid6: test: cosmetic cleanups for the test Makefile WANG Xuerui
2023-07-31 10:49 ` [PATCH 4/5] raid6: test: make sure all intermediate and artifact files are .gitignored WANG Xuerui
2023-08-13 17:21 ` Song Liu
2023-07-31 10:49 ` [PATCH 5/5] raid6: test: only check for Altivec if building on powerpc hosts WANG Xuerui
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).