The module loading works but the code is evidently violating
the use of smp_processor_id() with respect to preemptibility.
It seems that smp_processor_id() is only used for a best-effort
load-balancing, refer to qat_crypto_get_instance_node(). It's not feasible
to disable preemption for the duration of the crypto requests. Therefore,
just silence the warning.
Reference materials:
1b82feb6c5
https://www.kernel.org/doc/Documentation/preempt-locking.txt
Change-Id: I0f4d88d934aa29d30cde9a20212e758e15ad01ad
Closes-Bug: 1884262
Signed-off-by: zhao.shuai <zhaos@neusoft.com>
71 lines
2.6 KiB
Diff
71 lines
2.6 KiB
Diff
From 5d3c6cab1726c79855561327b65a19ab982891e5 Mon Sep 17 00:00:00 2001
|
|
From: Alexander Sverdlin <alexander.sverdlin@nokia.com>
|
|
Date: Tue, 23 Jul 2019 07:24:01 +0000
|
|
Subject: [PATCH] crypto: qat - Silence smp_processor_id() warning
|
|
|
|
[ commit 1b82feb6c5e1996513d0fb0bbb475417088b4954 upstream ]
|
|
|
|
It seems that smp_processor_id() is only used for a best-effort
|
|
load-balancing, refer to qat_crypto_get_instance_node(). It's not feasible
|
|
to disable preemption for the duration of the crypto requests. Therefore,
|
|
just silence the warning. This commit is similar to e7a9b05ca4
|
|
("crypto: cavium - Fix smp_processor_id() warnings").
|
|
|
|
Silences the following splat:
|
|
BUG: using smp_processor_id() in preemptible [00000000] code: cryptomgr_test/2904
|
|
caller is qat_alg_ablkcipher_setkey+0x300/0x4a0 [intel_qat]
|
|
CPU: 1 PID: 2904 Comm: cryptomgr_test Tainted: P O 4.14.69 #1
|
|
...
|
|
Call Trace:
|
|
dump_stack+0x5f/0x86
|
|
check_preemption_disabled+0xd3/0xe0
|
|
qat_alg_ablkcipher_setkey+0x300/0x4a0 [intel_qat]
|
|
skcipher_setkey_ablkcipher+0x2b/0x40
|
|
__test_skcipher+0x1f3/0xb20
|
|
? cpumask_next_and+0x26/0x40
|
|
? find_busiest_group+0x10e/0x9d0
|
|
? preempt_count_add+0x49/0xa0
|
|
? try_module_get+0x61/0xf0
|
|
? crypto_mod_get+0x15/0x30
|
|
? __kmalloc+0x1df/0x1f0
|
|
? __crypto_alloc_tfm+0x116/0x180
|
|
? crypto_skcipher_init_tfm+0xa6/0x180
|
|
? crypto_create_tfm+0x4b/0xf0
|
|
test_skcipher+0x21/0xa0
|
|
alg_test_skcipher+0x3f/0xa0
|
|
alg_test.part.6+0x126/0x2a0
|
|
? finish_task_switch+0x21b/0x260
|
|
? __schedule+0x1e9/0x800
|
|
? __wake_up_common+0x8d/0x140
|
|
cryptomgr_test+0x40/0x50
|
|
kthread+0xff/0x130
|
|
? cryptomgr_notify+0x540/0x540
|
|
? kthread_create_on_node+0x70/0x70
|
|
ret_from_fork+0x24/0x50
|
|
|
|
Fixes: ed8ccaef52 ("crypto: qat - Add support for SRIOV")
|
|
Cc: stable@vger.kernel.org
|
|
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
|
|
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
|
|
Signed-off-by: zhao.shuai <zhaos@neusoft.com>
|
|
---
|
|
quickassist/qat/drivers/crypto/qat/qat_common/adf_common_drv.h | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/quickassist/qat/drivers/crypto/qat/qat_common/adf_common_drv.h b/quickassist/qat/drivers/crypto/qat/qat_common/adf_common_drv.h
|
|
index 35f0f44..d0ff355 100644
|
|
--- a/quickassist/qat/drivers/crypto/qat/qat_common/adf_common_drv.h
|
|
+++ b/quickassist/qat/drivers/crypto/qat/qat_common/adf_common_drv.h
|
|
@@ -100,7 +100,7 @@ struct service_hndl {
|
|
|
|
static inline int get_current_node(void)
|
|
{
|
|
- return topology_physical_package_id(smp_processor_id());
|
|
+ return topology_physical_package_id(raw_smp_processor_id());
|
|
}
|
|
|
|
int adf_service_register(struct service_hndl *service);
|
|
--
|
|
2.7.4
|
|
|