* Re: [PATCH 0/4] RISC-V CRC optimizations
[not found] ` <20250302220426.GC2079@quark.localdomain>
@ 2025-03-08 12:58 ` Ignacio Encinas Rubio
2025-03-10 12:34 ` Alexandre Ghiti
0 siblings, 1 reply; 2+ messages in thread
From: Ignacio Encinas Rubio @ 2025-03-08 12:58 UTC (permalink / raw)
To: Eric Biggers, Björn Töpel, Palmer Dabbelt
Cc: linux-kernel-mentees, linux-kernel, linux-crypto, linux-riscv,
Zhihang Shao, Ard Biesheuvel, Xiao Wang, Charlie Jenkins,
Alexandre Ghiti, skhan
Hello!
On 2/3/25 23:04, Eric Biggers wrote:
> So, quite positive results. Though, the fact the msb-first CRCs are (still) so
> much slower than lsb-first ones indicates that be64_to_cpu() is super slow on
> RISC-V. That seems to be caused by the rev8 instruction from Zbb not being
> used. I wonder if there are any plans to make the endianness swap macros use
> rev8, or if I'm going to have to roll my own endianness swap in the CRC code.
> (I assume it would be fine for the CRC code to depend on both Zbb and Zbc.)
I saw this message the other day and started working on a patch, but I
would like to double-check I'm on the right track:
- be64_to_cpu ends up being __swab64 (include/uapi/linux/swab.h)
If Zbb was part of the base ISA, turning CONFIG_ARCH_USE_BUILTIN_BSWAP
would take care of the problem, but it is not the case.
Therefore, we have to define __arch_swab<X> like some "arches"(?) do in
arch/<ARCH>/include/uapi/asm/swab.h
For those functions to be correct in generic kernels, we would need to
use ALTERNATIVE() macros like in arch/riscv/include/asm/bitops.h.
Would this be ok? I'm not sure if the ALTERNATIVEs overhead can be a
problem here.
Thanks in advance :)
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 0/4] RISC-V CRC optimizations
2025-03-08 12:58 ` [PATCH 0/4] RISC-V CRC optimizations Ignacio Encinas Rubio
@ 2025-03-10 12:34 ` Alexandre Ghiti
0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Ghiti @ 2025-03-10 12:34 UTC (permalink / raw)
To: Ignacio Encinas Rubio, Eric Biggers, Björn Töpel,
Palmer Dabbelt
Cc: linux-kernel-mentees, linux-kernel, linux-crypto, linux-riscv,
Zhihang Shao, Ard Biesheuvel, Xiao Wang, Charlie Jenkins,
Alexandre Ghiti, skhan
Hi Ignacio,
On 08/03/2025 13:58, Ignacio Encinas Rubio wrote:
> Hello!
>
> On 2/3/25 23:04, Eric Biggers wrote:
>> So, quite positive results. Though, the fact the msb-first CRCs are (still) so
>> much slower than lsb-first ones indicates that be64_to_cpu() is super slow on
>> RISC-V. That seems to be caused by the rev8 instruction from Zbb not being
>> used. I wonder if there are any plans to make the endianness swap macros use
>> rev8, or if I'm going to have to roll my own endianness swap in the CRC code.
>> (I assume it would be fine for the CRC code to depend on both Zbb and Zbc.)
> I saw this message the other day and started working on a patch, but I
> would like to double-check I'm on the right track:
>
> - be64_to_cpu ends up being __swab64 (include/uapi/linux/swab.h)
>
> If Zbb was part of the base ISA, turning CONFIG_ARCH_USE_BUILTIN_BSWAP
> would take care of the problem, but it is not the case.
>
> Therefore, we have to define __arch_swab<X> like some "arches"(?) do in
> arch/<ARCH>/include/uapi/asm/swab.h
>
> For those functions to be correct in generic kernels, we would need to
> use ALTERNATIVE() macros like in arch/riscv/include/asm/bitops.h.
> Would this be ok? I'm not sure if the ALTERNATIVEs overhead can be a
> problem here.
Yes, using alternatives here is the right way to go. And the only
overhead when Zbb is available would be a nop (take a look at lib/csum.c).
Thanks for working on this, looking forward to your patch,
Alex
> Thanks in advance :)
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-03-10 12:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20250216225530.306980-1-ebiggers@kernel.org>
[not found] ` <20250224180614.GA11336@google.com>
[not found] ` <87ikorl0r5.fsf@all.your.base.are.belong.to.us>
[not found] ` <20250302220426.GC2079@quark.localdomain>
2025-03-08 12:58 ` [PATCH 0/4] RISC-V CRC optimizations Ignacio Encinas Rubio
2025-03-10 12:34 ` Alexandre Ghiti
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox