[PATCH V2] raid6: Add RISC-V SIMD syndrome and recovery calculations
Chunyan Zhang
zhang.lyra at gmail.com
Tue Feb 11 01:59:26 PST 2025
On Tue, 28 Jan 2025 at 06:34, Charlie Jenkins <charlie at rivosinc.com> wrote:
>
> On Mon, Jan 27, 2025 at 09:39:11AM +0100, Paul Menzel wrote:
> > Dear Chunyan,
> >
> >
> > Thank you for the patch.
> >
> >
> > Am 27.01.25 um 07:15 schrieb Chunyan Zhang:
> > > The assembly is originally based on the ARM NEON and int.uc, but uses
> > > RISC-V vector instructions to implement the RAID6 syndrome and
> > > recovery calculations.
> > >
> > > Results on QEMU running with the option "-icount shift=0":
> > >
> > > raid6: rvvx1 gen() 1008 MB/s
> > > raid6: rvvx2 gen() 1395 MB/s
> > > raid6: rvvx4 gen() 1584 MB/s
> > > raid6: rvvx8 gen() 1694 MB/s
> > > raid6: int64x8 gen() 113 MB/s
> > > raid6: int64x4 gen() 116 MB/s
> > > raid6: int64x2 gen() 272 MB/s
> > > raid6: int64x1 gen() 229 MB/s
> > > raid6: using algorithm rvvx8 gen() 1694 MB/s
> > > raid6: .... xor() 1000 MB/s, rmw enabled
> > > raid6: using rvv recovery algorithm
> >
> > How did you start QEMU and on what host did you run it? Does it change
> > between runs? (For me these benchmark values were very unreliable in the
> > past on x86 hardware.)
>
> I reported dramatic gains on vector as well in this response [1]. Note
> that these gains are only present when using the QEMU option "-icount
> shift=0" vector becomes dramatically more performant. Without this
> option we do not see a performance gain on QEMU. However riscv vector is
> known to not be less optimized on QEMU so having vector be less
> performant on some QEMU configurations is not necessarily representative
> of hardware implementations.
>
>
> My full qemu command is (running on x86 host):
>
> qemu-system-riscv64 -nographic -m 1G -machine virt -smp 1\
> -kernel arch/riscv/boot/Image \
> -append "root=/dev/vda rw earlycon console=ttyS0" \
> -drive file=rootfs.ext2,format=raw,id=hd0,if=none \
> -bios default -cpu rv64,v=true,vlen=256,vext_spec=v1.0 \
> -device virtio-blk-device,drive=hd0
>
> This is with version 9.2.0.
>
>
> I am also facing this issue when executing this:
>
> raid6: rvvx1 gen() 717 MB/s
> raid6: rvvx2 gen() 734 MB/s
> Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
>
> Only rvvx4 is failing. I applied this patch to 6.13.
I used your command to run but no issue on my side (x86 host, qemu
version is 9.2.0, kernel 6.13 too):
qemu-system-riscv64 -nographic -m 1G -machine virt -smp 1 -icount shift=0 \
-kernel arch/riscv/boot/Image \
-append "rootwait root=/dev/vda ro" \
-drive file=rootfs.ext4,format=raw,id=hd0 \
-bios default -cpu rv64,v=true,vlen=256,vext_spec=v1.0 \
-device virtio-blk-device,drive=hd0
Thanks,
Chunyan
>
> - Charlie
>
More information about the linux-riscv
mailing list