qat: fix smp_processor_id preemption complaints
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>
This commit is contained in:
parent
8923111b61
commit
e2c681a443
|
@ -38,6 +38,7 @@ Source2: qat_service
|
|||
|
||||
#Patch1: 0001-Install-config-file-for-each-VF.patch
|
||||
Patch2: Get-and-report-the-return-code-on-firmware-load-fail.patch
|
||||
Patch3: crypto-qat-Silence-smp_processor_id-warning.patch
|
||||
|
||||
%description
|
||||
Intel(r) QuickAssist Technology API
|
||||
|
@ -54,6 +55,7 @@ fi
|
|||
|
||||
#%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
|
||||
%build
|
||||
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
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
|
||||
|
Loading…
Reference in New Issue