From: Harald Freudenberger <freude@linux.ibm.com>
To: Ilya Leoshkevich <iii@linux.ibm.com>
Cc: richard.henderson@linaro.org, david@kernel.org, thuth@redhat.com,
berrange@redhat.com, qemu-s390x@nongnu.org,
qemu-devel@nongnu.org, linux-s390@vger.kernel.org,
dengler@linux.ibm.com, borntraeger@linux.ibm.com,
fcallies@linux.ibm.com, cohuck@redhat.com
Subject: Re: [PATCH v13 11/18] target/s390x: Base support for cpacf protected keys and pckmo
Date: Wed, 05 Aug 2026 10:10:15 +0200 [thread overview]
Message-ID: <995d86447d8f655b10207f2f9a07ddb8@linux.ibm.com> (raw)
In-Reply-To: <43620560-24a4-4138-af95-666c30bc7441@linux.ibm.com>
On 2026-08-05 00:00, Ilya Leoshkevich wrote:
> On 8/3/26 18:12, Harald Freudenberger wrote:
>> Add base support for cpacf protected key handling.
>> Add support for the pckmo subfunctions PCKMO-Encrypt-AES-128-Key,
>> PCKMO-Encrypt-AES-192-Key and PCKMO-Encrypt-AES-256-Key which deal
>> with protected keys. These pckmo subfunctions derive a protected key
>> from an AES clear key by encrypting it with an internal AES wrapping
>> key. More details about protected keys can be found in the
>> "z/Architecture Prinziples of Operation" document.
>>
>> The qemu version provided here is only a fake intended to make
>> protected key available for developing and testing purpose:
>> * The protected key is 'derived' from the clear key by xoring
>> the fixed pattern 0xAAAA... onto the key value.
>> * The AES Wrapping Key Verification Pattern is a fixed
>> value of 32 bytes 0xFACEFACE...
>>
>> Add preprocessor defines for the xor pattern and wkvp used to
>> construct ('encrypt') a protected key from a clear key value with
>> this implementation. Also add some static functions to 'encrypt'
>> from clear key to protected key and 'decrypt' back to cpacf_aes.c.
>>
>> The preprocessor defines shall be used later in testcases to
>> construct and decode protected keys.
>>
>> Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
>> Tested-by: Holger Dengler <dengler@linux.ibm.com>
>> ---
>> target/s390x/gen-features.c | 3 ++
>> target/s390x/tcg/cpacf.h | 29 +++++++++++++++
>> target/s390x/tcg/cpacf_aes.c | 64
>> ++++++++++++++++++++++++++++++++
>> target/s390x/tcg/crypto_helper.c | 21 +++++++++++
>> target/s390x/tcg/translate.c | 9 ++++-
>> 5 files changed, 124 insertions(+), 2 deletions(-)
>
> Should we add IF_PRIV to insn-data.h.inc? POp says PCKMO is privileged,
> but currently it seems to be defined as reachable from userspace:
>
> D(0xb928, PCKMO, RRE, MSA3, 0, 0, 0, 0, msa, 0,
> S390_FEAT_TYPE_PCKMO)
>
> This may mess up the test, but it should be convertible to a system
> test, which can be written in C, see tests/tcg/s390x/mvc-smc.c.
>
> [...]
I have no experience in this. It is a privileged instruction and thus
should not be reachable from userspace. So yes, it should have the
IF_PRIV
flag. For the tests: I explicit skipped the pckmo test because of this.
And the other protected key tests run fine as they all "derive" the
protected
key from the clear key according to how this fake implementation works.
So
the protected key tests I added should run fine (as long as you don't
run
these tests on real hardware).
next prev parent reply other threads:[~2026-08-05 8:10 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-03 16:12 [PATCH v13 00/18] target/s390x: Extend qemu CPACF support Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 01/18] target/s390x: Rework s390 cpacf implementations Harald Freudenberger
2026-08-04 22:23 ` Ilya Leoshkevich
2026-08-05 7:52 ` Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 02/18] target/s390x: Move cpacf sha512 code into a new file Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 03/18] target/s390x: Support cpacf sha256 Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 04/18] target/s390x: Add helper functions for copy memory to and from guest Harald Freudenberger
2026-08-04 21:55 ` Ilya Leoshkevich
2026-08-03 16:12 ` [PATCH v13 05/18] crypto: Add aes-helpers file to support some AES modes Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 06/18] target/s390x: Support AES ECB for cpacf km instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 07/18] target/s390x: Support AES CBC for cpacf kmc instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 08/18] target/s390x: Support AES CTR for cpacf kmctr instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 09/18] target/s390x: Minimal AES XTS support for cpacf pcc instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 10/18] target/s390x: Support AES XTS for cpacf km instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 11/18] target/s390x: Base support for cpacf protected keys and pckmo Harald Freudenberger
2026-08-04 22:00 ` Ilya Leoshkevich
2026-08-05 8:10 ` Harald Freudenberger [this message]
2026-08-03 16:12 ` [PATCH v13 12/18] target/s390x: Support protected key AES ECB for cpacf km instruction Harald Freudenberger
2026-08-04 22:48 ` Ilya Leoshkevich
2026-08-05 8:28 ` Harald Freudenberger
2026-08-05 11:17 ` Ilya Leoshkevich
2026-08-03 16:12 ` [PATCH v13 13/18] target/s390x: Support protected key AES CBC for cpacf kmc instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 14/18] target/s390x: Support protected key AES CTR for cpacf kmctr instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 15/18] target/s390x: Minimal protected key AES XTS support for cpacf pcc instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 16/18] target/s390x: Support protected key AES XTS for cpacf km instruction Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 17/18] docs/s390: Document CPACF instructions support Harald Freudenberger
2026-08-03 16:12 ` [PATCH v13 18/18] tests/tcg/s390x: Add tests for CPACF instructions Harald Freudenberger
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=995d86447d8f655b10207f2f9a07ddb8@linux.ibm.com \
--to=freude@linux.ibm.com \
--cc=berrange@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@kernel.org \
--cc=dengler@linux.ibm.com \
--cc=fcallies@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=linux-s390@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/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