* [v5 1/2] lib/raid6: Build proper files on corresponding arch
@ 2017-04-28 5:58 Matt Brown
2017-04-28 5:58 ` [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome Matt Brown
2017-08-01 22:27 ` [v5 1/2] lib/raid6: Build proper files on corresponding arch Daniel Axtens
0 siblings, 2 replies; 9+ messages in thread
From: Matt Brown @ 2017-04-28 5:58 UTC (permalink / raw)
To: linuxppc-dev; +Cc: dja
Previously the raid6 test Makefile did not correctly build the files for
testing on PowerPC. This patch fixes the bug, so that all appropriate files
for PowerPC are built.
This patch also fixes the missing and mismatched ifdef statements to allow the
altivec.uc file to be built correctly.
Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
---
Changelog
v5
- moved altivec.uc fix into this patch
- updates commit message
---
lib/raid6/altivec.uc | 3 +++
lib/raid6/test/Makefile | 8 +++++---
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/lib/raid6/altivec.uc b/lib/raid6/altivec.uc
index 682aae8..d20ed0d 100644
--- a/lib/raid6/altivec.uc
+++ b/lib/raid6/altivec.uc
@@ -24,10 +24,13 @@
#include <linux/raid/pq.h>
+#ifdef CONFIG_ALTIVEC
+
#include <altivec.h>
#ifdef __KERNEL__
# include <asm/cputable.h>
# include <asm/switch_to.h>
+#endif /* __KERNEL__ */
/*
* This is the C data type to use. We use a vector of
diff --git a/lib/raid6/test/Makefile b/lib/raid6/test/Makefile
index 9c333e9..b64a267 100644
--- a/lib/raid6/test/Makefile
+++ b/lib/raid6/test/Makefile
@@ -44,10 +44,12 @@ else ifeq ($(HAS_NEON),yes)
CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
else
HAS_ALTIVEC := $(shell printf '\#include <altivec.h>\nvector int a;\n' |\
- gcc -c -x c - >&/dev/null && \
- rm ./-.o && echo yes)
+ gcc -c -x c - >/dev/null && rm ./-.o && echo yes)
ifeq ($(HAS_ALTIVEC),yes)
- OBJS += altivec1.o altivec2.o altivec4.o altivec8.o
+ 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
endif
ifeq ($(ARCH),tilegx)
--
2.9.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome
2017-04-28 5:58 [v5 1/2] lib/raid6: Build proper files on corresponding arch Matt Brown
@ 2017-04-28 5:58 ` Matt Brown
2017-08-01 23:01 ` Daniel Axtens
2017-08-02 0:20 ` Daniel Axtens
2017-08-01 22:27 ` [v5 1/2] lib/raid6: Build proper files on corresponding arch Daniel Axtens
1 sibling, 2 replies; 9+ messages in thread
From: Matt Brown @ 2017-04-28 5:58 UTC (permalink / raw)
To: linuxppc-dev; +Cc: dja
The raid6 Q syndrome check has been optimised using the vpermxor
instruction. This instruction was made available with POWER8, ISA version
2.07. It allows for both vperm and vxor instructions to be done in a single
instruction. This has been tested for correctness on a ppc64le vm with a
basic RAID6 setup containing 5 drives.
The performance benchmarks are from the raid6test in the /lib/raid6/test
directory. These results are from an IBM Firestone machine with ppc64le
architecture. The benchmark results show a 35% speed increase over the best
existing algorithm for powerpc (altivec). The raid6test has also been run
on a big-endian ppc64 vm to ensure it also works for big-endian
architectures.
Performance benchmarks:
raid6: altivecx4 gen() 18773 MB/s
raid6: altivecx8 gen() 19438 MB/s
raid6: vpermxor4 gen() 25112 MB/s
raid6: vpermxor8 gen() 26279 MB/s
Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
---
Changelog
v5
- moved altivec.uc fix into other patch in series
---
include/linux/raid/pq.h | 4 ++
lib/raid6/Makefile | 27 ++++++++++++-
lib/raid6/algos.c | 4 ++
lib/raid6/test/Makefile | 14 ++++++-
lib/raid6/vpermxor.uc | 104 ++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 151 insertions(+), 2 deletions(-)
create mode 100644 lib/raid6/vpermxor.uc
diff --git a/include/linux/raid/pq.h b/include/linux/raid/pq.h
index 4d57bba..3df9aa6 100644
--- a/include/linux/raid/pq.h
+++ b/include/linux/raid/pq.h
@@ -107,6 +107,10 @@ extern const struct raid6_calls raid6_avx512x2;
extern const struct raid6_calls raid6_avx512x4;
extern const struct raid6_calls raid6_tilegx8;
extern const struct raid6_calls raid6_s390vx8;
+extern const struct raid6_calls raid6_vpermxor1;
+extern const struct raid6_calls raid6_vpermxor2;
+extern const struct raid6_calls raid6_vpermxor4;
+extern const struct raid6_calls raid6_vpermxor8;
struct raid6_recov_calls {
void (*data2)(int, size_t, int, int, void **);
diff --git a/lib/raid6/Makefile b/lib/raid6/Makefile
index 3057011..db095a7 100644
--- a/lib/raid6/Makefile
+++ b/lib/raid6/Makefile
@@ -4,7 +4,8 @@ raid6_pq-y += algos.o recov.o tables.o int1.o int2.o int4.o \
int8.o int16.o int32.o
raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o avx512.o recov_avx512.o
-raid6_pq-$(CONFIG_ALTIVEC) += altivec1.o altivec2.o altivec4.o altivec8.o
+raid6_pq-$(CONFIG_ALTIVEC) += altivec1.o altivec2.o altivec4.o altivec8.o \
+ vpermxor1.o vpermxor2.o vpermxor4.o vpermxor8.o
raid6_pq-$(CONFIG_KERNEL_MODE_NEON) += neon.o neon1.o neon2.o neon4.o neon8.o
raid6_pq-$(CONFIG_TILEGX) += tilegx8.o
raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o
@@ -88,6 +89,30 @@ $(obj)/altivec8.c: UNROLL := 8
$(obj)/altivec8.c: $(src)/altivec.uc $(src)/unroll.awk FORCE
$(call if_changed,unroll)
+CFLAGS_vpermxor1.o += $(altivec_flags)
+targets += vpermxor1.c
+$(obj)/vpermxor1.c: UNROLL := 1
+$(obj)/vpermxor1.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
+ $(call if_changed,unroll)
+
+CFLAGS_vpermxor2.o += $(altivec_flags)
+targets += vpermxor2.c
+$(obj)/vpermxor2.c: UNROLL := 2
+$(obj)/vpermxor2.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
+ $(call if_changed,unroll)
+
+CFLAGS_vpermxor4.o += $(altivec_flags)
+targets += vpermxor4.c
+$(obj)/vpermxor4.c: UNROLL := 4
+$(obj)/vpermxor4.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
+ $(call if_changed,unroll)
+
+CFLAGS_vpermxor8.o += $(altivec_flags)
+targets += vpermxor8.c
+$(obj)/vpermxor8.c: UNROLL := 8
+$(obj)/vpermxor8.c: $(src)/vpermxor.uc $(src)/unroll.awk FORCE
+ $(call if_changed,unroll)
+
CFLAGS_neon1.o += $(NEON_FLAGS)
targets += neon1.c
$(obj)/neon1.c: UNROLL := 1
diff --git a/lib/raid6/algos.c b/lib/raid6/algos.c
index 7857049..edd4f69 100644
--- a/lib/raid6/algos.c
+++ b/lib/raid6/algos.c
@@ -74,6 +74,10 @@ const struct raid6_calls * const raid6_algos[] = {
&raid6_altivec2,
&raid6_altivec4,
&raid6_altivec8,
+ &raid6_vpermxor1,
+ &raid6_vpermxor2,
+ &raid6_vpermxor4,
+ &raid6_vpermxor8,
#endif
#if defined(CONFIG_TILEGX)
&raid6_tilegx8,
diff --git a/lib/raid6/test/Makefile b/lib/raid6/test/Makefile
index 2c7b60e..9c333e9 100644
--- a/lib/raid6/test/Makefile
+++ b/lib/raid6/test/Makefile
@@ -97,6 +97,18 @@ altivec4.c: altivec.uc ../unroll.awk
altivec8.c: altivec.uc ../unroll.awk
$(AWK) ../unroll.awk -vN=8 < altivec.uc > $@
+vpermxor1.c: vpermxor.uc ../unroll.awk
+ $(AWK) ../unroll.awk -vN=1 < vpermxor.uc > $@
+
+vpermxor2.c: vpermxor.uc ../unroll.awk
+ $(AWK) ../unroll.awk -vN=2 < vpermxor.uc > $@
+
+vpermxor4.c: vpermxor.uc ../unroll.awk
+ $(AWK) ../unroll.awk -vN=4 < vpermxor.uc > $@
+
+vpermxor8.c: vpermxor.uc ../unroll.awk
+ $(AWK) ../unroll.awk -vN=8 < vpermxor.uc > $@
+
int1.c: int.uc ../unroll.awk
$(AWK) ../unroll.awk -vN=1 < int.uc > $@
@@ -122,7 +134,7 @@ tables.c: mktables
./mktables > tables.c
clean:
- rm -f *.o *.a mktables mktables.c *.uc int*.c altivec*.c neon*.c tables.c raid6test
+ rm -f *.o *.a mktables mktables.c *.uc int*.c altivec*.c vpermxor*.c neon*.c tables.c raid6test
rm -f tilegx*.c
spotless: clean
diff --git a/lib/raid6/vpermxor.uc b/lib/raid6/vpermxor.uc
new file mode 100644
index 0000000..31a324d
--- /dev/null
+++ b/lib/raid6/vpermxor.uc
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2017, Matt Brown, IBM Corp.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * vpermxor$#.c
+ *
+ * Based on H. Peter Anvin's paper - The mathematics of RAID-6
+ *
+ * $#-way unrolled portable integer math RAID-6 instruction set
+ * This file is postprocessed using unroll.awk
+ *
+ * vpermxor$#.c makes use of the vpermxor opcode to optimise the RAID6 Q
+ * syndrome calculations.
+ * This can be run on systems which have both Altivec and the vpermxor opcode.
+ *
+ * This instruction was introduced in POWER8 - ISA v2.07.
+ */
+
+#include <linux/raid/pq.h>
+#ifdef CONFIG_ALTIVEC
+
+#include <altivec.h>
+#ifdef __KERNEL__
+#include <asm/cputable.h>
+#include <asm/switch_to.h>
+#endif
+
+typedef vector unsigned char unative_t;
+#define NSIZE sizeof(unative_t)
+
+static const vector unsigned char gf_low = {0x1e, 0x1c, 0x1a, 0x18, 0x16, 0x14,
+ 0x12, 0x10, 0x0e, 0x0c, 0x0a, 0x08,
+ 0x06, 0x04, 0x02,0x00};
+static const vector unsigned char gf_high = {0xfd, 0xdd, 0xbd, 0x9d, 0x7d, 0x5d,
+ 0x3d, 0x1d, 0xe0, 0xc0, 0xa0, 0x80,
+ 0x60, 0x40, 0x20, 0x00};
+
+static void noinline raid6_vpermxor$#_gen_syndrome_real(int disks, size_t bytes,
+ void **ptrs)
+{
+ u8 **dptr = (u8 **)ptrs;
+ u8 *p, *q;
+ int d, z, z0;
+ unative_t wp$$, wq$$, wd$$;
+
+ z0 = disks - 3; /* Highest data disk */
+ p = dptr[z0+1]; /* XOR parity */
+ q = dptr[z0+2]; /* RS syndrome */
+
+ for (d = 0; d < bytes; d += NSIZE*$#) {
+ wp$$ = wq$$ = *(unative_t *)&dptr[z0][d+$$*NSIZE];
+
+ for (z = z0-1; z>=0; z--) {
+ wd$$ = *(unative_t *)&dptr[z][d+$$*NSIZE];
+ /* P syndrome */
+ wp$$ = vec_xor(wp$$, wd$$);
+
+ /*Q syndrome */
+ asm("vpermxor %0,%1,%2,%3":"=v"(wq$$):"v"(gf_high), "v"(gf_low), "v"(wq$$));
+ wq$$ = vec_xor(wq$$, wd$$);
+ }
+ *(unative_t *)&p[d+NSIZE*$$] = wp$$;
+ *(unative_t *)&q[d+NSIZE*$$] = wq$$;
+ }
+}
+
+static void raid6_vpermxor$#_gen_syndrome(int disks, size_t bytes, void **ptrs)
+{
+ preempt_disable();
+ enable_kernel_altivec();
+
+ raid6_vpermxor$#_gen_syndrome_real(disks, bytes, ptrs);
+
+ disable_kernel_altivec();
+ preempt_enable();
+}
+
+int raid6_have_altivec_vpermxor(void);
+#if $# == 1
+int raid6_have_altivec_vpermxor(void)
+{
+ /* Check if CPU has both altivec and the vpermxor instruction*/
+# ifdef __KERNEL__
+ return (cpu_has_feature(CPU_FTR_ALTIVEC_COMP) &&
+ cpu_has_feature(CPU_FTR_ARCH_207S));
+# else
+ return 1;
+#endif
+
+}
+#endif
+
+const struct raid6_calls raid6_vpermxor$# = {
+ raid6_vpermxor$#_gen_syndrome,
+ NULL,
+ raid6_have_altivec_vpermxor,
+ "vpermxor$#",
+ 0
+};
+#endif
--
2.9.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [v5 1/2] lib/raid6: Build proper files on corresponding arch
2017-04-28 5:58 [v5 1/2] lib/raid6: Build proper files on corresponding arch Matt Brown
2017-04-28 5:58 ` [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome Matt Brown
@ 2017-08-01 22:27 ` Daniel Axtens
2017-08-02 2:00 ` Michael Ellerman
1 sibling, 1 reply; 9+ messages in thread
From: Daniel Axtens @ 2017-08-01 22:27 UTC (permalink / raw)
To: Matt Brown, linuxppc-dev
Hi Matt,
> --- a/lib/raid6/test/Makefile
> +++ b/lib/raid6/test/Makefile
> @@ -44,10 +44,12 @@ else ifeq ($(HAS_NEON),yes)
> CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
> else
> HAS_ALTIVEC := $(shell printf '\#include <altivec.h>\nvector int a;\n' |\
> - gcc -c -x c - >&/dev/null && \
> - rm ./-.o && echo yes)
> + gcc -c -x c - >/dev/null && rm ./-.o && echo yes)
>From memory the change here (s/>&/>/) was necessary to get the build to
succeed - did we ever figure out why that was? I'm not enough of a shell
guru to grok the difference. If it's easy to explain it would be good to
put it in the commit message, rather than just saying you fixed an
unspecified bug.
> ifeq ($(HAS_ALTIVEC),yes)
> - OBJS += altivec1.o altivec2.o altivec4.o altivec8.o
> + 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
You've added vpermxor here, but you don't define them until the next
patch, so the tests will fail. Please move the change to OBJS to the
next patch.
With that change, I'd be happy to formally Review this patch.
Regards,
Daniel
> endif
> endif
> ifeq ($(ARCH),tilegx)
> --
> 2.9.3
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome
2017-04-28 5:58 ` [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome Matt Brown
@ 2017-08-01 23:01 ` Daniel Axtens
2017-08-02 2:04 ` Michael Ellerman
2017-08-02 0:20 ` Daniel Axtens
1 sibling, 1 reply; 9+ messages in thread
From: Daniel Axtens @ 2017-08-01 23:01 UTC (permalink / raw)
To: Matt Brown, linuxppc-dev
Hi Matt,
> The raid6 Q syndrome check has been optimised using the vpermxor
> instruction.
Very much a nit, but normally we'd write the change that the patch makes
as a command: "Optimise the raid6 Q syndrome generation using the
vpermxor instruction" - see
https://www.kernel.org/doc/html/v4.11/process/submitting-patches.html#describe-your-changes
> +static void noinline raid6_vpermxor$#_gen_syndrome_real(int disks, size_t bytes,
> + void **ptrs)
> +{
> + u8 **dptr = (u8 **)ptrs;
> + u8 *p, *q;
> + int d, z, z0;
> + unative_t wp$$, wq$$, wd$$;
> +
> + z0 = disks - 3; /* Highest data disk */
> + p = dptr[z0+1]; /* XOR parity */
> + q = dptr[z0+2]; /* RS syndrome */
> +
> + for (d = 0; d < bytes; d += NSIZE*$#) {
> + wp$$ = wq$$ = *(unative_t *)&dptr[z0][d+$$*NSIZE];
> +
> + for (z = z0-1; z>=0; z--) {
> + wd$$ = *(unative_t *)&dptr[z][d+$$*NSIZE];
> + /* P syndrome */
> + wp$$ = vec_xor(wp$$, wd$$);
> +
> + /*Q syndrome */
> + asm("vpermxor %0,%1,%2,%3":"=v"(wq$$):"v"(gf_high), "v"(gf_low), "v"(wq$$));
Initially I thought "why can't we break this over 2 lines?" and then I
remembered that the awk script can't handle that. A space between /* and
Q would be good though.
> + wq$$ = vec_xor(wq$$, wd$$);
I generated some of the unrolled code and inspected it. It's non-trivial
to follow but that's justifiable, it's due to:
- the complex maths
- the unrolling process
- consistency with the altivec code, which I think is worth keeping
I am not sure how you could make it any easier to read, so I don't think
that should block its acceptance into the kernel.
I am confident that this code works correctly and as described.
Reviewed-by: Daniel Axtens <dja@axtens.net>
Regards,
Daniel
> --
> 2.9.3
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome
2017-04-28 5:58 ` [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome Matt Brown
2017-08-01 23:01 ` Daniel Axtens
@ 2017-08-02 0:20 ` Daniel Axtens
2017-08-04 1:40 ` Matt Brown
1 sibling, 1 reply; 9+ messages in thread
From: Daniel Axtens @ 2017-08-02 0:20 UTC (permalink / raw)
To: Matt Brown, linuxppc-dev
Oh, one final thing - I just realised there's a .gitignore file in
lib/raid6/.gitignore that needs to be updated to include the vpermxor
generated files. That should be part of this patch.
Regards,
Daniel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v5 1/2] lib/raid6: Build proper files on corresponding arch
2017-08-01 22:27 ` [v5 1/2] lib/raid6: Build proper files on corresponding arch Daniel Axtens
@ 2017-08-02 2:00 ` Michael Ellerman
2017-08-04 1:33 ` Matt Brown
0 siblings, 1 reply; 9+ messages in thread
From: Michael Ellerman @ 2017-08-02 2:00 UTC (permalink / raw)
To: Daniel Axtens, Matt Brown, linuxppc-dev
Daniel Axtens <dja@axtens.net> writes:
> Hi Matt,
>
>> --- a/lib/raid6/test/Makefile
>> +++ b/lib/raid6/test/Makefile
>> @@ -44,10 +44,12 @@ else ifeq ($(HAS_NEON),yes)
>> CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
>> else
>> HAS_ALTIVEC := $(shell printf '\#include <altivec.h>\nvector int a;\n' |\
>> - gcc -c -x c - >&/dev/null && \
>> - rm ./-.o && echo yes)
>> + gcc -c -x c - >/dev/null && rm ./-.o && echo yes)
>
> From memory the change here (s/>&/>/) was necessary to get the build to
> succeed - did we ever figure out why that was? I'm not enough of a shell
> guru to grok the difference.
Using >& redirects stdout and stderr, whereas > only redirects stdout.
So possibly it doesn't fix anything, but rather lets you see any error
emitted by the compiler rather than swallowing it?
cheers
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome
2017-08-01 23:01 ` Daniel Axtens
@ 2017-08-02 2:04 ` Michael Ellerman
0 siblings, 0 replies; 9+ messages in thread
From: Michael Ellerman @ 2017-08-02 2:04 UTC (permalink / raw)
To: Daniel Axtens, Matt Brown, linuxppc-dev
Daniel Axtens <dja@axtens.net> writes:
> Hi Matt,
>
>> The raid6 Q syndrome check has been optimised using the vpermxor
>> instruction.
>
> Very much a nit, but normally we'd write the change that the patch makes
> as a command: "Optimise the raid6 Q syndrome generation using the
> vpermxor instruction" - see
> https://www.kernel.org/doc/html/v4.11/process/submitting-patches.html#describe-your-changes
There's a good list here:
https://chris.beams.io/posts/git-commit/
Which includes "Use the imperative mood in the subject line".
And has a good rule of thumb:
A properly formed Git commit subject line should always be able to
complete the following sentence:
If applied, this commit will [your subject line here]
In this case Matt's subject is fine, but IMHO you should also use the
imperative mood for the body of the change log - which is basically what
you said :)
cheers
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v5 1/2] lib/raid6: Build proper files on corresponding arch
2017-08-02 2:00 ` Michael Ellerman
@ 2017-08-04 1:33 ` Matt Brown
0 siblings, 0 replies; 9+ messages in thread
From: Matt Brown @ 2017-08-04 1:33 UTC (permalink / raw)
To: Michael Ellerman
Cc: Daniel Axtens, open list:LINUX FOR POWERPC (32-BIT AND 64-BIT)
On Wed, Aug 2, 2017 at 12:00 PM, Michael Ellerman <mpe@ellerman.id.au> wrote:
> Daniel Axtens <dja@axtens.net> writes:
>
>> Hi Matt,
>>
>>> --- a/lib/raid6/test/Makefile
>>> +++ b/lib/raid6/test/Makefile
>>> @@ -44,10 +44,12 @@ else ifeq ($(HAS_NEON),yes)
>>> CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
>>> else
>>> HAS_ALTIVEC := $(shell printf '\#include <altivec.h>\nvector int a;\n' |\
>>> - gcc -c -x c - >&/dev/null && \
>>> - rm ./-.o && echo yes)
>>> + gcc -c -x c - >/dev/null && rm ./-.o && echo yes)
>>
>> From memory the change here (s/>&/>/) was necessary to get the build to
>> succeed - did we ever figure out why that was? I'm not enough of a shell
>> guru to grok the difference.
>
> Using >& redirects stdout and stderr, whereas > only redirects stdout.
>
> So possibly it doesn't fix anything, but rather lets you see any error
> emitted by the compiler rather than swallowing it?
>
Just had to double-check what the problem was.
The bug was that none of the ppc specific files were being built.
I'm not entirely sure how, but this fixes it so the altivec and
vpermxor files are built.
I'll fix up the commit message and move the vpermxor make defs into
the other patch.
Thanks,
Matt
> cheers
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome
2017-08-02 0:20 ` Daniel Axtens
@ 2017-08-04 1:40 ` Matt Brown
0 siblings, 0 replies; 9+ messages in thread
From: Matt Brown @ 2017-08-04 1:40 UTC (permalink / raw)
To: Daniel Axtens; +Cc: open list:LINUX FOR POWERPC (32-BIT AND 64-BIT)
On Wed, Aug 2, 2017 at 10:20 AM, Daniel Axtens <dja@axtens.net> wrote:
> Oh, one final thing - I just realised there's a .gitignore file in
> lib/raid6/.gitignore that needs to be updated to include the vpermxor
> generated files. That should be part of this patch.
>
Oh, I managed to miss that!
I'll add that and fix up that comment spacing.
Thanks,
Matt
> Regards,
> Daniel
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2017-08-04 1:40 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-28 5:58 [v5 1/2] lib/raid6: Build proper files on corresponding arch Matt Brown
2017-04-28 5:58 ` [v5 2/2] raid6/altivec: Add vpermxor implementation for raid6 Q syndrome Matt Brown
2017-08-01 23:01 ` Daniel Axtens
2017-08-02 2:04 ` Michael Ellerman
2017-08-02 0:20 ` Daniel Axtens
2017-08-04 1:40 ` Matt Brown
2017-08-01 22:27 ` [v5 1/2] lib/raid6: Build proper files on corresponding arch Daniel Axtens
2017-08-02 2:00 ` Michael Ellerman
2017-08-04 1:33 ` Matt Brown
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).