* [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 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-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 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 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
* 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 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 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
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).