From: Alberto Garcia <berto@igalia.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 4/6] crypto: convert xts_tweak_encdec to use xts_uint128 type
Date: Thu, 11 Oct 2018 14:16:24 +0200 [thread overview]
Message-ID: <w51efcwn0fb.fsf@maestria.local.igalia.com> (raw)
In-Reply-To: <20181009153132.GL22838@redhat.com>
On Tue 09 Oct 2018 05:31:32 PM CEST, Daniel P. Berrangé wrote:
> On Tue, Oct 09, 2018 at 05:30:25PM +0200, Alberto Garcia wrote:
>> >> > for (i = 0; i < lim; i++) {
>> >> > - xts_tweak_encdec(datactx, decfunc, src, dst, (uint8_t *)&T);
>> >> > + xts_uint128 S, D;
>> >> > +
>> >> > + memcpy(&S, src, XTS_BLOCK_SIZE);
>> >> > + xts_tweak_encdec(datactx, decfunc, &S, &D, &T);
>> >> > + memcpy(dst, &D, XTS_BLOCK_SIZE);
>> >>
>> >> Why do you need S and D?
>> >
>> > I think src & dst pointers can't be guaranteed to be aligned
>> > sufficiently for int64 operations, if we just cast from uint8t*.
>>
>> I see. I did a quick test without the memcpy() calls and it doesn't
>> seem to have a visible effect on performance, but if it turns out
>> that it does then maybe this is worth investigating further. I
>> suspect all buffers received by this code are allocated with
>> qemu_try_blockalign() anyway, so it should be safe.
>
> The extra memcpy() calls certainly had a perf impact when I added
> them, so if we can determine that we can safely do without, that would
> be desirable.
So I was having a look at this. From the block layer everything comes
properly aligned. Then there's VirtioCrypto, which seems to allow XTS
mode but I couldn't quite tell from virtio_crypto_sym_op_helper() if all
buffers are guaranteed to be aligned.
What you could do is a runtime check (with QEMU_PTR_IS_ALIGNED()) and
decide what implementation to use.
A couple of additional thoughts:
- x86_64 (and others) allow unaligned memory accesses, and that might be
faster than copying the buffer using memcpy(). I haven't measured it
however.
- qcrypto_block_{encrypt,decrypt}_helper() (used for encrypted block
I/O) use the same buffer for input and output, so maybe it's worth
exploring if this fact allows for additional optimization if you still
need to use memcpy().
Berto
next prev parent reply other threads:[~2018-10-11 12:17 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-09 12:55 [Qemu-devel] [PATCH 0/6] crypto: improve performance of XTS cipher mode Daniel P. Berrangé
2018-10-09 12:55 ` [Qemu-devel] [PATCH 1/6] crypto: expand algorithm coverage for cipher benchmark Daniel P. Berrangé
2018-10-09 14:04 ` Marc-André Lureau
2018-10-10 11:45 ` Alberto Garcia
2018-10-09 12:55 ` [Qemu-devel] [PATCH 2/6] crypto: remove code duplication in tweak encrypt/decrypt Daniel P. Berrangé
2018-10-09 13:43 ` Alberto Garcia
2018-10-09 13:51 ` Marc-André Lureau
2018-10-09 12:55 ` [Qemu-devel] [PATCH 3/6] crypto: introduce a xts_uint128 data type Daniel P. Berrangé
2018-10-09 14:40 ` Alberto Garcia
2018-10-09 14:50 ` Alberto Garcia
2018-10-09 14:58 ` Daniel P. Berrangé
2018-10-09 15:14 ` Alberto Garcia
2018-10-09 12:55 ` [Qemu-devel] [PATCH 4/6] crypto: convert xts_tweak_encdec to use xts_uint128 type Daniel P. Berrangé
2018-10-09 15:02 ` Alberto Garcia
2018-10-09 15:06 ` Daniel P. Berrangé
2018-10-09 15:30 ` Alberto Garcia
2018-10-09 15:31 ` Daniel P. Berrangé
2018-10-11 12:16 ` Alberto Garcia [this message]
2018-10-09 12:55 ` [Qemu-devel] [PATCH 5/6] crypto: convert xts_mult_x " Daniel P. Berrangé
2018-10-09 13:52 ` Alberto Garcia
2018-10-09 13:55 ` Daniel P. Berrangé
2018-10-09 14:25 ` Alberto Garcia
2018-10-09 12:55 ` [Qemu-devel] [PATCH 6/6] crypto: annotate xts_tweak_encdec as inlineable Daniel P. Berrangé
2018-10-09 15:37 ` Alberto Garcia
2018-10-09 13:59 ` [Qemu-devel] [PATCH 0/6] crypto: improve performance of XTS cipher mode Marc-André Lureau
2018-10-09 14:13 ` Daniel P. Berrangé
2018-10-09 14:27 ` Marc-André Lureau
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=w51efcwn0fb.fsf@maestria.local.igalia.com \
--to=berto@igalia.com \
--cc=berrange@redhat.com \
--cc=qemu-devel@nongnu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.