All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heiko Carstens <hca@linux.ibm.com>
To: Harald Freudenberger <freude@linux.ibm.com>
Cc: dengler@linux.ibm.com, ifranzki@linux.ibm.com,
	fcallies@linux.ibm.com, gor@linux.ibm.com,
	agordeev@linux.ibm.com, linux-s390@vger.kernel.org,
	herbert@gondor.apana.org.au
Subject: Re: [PATCH v3 05/21] s390/zcrypt: Introduce cprb mempool for cca misc functions
Date: Mon, 31 Mar 2025 13:20:52 +0200	[thread overview]
Message-ID: <20250331112052.25223F0d-hca@linux.ibm.com> (raw)
In-Reply-To: <20250327143941.45507-6-freude@linux.ibm.com>

On Thu, Mar 27, 2025 at 03:39:25PM +0100, Harald Freudenberger wrote:
> Introduce a new module parameter "zcrypt_mempool_threshold"
> for the zcrypt module. This parameter controls the minimal
> amount of mempool items which are pre-allocated for urgent
> requests/replies and will be used with the support for the
> new xflag ZCRYPT_XFLAG_NOMEMALLOC. The default value of 5
> shall provide enough memory items to support up to 5 requests
> (and their associated reply) in parallel.
> 
> For CCA each mempool item is 16KB, as a CCA CPRB needs to
> hold the request and the reply. The pool items only support
> requests/replies with a limit of about 8KB.
> So by default the CCA mempool consumes
>   5 * 16KB = 80KB
> 
> This is only part of an rework to support a new xflag
> ZCRYPT_XFLAG_NOMEMALLOC but not yet complete.
> 
> Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
> Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
> ---
>  drivers/s390/crypto/zcrypt_api.c     |  13 ++-
>  drivers/s390/crypto/zcrypt_api.h     |   2 +
>  drivers/s390/crypto/zcrypt_ccamisc.c | 117 ++++++++++++++++++++-------
>  drivers/s390/crypto/zcrypt_ccamisc.h |   1 +
>  4 files changed, 102 insertions(+), 31 deletions(-)

...

> @@ -229,7 +241,16 @@ static int alloc_and_prep_cprbmem(size_t paramblen,
>  	 * allocate consecutive memory for request CPRB, request param
>  	 * block, reply CPRB and reply param block
>  	 */
> -	cprbmem = kcalloc(2, cprbplusparamblen, GFP_KERNEL);
> +	if (xflags & ZCRYPT_XFLAG_NOMEMALLOC) {
> +		size_t len = 2 * cprbplusparamblen;
> +
> +		if (cprb_mempool && len <= CPRB_MEMPOOL_ITEM_SIZE) {
> +			cprbmem = mempool_alloc_preallocated(cprb_mempool);
> +			memset(cprbmem, 0, len);
> +		}
> +	} else {
> +		cprbmem = kcalloc(2, cprbplusparamblen, GFP_KERNEL);
> +	}
>  	if (!cprbmem)
>  		return -ENOMEM;

What happens on the ZCRYPT_XFLAG_NOMEMALLOC path if the cprb_mempool
is empty and the allocation fails?

> +int __init zcrypt_ccamisc_init(void)
> +{
> +	/* Pre-allocate a small memory pool for cca cprbs. */
> +	cprb_mempool = mempool_create_kmalloc_pool(zcrypt_mempool_threshold,
> +						   CPRB_MEMPOOL_ITEM_SIZE);
> +	if (IS_ERR(cprb_mempool)) {
> +		ZCRYPT_DBF_ERR("%s mempool_create(%d,%d) failed: %ld\n",
> +			       __func__, zcrypt_mempool_threshold,
> +			       CPRB_MEMPOOL_ITEM_SIZE, PTR_ERR(cprb_mempool));
> +		cprb_mempool = NULL;
> +		return -ENOMEM;
> +	}
> +	return 0;
> +}

Like before: mempool_create_kmalloc_pool() returns NULL on error. Also
please don't use ZCRYPT_DBF_ERR for such allocation failures. There
will be a very visible message on the console for this case.

  reply	other threads:[~2025-03-31 11:21 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-27 14:39 [PATCH v3 00/21] AP bus/zcrypt/pkey/paes no-mem-alloc patches Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 01/21] s390/ap: Move response_type struct into ap_msg struct Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 02/21] s390/ap/zcrypt: Rework AP message buffer allocation Harald Freudenberger
2025-03-31 10:47   ` Heiko Carstens
2025-03-27 14:39 ` [PATCH v3 03/21] s390/ap: Introduce ap message buffer pool Harald Freudenberger
2025-03-31 10:46   ` Heiko Carstens
2025-03-27 14:39 ` [PATCH v3 04/21] s390/ap/zcrypt: New xflag parameter Harald Freudenberger
2025-03-31 11:03   ` Heiko Carstens
2025-04-09  8:40   ` Holger Dengler
2025-04-09 13:46     ` Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 05/21] s390/zcrypt: Introduce cprb mempool for cca misc functions Harald Freudenberger
2025-03-31 11:20   ` Heiko Carstens [this message]
2025-03-27 14:39 ` [PATCH v3 06/21] s390/zcrypt: Introduce cprb mempool for ep11 " Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 07/21] s390/zcrypt: Rework zcrypt function zcrypt_device_status_mask_ext Harald Freudenberger
2025-04-09  8:56   ` Holger Dengler
2025-04-09 13:42     ` Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 08/21] s390/zcrypt: Introduce pre-allocated device status array for cca misc Harald Freudenberger
2025-04-09 10:13   ` Holger Dengler
2025-03-27 14:39 ` [PATCH v3 09/21] s390/zcrypt: Introduce pre-allocated device status array for ep11 misc Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 10/21] s390/zcrypt: Remove unused functions from cca misc Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 11/21] s390/zcrypt: Remove CCA and EP11 card and domain info caches Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 12/21] s390/zcrypt/pkey: Rework cca findcard() implementation and callers Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 13/21] s390/zcrypt/pkey: Rework ep11 " Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 14/21] s390/zcrypt: Rework cca misc functions kmallocs to use the cprb mempool Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 15/21] s390/zcrypt: Propagate xflags argument with cca_get_info() Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 16/21] s390/zcrypt: Locate ep11_domain_query_info onto the stack instead of kmalloc Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 17/21] s390/zcrypt: Rework ep11 misc functions to use cprb mempool Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 18/21] s390/pkey: Rework CCA pkey handler to use stack for small memory allocs Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 19/21] s390/pkey: Rework EP11 " Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 20/21] s390/zcrypt/pkey: Provide and pass xflags within pkey and zcrypt layers Harald Freudenberger
2025-03-27 14:39 ` [PATCH v3 21/21] s390/pkey/crypto: Introduce xflags param for pkey in-kernel API 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=20250331112052.25223F0d-hca@linux.ibm.com \
    --to=hca@linux.ibm.com \
    --cc=agordeev@linux.ibm.com \
    --cc=dengler@linux.ibm.com \
    --cc=fcallies@linux.ibm.com \
    --cc=freude@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=ifranzki@linux.ibm.com \
    --cc=linux-s390@vger.kernel.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.