public inbox for linux-crypto@vger.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
	"David S. Miller" <davem@davemloft.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux Crypto Mailing List <linux-crypto@vger.kernel.org>
Subject: Re: [GIT PULL] Crypto Update for 6.15
Date: Tue, 25 Mar 2025 20:20:38 -0700	[thread overview]
Message-ID: <20250326032038.GC1661@sol.localdomain> (raw)
In-Reply-To: <Z-NdGvErMGS5OT7X@gondor.apana.org.au>

On Wed, Mar 26, 2025 at 09:49:14AM +0800, Herbert Xu wrote:
> On Tue, Mar 25, 2025 at 08:25:41AM -0700, Eric Biggers wrote:
> > 
> > Herbert didn't mention that I have nacked this patch, which he is insisting on
> > pushing for some reason instead of my original version that is much better.
> 
> Let's see how your version is so much better:
> 
> https://lore.kernel.org/all/20250212154718.44255-6-ebiggers@kernel.org/
> 
> -	/* Up to 1 + FS_VERITY_MAX_LEVELS pages may be mapped at once */
> -	BUILD_BUG_ON(1 + FS_VERITY_MAX_LEVELS > KM_MAX_IDX);
> +	/*
> +	 * Up to FS_VERITY_MAX_PENDING_DATA_BLOCKS + FS_VERITY_MAX_LEVELS pages
> +	 * may be mapped at once.
> +	 */
> +	BUILD_BUG_ON(FS_VERITY_MAX_PENDING_DATA_BLOCKS +
> +		     FS_VERITY_MAX_LEVELS > KM_MAX_IDX);
> 
> This arbitrary limit is a direct result of your welded-on commitment
> to an API that supports virtually mapped addresses only.  Make no
> mistake, virtual addresses are simple and easy to use, but the kernel
> added more complicated constructs for real reasons.

Umm, so you think someone is going to do multibuffer hashing with more buffers
than kmap_local supports (16)?  Why?  Regardless of the exact API, that case
would require kmap() to support.  It's hard to see how it would ever be worth
it, even if theoretically a CPU was capable of taking advantage of that much
instruction-level parallelism (this is implausible with SHA-256 instructions)
and ignoring the other issues like code size bloat and increased memory usage
that a very high interleaving factor would cause.

Of course, in practice this is just going to be used with 2x, which is what CPUs
can actually do with the SHA-256 instructions and avoids the various downsides
of overly-large interleaving factors.

> I've gone through your use-case in fsverity/dm-verity, and they
> never touch the data at all so the only reason for it to kmap the
> data at all is to feed it to the Crypto API, which is capable of
> doing its own kmap but you elected not to use that because you
> hate the interface.

Which is incorrect and just shows that you still haven't even read the code.
Take a look at cf715f4b7eb521a5bf67d391387b754c2fcde8d2.  Switching dm-verity to
always "map" the data blocks significantly simplified the dm-verity code (-138
line diffstat), *even before switching to shash*.  So we really want to just
pass virtual addresses to the crypto API too.  It's much simpler.

> In fact it's a recurring theme, the zswap code jumps through multiple
> hoops to map the data they're working on so that they can feed it to
> the Crypto API as a virtually mapped pointer, even though they never
> touch the mapped data at all.

Compression and hashing are not the same and use different APIs.  So this is a
straw man.  But I think you are on the wrong track for compression too.  What
zswap needs is relatively limited: only the compressed data (not the
uncompressed data) can be split across pages, and only 2 pages.  A complex API
with source and destination scatterlists isn't needed for this use case either,
even assuming that the best solution is to make all the compression algorithms
support this "natively" (most don't yet, or don't support it efficiently).
Other solutions that could be faster include just continuing to linearize the
data, or rethinking zswap to not create non-linear compressed data in the first
place, e.g. by putting compressed data only in large folios.

And yes, the zswap patchset is using request chaining, but that's because you
forced the zswap people to use it.  It wasn't their original proposal.  And
based on the discussions and various versions of the patchset, they've been
having quite a bit of trouble making sense of your API.

But again, this is compression, not hashing.  They don't use the same API.

> which I managed to simplify by switching away from kmapped pointers:
> 
> https://patchwork.kernel.org/project/linux-crypto/patch/99ae6a15afc1478bab201949dc3dbb2c7634b687.1742034499.git.herbert@gondor.apana.org.au/
> 

"Simplify" by a +90 line diffstat.  Sure.

> > Let me reiterate why "request chaining" is a bad idea and is going to cause
> > problems.
> 
> I'm more than willing to discuss with you the implementation details
> of how the chaining is done and improving it. However, if you proceed
> to only issue blanket nacks without providing any constructive feedback,
> then the only thing I can do is ignore you.

I've given you extensive constructive feedback over the past year, while you've
continued to nack my patches for inconsistent and bogus reasons.

> > In contrast, my patchset
> > https://lore.kernel.org/r/20250212154718.44255-1-ebiggers@kernel.org/ supports
> > multibuffer hashing in a much better way and has been ready for a year already.
> > It actually works; it has a smaller diffstat; it is faster; it has a much
> > simpler API; and it actually includes all needed pieces including x86 and arm64
> > support, dm-verity and fs-verity support, and full documentation and tests.
> 
> Everybody wants to sratch their itch but my job as the maintainer is
> to ensure that the subsystem doesn't collapse into an unmaintainable
> hodgepodge of individual contributions.

But when there is only one such contribution, why overengineer it with something
that is slower, more complex, more error-prone, and harder to maintain?
Especially when this is a kernel-internal API that we can change whenever we
want to suit what is actually being used in the kernel.

And your vague plan to use multibuffer hashing in IPsec doesn't count.  I keep
explaining why it doesn't actually make sense, and how I've *actually* been
optimizing IPsec in other ways that actually matter and actually work, but you
haven't been listening.

> This pull request doesn't even contain the meat of the hash changes
> since I've been busy with the compression work.  So this is simply
> a pre-emptive strike to stop further work from rendering your patches
> obsolete.

I'd love for your work to make my patches obsolete, but unfortunately your
version is just worse.  And besides it being very incomplete, the main issue is
fundamental with the design.  So it doesn't really make sense to use it,
especially when I'm going to get stuck cleaning up your mess again.

- Eric

  parent reply	other threads:[~2025-03-26  3:20 UTC|newest]

Thread overview: 204+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-03  4:40 [GIT PULL] Crypto Update for 5.9 Herbert Xu
2020-08-03 17:55 ` pr-tracker-bot
2020-08-30 22:33 ` [GIT PULL] Crypto Fixes " Herbert Xu
2020-08-30 23:02   ` pr-tracker-bot
2020-09-10  0:34   ` Herbert Xu
2020-09-10  2:48     ` pr-tracker-bot
2020-10-26  1:11   ` [GIT PULL] Crypto Fixes for 5.10 Herbert Xu
2020-10-26 17:52     ` pr-tracker-bot
2020-12-27 11:32     ` [GIT PULL] Crypto Fixes for 5.11 Herbert Xu
2020-12-27 17:27       ` pr-tracker-bot
2021-01-08  3:54       ` Herbert Xu
2021-01-08 20:36         ` pr-tracker-bot
2021-01-18  5:13         ` Herbert Xu
2021-01-18 21:16           ` pr-tracker-bot
2021-01-25 22:36           ` Herbert Xu
2021-01-26  0:01             ` pr-tracker-bot
2021-07-08  3:09         ` [GIT PULL] Crypto Fixes for 5.14 Herbert Xu
2021-07-09 19:20           ` pr-tracker-bot
2021-08-17  1:36           ` Herbert Xu
2021-08-17  2:27             ` pr-tracker-bot
2021-09-29  2:38             ` [GIT PULL] Crypto Fixes for 5.15 Herbert Xu
2021-09-29 14:51               ` pr-tracker-bot
2021-10-29  4:14               ` Herbert Xu
2021-10-29 17:39                 ` Linus Torvalds
2021-11-02  4:01                   ` Herbert Xu
2021-10-29 18:49                 ` pr-tracker-bot
2021-11-12 10:48                 ` [GIT PULL] Crypto Fixes for 5.16 Herbert Xu
2021-11-12 20:42                   ` pr-tracker-bot
2021-12-22  5:13                   ` Herbert Xu
2021-12-22 19:02                     ` pr-tracker-bot
2022-02-09  2:33                     ` [GIT PULL] Crypto Fixes for 5.17 Herbert Xu
2022-02-09 18:01                       ` pr-tracker-bot
2022-03-16  1:13                       ` Herbert Xu
2022-03-17 20:40                         ` pr-tracker-bot
2022-03-31  3:16                         ` [GIT PULL] Crypto Fixes for 5.18 Herbert Xu
2022-03-31 19:12                           ` pr-tracker-bot
2022-05-20  5:41                           ` Herbert Xu
2022-05-20  6:10                             ` pr-tracker-bot
2022-05-27 11:29                           ` [GIT PULL] Crypto Fixes for 5.19 Herbert Xu
2022-05-28  1:21                             ` pr-tracker-bot
2022-06-17  8:29                             ` Herbert Xu
2022-06-17 15:29                               ` pr-tracker-bot
2022-06-30  7:56                               ` Herbert Xu
2022-06-30 17:28                                 ` pr-tracker-bot
2022-08-31  8:55                                 ` [GIT PULL] Crypto Fixes for 6.0 Herbert Xu
2022-08-31 17:20                                   ` pr-tracker-bot
2022-10-17  4:38                                 ` [GIT PULL] Crypto Fixes for 6.1 Herbert Xu
2022-10-17 17:51                                   ` pr-tracker-bot
2022-10-28  4:58                                   ` Herbert Xu
2022-10-28 17:00                                     ` Linus Torvalds
2022-11-02  9:49                                       ` Herbert Xu
2022-10-28 17:02                                     ` pr-tracker-bot
2023-01-06  9:15                                     ` [GIT PULL] Crypto Fixes for 6.2 Herbert Xu
2023-01-06 21:19                                       ` pr-tracker-bot
2023-03-05 10:15                                       ` [GIT PULL] Crypto Fixes for 6.3 Herbert Xu
2023-03-05 19:37                                         ` pr-tracker-bot
2023-05-07 13:19                                         ` [GIT PULL] Crypto Fixes for 6.4 Herbert Xu
2023-05-07 18:12                                           ` pr-tracker-bot
2023-05-29  3:41                                           ` Herbert Xu
2023-05-29 11:39                                             ` pr-tracker-bot
2023-07-09 23:51                                             ` [GIT PULL] Crypto Fixes for 6.5 Herbert Xu
2023-07-10 17:20                                               ` pr-tracker-bot
2023-08-21  3:37                                               ` Herbert Xu
2023-08-21  5:09                                                 ` pr-tracker-bot
2023-08-31  5:16                                                 ` [GIT PULL] Crypto Fixes for 6.6 Herbert Xu
2023-09-01 23:19                                                   ` pr-tracker-bot
2023-09-22  2:10                                                   ` Herbert Xu
2023-09-22 16:43                                                     ` pr-tracker-bot
2023-10-10  8:46                                                     ` Herbert Xu
2023-10-10 18:54                                                       ` pr-tracker-bot
2023-10-21  9:23                                                       ` Herbert Xu
2023-10-21 17:57                                                         ` pr-tracker-bot
2023-11-09  4:30                                                   ` [GIT PULL] Crypto Fixes for 6.7 Herbert Xu
2023-11-10  1:30                                                     ` pr-tracker-bot
2022-08-02  6:05                             ` [GIT PULL] Crypto Update for 5.20 Herbert Xu
2022-08-03  0:57                               ` pr-tracker-bot
2022-10-04  8:54                               ` [GIT PULL] Crypto Update for 6.1 Herbert Xu
2022-10-10 20:56                                 ` pr-tracker-bot
2022-12-14  8:15                                 ` [GIT PULL] Crypto Update for 6.2 Herbert Xu
2022-12-14 22:25                                   ` pr-tracker-bot
2023-02-20  5:22                                   ` [GIT PULL] Crypto Update for 6.3 Herbert Xu
2023-02-22  2:50                                     ` pr-tracker-bot
2023-04-24  4:52                                     ` [GIT PULL] Crypto Update for 6.4 Herbert Xu
2023-04-26 17:06                                       ` pr-tracker-bot
2023-06-29  5:06                                       ` [GIT PULL] Crypto Update for 6.5 Herbert Xu
2023-07-01  5:04                                         ` pr-tracker-bot
2023-08-28  9:22                                         ` [GIT PULL] Crypto Update for 6.6 Herbert Xu
2023-08-29 19:00                                           ` pr-tracker-bot
2023-11-02  6:56                                           ` [GIT PULL] Crypto Update for 6.7 Herbert Xu
2023-11-03  2:34                                             ` Linus Torvalds
2023-11-03  5:52                                               ` Herbert Xu
2023-11-03  6:32                                                 ` Linus Torvalds
2023-11-06 10:00                                                   ` [PATCH] crypto: jitterentropy - Hide esoteric Kconfig options under FIPS and EXPERT Herbert Xu
2023-11-06 15:25                                                     ` Stephan Mueller
2023-11-10  9:04                                                     ` Geert Uytterhoeven
2023-11-03  2:37                                             ` [GIT PULL] Crypto Update for 6.7 pr-tracker-bot
2024-01-09 22:17                                             ` [GIT PULL] Crypto Update for 6.8 Herbert Xu
2024-01-10 20:38                                               ` pr-tracker-bot
2024-02-01  5:32                                               ` [GIT PULL] Crypto Fixes " Herbert Xu
2024-02-01 18:23                                                 ` pr-tracker-bot
2024-02-08  4:29                                                 ` Herbert Xu
2024-02-08  6:24                                                   ` pr-tracker-bot
2024-02-21  9:10                                                   ` Herbert Xu
2024-02-21 17:17                                                     ` pr-tracker-bot
2024-02-28  8:07                                                     ` Herbert Xu
2024-02-28 17:48                                                       ` pr-tracker-bot
2024-03-06  9:47                                                       ` Herbert Xu
2024-03-06 16:33                                                         ` pr-tracker-bot
2024-03-25  9:47                                                 ` [GIT PULL] Crypto Fixes for 6.9 Herbert Xu
2024-03-25 18:18                                                   ` pr-tracker-bot
2024-05-20  3:26                                                   ` [GIT PULL] Crypto Fixes for 6.10 Herbert Xu
2024-05-20 16:33                                                     ` pr-tracker-bot
2024-05-29  4:17                                                     ` Herbert Xu
2024-05-29 17:11                                                       ` pr-tracker-bot
2024-06-28  0:40                                                       ` Herbert Xu
2024-06-28  1:01                                                         ` pr-tracker-bot
2024-09-23  3:08                                                     ` [GIT PULL] Crypto Fixes for 6.12 Herbert Xu
2024-09-24 18:04                                                       ` pr-tracker-bot
2024-10-16  5:37                                                       ` Herbert Xu
2024-10-16 20:51                                                         ` pr-tracker-bot
2024-10-21  5:45                                                         ` Herbert Xu
2024-10-21 18:27                                                           ` pr-tracker-bot
2024-11-15 11:51                                                           ` Herbert Xu
2024-11-15 18:59                                                             ` pr-tracker-bot
2024-12-14  9:21                                                       ` [GIT PULL] Crypto Fixes for 6.13 Herbert Xu
2024-12-14 17:18                                                         ` pr-tracker-bot
2025-03-31  4:50                                                         ` [GIT PULL] Crypto Fixes for 6.15 Herbert Xu
2025-04-05  2:23                                                           ` Herbert Xu
2025-04-05  3:09                                                             ` pr-tracker-bot
2025-04-16  5:16                                                             ` Herbert Xu
2025-04-16 15:24                                                               ` pr-tracker-bot
2025-04-24  9:07                                                               ` Herbert Xu
2025-04-24 16:29                                                                 ` pr-tracker-bot
2025-04-30  2:47                                                                 ` Herbert Xu
2025-04-30  4:19                                                                   ` pr-tracker-bot
2025-05-21  1:59                                                                   ` Herbert Xu
2025-05-21  3:15                                                                     ` pr-tracker-bot
2024-03-15  3:04                                               ` [GIT PULL] Crypto Update for 6.9 Herbert Xu
2024-03-15 21:51                                                 ` Linus Torvalds
2024-03-16  4:39                                                   ` Herbert Xu
2024-03-15 21:59                                                 ` pr-tracker-bot
2024-05-13  3:50                                                 ` [GIT PULL] Crypto Update for 6.10 Herbert Xu
2024-05-13 22:12                                                   ` Linus Torvalds
2024-05-14  5:17                                                     ` Herbert Xu
2024-05-14  5:41                                                       ` Linus Torvalds
2024-05-14  6:02                                                         ` Herbert Xu
2024-05-14  6:54                                                     ` Lukas Wunner
2024-05-14 17:07                                                       ` Linus Torvalds
2024-05-13 22:38                                                   ` pr-tracker-bot
2024-07-18 13:49                                                   ` [GIT PULL] Crypto Update for 6.11 Herbert Xu
2024-07-19 18:09                                                     ` pr-tracker-bot
2024-09-16  3:59                                                     ` [GIT PULL] Crypto Update for 6.12 Herbert Xu
2024-09-16  4:55                                                       ` pr-tracker-bot
2024-11-18  3:18                                                       ` [GIT PULL] Crypto Update for 6.13 Herbert Xu
2024-11-19 19:06                                                         ` pr-tracker-bot
2025-01-23 11:10                                                         ` [GIT PULL] Crypto Update for 6.14 Herbert Xu
2025-01-24 16:05                                                           ` pr-tracker-bot
2025-03-25  5:53                                                           ` [GIT PULL] Crypto Update for 6.15 Herbert Xu
2025-03-25 15:25                                                             ` Eric Biggers
2025-03-25 16:59                                                               ` Ard Biesheuvel
2025-03-26  1:49                                                               ` Herbert Xu
2025-03-26  2:16                                                                 ` Herbert Xu
2025-03-26  3:34                                                                   ` Eric Biggers
2025-03-26  3:52                                                                     ` Herbert Xu
2025-03-30  2:33                                                                       ` Chaining is dead Herbert Xu
2025-03-31 16:56                                                                         ` Eric Biggers
2025-04-01  2:44                                                                           ` Herbert Xu
2025-04-01  3:33                                                                             ` Eric Biggers
2025-04-01  3:55                                                                               ` Herbert Xu
2025-04-01  4:08                                                                                 ` Eric Biggers
2025-04-01  4:14                                                                                   ` Herbert Xu
2025-04-01  7:20                                                                               ` Milan Broz
2025-04-01  3:30                                                                           ` Herbert Xu
2025-04-01  3:39                                                                             ` Eric Biggers
2025-04-04  8:46                                                                           ` Christoph Hellwig
2025-03-26  3:20                                                                 ` Eric Biggers [this message]
2025-03-26  3:30                                                                   ` [GIT PULL] Crypto Update for 6.15 Herbert Xu
2025-03-29 17:40                                                               ` Linus Torvalds
2025-03-29 18:06                                                                 ` Eric Biggers
2025-03-29 18:17                                                                   ` Linus Torvalds
2025-03-29 18:19                                                                     ` Linus Torvalds
2025-03-29 18:38                                                                       ` Eric Biggers
2025-03-29 18:52                                                                         ` Linus Torvalds
2025-03-29 18:24                                                             ` pr-tracker-bot
2020-10-12  3:32 ` [GIT PULL] Crypto Update for 5.10 Herbert Xu
2020-10-13 16:24   ` pr-tracker-bot
2020-12-14  5:55   ` [GIT PULL] Crypto Update for 5.11 Herbert Xu
2020-12-14 20:56     ` pr-tracker-bot
2021-02-15  2:47     ` [GIT PULL] Crypto Update for 5.12 Herbert Xu
2021-02-22  1:28       ` pr-tracker-bot
2021-04-26 12:32       ` [GIT PULL] Crypto Update for 5.13 Herbert Xu
2021-04-26 15:59         ` pr-tracker-bot
2021-06-28 11:00         ` [GIT PULL] Crypto Update for 5.14 Herbert Xu
2021-06-28 23:36           ` pr-tracker-bot
2021-08-30  8:28           ` [GIT PULL] Crypto Update for 5.15 Herbert Xu
2021-08-30 20:17             ` pr-tracker-bot
2021-11-02  3:52             ` [GIT PULL] Crypto Update for 5.16 Herbert Xu
2021-11-02  4:27               ` pr-tracker-bot
2022-01-11  2:04               ` [GIT PULL] Crypto Update for 5.17 Herbert Xu
2022-01-11 20:53                 ` pr-tracker-bot
2022-03-20 23:42                 ` [GIT PULL] Crypto Update for 5.18 Herbert Xu
2022-03-21 23:14                   ` Linus Torvalds
2022-03-22  5:49                     ` Herbert Xu
2022-03-21 23:18                   ` pr-tracker-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250326032038.GC1661@sol.localdomain \
    --to=ebiggers@kernel.org \
    --cc=davem@davemloft.net \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox