diff options
| author | Harald Freudenberger <freude@linux.ibm.com> | 2025-04-24 16:35:59 +0300 |
|---|---|---|
| committer | Heiko Carstens <hca@linux.ibm.com> | 2025-04-30 12:34:00 +0300 |
| commit | 80c20b2c6dc09296f2cfb438a7b919a55f31237e (patch) | |
| tree | 4e7bc044b33014ce9c2566d7ba01bdf15b85b4f3 /drivers/s390/crypto/ap_bus.c | |
| parent | f91bb85d399ecfa69ec08ebf58ee49d17bb748e2 (diff) | |
| download | linux-80c20b2c6dc09296f2cfb438a7b919a55f31237e.tar.xz | |
s390/ap/zcrypt: New xflag parameter
Introduce a new flag parameter for the both cprb send functions
zcrypt_send_cprb() and zcrypt_send_ep11_cprb(). This new
xflags parameter ("execution flags") shall be used to provide
execution hints and flags for this crypto request.
There are two flags implemented to be used with these functions:
* ZCRYPT_XFLAG_USERSPACE - indicates to the lower layers that
all the ptrs address userspace. So when construction the ap msg
copy_from_user() is to be used. If this flag is NOT set, the ptrs
address kernel memory and thus memcpy() is to be used.
* ZCRYPT_XFLAG_NOMEMALLOC - indicates that this task must not
allocate memory which may be allocated with io operations.
For the AP bus and zcrypt message layer this means:
* The ZCRYPT_XFLAG_USERSPACE is mapped to the already existing
bool variable "userspace" which is propagated to the zcrypt
proto implementations.
* The ZCRYPT_XFLAG_NOMEMALLOC results in setting the AP flag
AP_MSG_FLAG_MEMPOOL when the AP msg buffer is initialized.
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
Link: https://lore.kernel.org/r/20250424133619.16495-6-freude@linux.ibm.com
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'drivers/s390/crypto/ap_bus.c')
| -rw-r--r-- | drivers/s390/crypto/ap_bus.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 1e4784e9efd1..288734cd8f4b 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -572,18 +572,18 @@ static void ap_poll_thread_stop(void) /* * ap_init_apmsg() - Initialize ap_message. */ -int ap_init_apmsg(struct ap_message *ap_msg, bool use_mempool) +int ap_init_apmsg(struct ap_message *ap_msg, u32 flags) { unsigned int maxmsgsize; memset(ap_msg, 0, sizeof(*ap_msg)); + ap_msg->flags = flags; - if (use_mempool) { + if (flags & AP_MSG_FLAG_MEMPOOL) { ap_msg->msg = mempool_alloc_preallocated(ap_msg_pool); if (!ap_msg->msg) return -ENOMEM; ap_msg->bufsize = AP_DEFAULT_MAX_MSG_SIZE; - ap_msg->flags |= AP_MSG_FLAG_MEMPOOL; return 0; } |
