[PATCH v9 0/5] riscv: Add fine-tuned checksum functions

Conor Dooley conor.dooley at microchip.com
Thu Nov 2 03:21:51 PDT 2023


On Wed, Nov 01, 2023 at 10:06:26AM -0700, Charlie Jenkins wrote:
> On Wed, Nov 01, 2023 at 11:50:46AM +0000, Conor Dooley wrote:
> > On Tue, Oct 31, 2023 at 05:18:50PM -0700, Charlie Jenkins wrote:
> > > Each architecture generally implements fine-tuned checksum functions to
> > > leverage the instruction set. This patch adds the main checksum
> > > functions that are used in networking.
> > > 
> > > This patch takes heavy use of the Zbb extension using alternatives
> > > patching.
> > > 
> > > To test this patch, enable the configs for KUNIT, then CHECKSUM_KUNIT
> > > and RISCV_CHECKSUM_KUNIT.
> > > 
> > > I have attempted to make these functions as optimal as possible, but I
> > > have not ran anything on actual riscv hardware. My performance testing
> > > has been limited to inspecting the assembly, running the algorithms on
> > > x86 hardware, and running in QEMU.
> > > 
> > > ip_fast_csum is a relatively small function so even though it is
> > > possible to read 64 bits at a time on compatible hardware, the
> > > bottleneck becomes the clean up and setup code so loading 32 bits at a
> > > time is actually faster.
> > > 
> > > Relies on https://lore.kernel.org/lkml/20230920193801.3035093-1-evan@rivosinc.com/
> > 
> > I coulda sworn I reported build issues against the v8 of this series
> > that are still present in this v9. For example:
> > https://patchwork.kernel.org/project/linux-riscv/patch/20231031-optimize_checksum-v9-3-ea018e69b229@rivosinc.com/

> You did, and I fixed the build issues. This is another instance of how
> Patchwork reports the results of the previous build before the new build
> completes. Patchwork was very far behind so it took around 15 hours for
> the result to be ready.

:clown_face:

> There are some miscellaneous warnings in random
> drivers that I don't think can be attributed to this patch.

Yeah, there sometimes are warnings that seem spurious when you touch a
bunch of header files. I'm not really sure how to improve on that, since
it was newly introduced. My theory is that how we do a build of commit
A, then commit A~1 and then commit A again & take the difference between
the 2nd and 3rd builds (which should both be partial rebuilds) is not as
symmetrical as I might've thought and is the source of those seemingly
unrelated issues that come up from time to time.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20231102/9317c2ca/attachment.sig>


More information about the linux-riscv mailing list