mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
s390/zcrypt: Introduce cprb mempool for cca misc functions
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. The minimum value is 1 and is checked in zcrypt module init(). If the mempool is depleted upon one cca misc functions is called with the named xflag set, the function will fail with -ENOMEM and the caller is responsible for taking further actions. 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> Link: https://lore.kernel.org/r/20250424133619.16495-7-freude@linux.ibm.com Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
committed by
Heiko Carstens
parent
80c20b2c6d
commit
9bdb5f7e83
@@ -50,6 +50,10 @@ MODULE_DESCRIPTION("Cryptographic Coprocessor interface, " \
|
||||
"Copyright IBM Corp. 2001, 2012");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
unsigned int zcrypt_mempool_threshold = 5;
|
||||
module_param_named(mempool_threshold, zcrypt_mempool_threshold, uint, 0440);
|
||||
MODULE_PARM_DESC(mempool_threshold, "CCA and EP11 request/reply mempool minimal items (min: 1)");
|
||||
|
||||
/*
|
||||
* zcrypt tracepoint functions
|
||||
*/
|
||||
@@ -2144,13 +2148,23 @@ int __init zcrypt_api_init(void)
|
||||
{
|
||||
int rc;
|
||||
|
||||
/* make sure the mempool threshold is >= 1 */
|
||||
if (zcrypt_mempool_threshold < 1) {
|
||||
rc = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
rc = zcrypt_debug_init();
|
||||
if (rc)
|
||||
goto out;
|
||||
|
||||
rc = zcdn_init();
|
||||
if (rc)
|
||||
goto out;
|
||||
goto out_zcdn_init_failed;
|
||||
|
||||
rc = zcrypt_ccamisc_init();
|
||||
if (rc)
|
||||
goto out_ccamisc_init_failed;
|
||||
|
||||
/* Register the request sprayer. */
|
||||
rc = misc_register(&zcrypt_misc_device);
|
||||
@@ -2163,7 +2177,10 @@ int __init zcrypt_api_init(void)
|
||||
return 0;
|
||||
|
||||
out_misc_register_failed:
|
||||
zcrypt_ccamisc_exit();
|
||||
out_ccamisc_init_failed:
|
||||
zcdn_exit();
|
||||
out_zcdn_init_failed:
|
||||
zcrypt_debug_exit();
|
||||
out:
|
||||
return rc;
|
||||
|
||||
Reference in New Issue
Block a user