* [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers
@ 2022-06-07 16:58 Yoan Picchi
0 siblings, 0 replies; 7+ messages in thread
From: Yoan Picchi @ 2022-06-07 16:58 UTC (permalink / raw)
To: Giovanni Cabiddu, Herbert Xu, David S . Miller, qat-linux,
linux-crypto, linux-kernel
Cc: Andre Przywara, Ard Biesheuvel
The QAT acceleration card can be very helpfull for some tasks like dealing
with IPSEC but it is currently restricted to be used only on x86 machine.
Looking at the code we didn't see any reasons why those drivers might not
work on other architectures. We've successfully built all of them on x86,
arm64, arm32, mips64, powerpc64, riscv64 and sparc64.
We also have tested the driver with an Intel Corporation C62x Chipset
QuickAssist Technology (rev 04) PCIe card on an arm64 server. After the numa
patch, it works with the AF_ALG crypto userland interface, allowing us to
encrypt some data with cbc for instance. We've also successfully created some
VF, bound them to DPDK, and used the card this way, thus showing some real
life usecases of x86 do work on arm64 too.
Andre Przywara (1):
crypto: qat: replace get_current_node() with numa_node_id()
Yoan Picchi (1):
Removes the x86 dependency on the QAT drivers
drivers/crypto/qat/Kconfig | 14 +++++++-------
drivers/crypto/qat/qat_common/adf_common_drv.h | 5 -----
drivers/crypto/qat/qat_common/qat_algs.c | 4 ++--
drivers/crypto/qat/qat_common/qat_asym_algs.c | 4 ++--
4 files changed, 11 insertions(+), 16 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers
@ 2022-06-13 14:25 Yoan Picchi
2022-06-13 14:25 ` [PATCH 1/2] crypto: qat: replace get_current_node() with numa_node_id() Yoan Picchi
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Yoan Picchi @ 2022-06-13 14:25 UTC (permalink / raw)
To: Giovanni Cabiddu, Herbert Xu, David S . Miller, qat-linux,
linux-crypto, linux-kernel
Cc: Andre Przywara, Ard Biesheuvel
The QAT acceleration card can be very helpfull for some tasks like dealing
with IPSEC but it is currently restricted to be used only on x86 machine.
Looking at the code we didn't see any reasons why those drivers might not
work on other architectures. We've successfully built all of them on x86,
arm64, arm32, mips64, powerpc64, riscv64 and sparc64.
We also have tested the driver with an Intel Corporation C62x Chipset
QuickAssist Technology (rev 04) PCIe card on an arm64 server. After the numa
patch, it works with the AF_ALG crypto userland interface, allowing us to
encrypt some data with cbc for instance. We've also successfully created some
VF, bound them to DPDK, and used the card this way, thus showing some real
life usecases of x86 do work on arm64 too.
Changelog v1 ... v2:
- add COMPILE_TEST to Kconfig
Andre Przywara (1):
crypto: qat: replace get_current_node() with numa_node_id()
Yoan Picchi (1):
Removes the x86 dependency on the QAT drivers
drivers/crypto/qat/Kconfig | 14 +++++++-------
drivers/crypto/qat/qat_common/adf_common_drv.h | 5 -----
drivers/crypto/qat/qat_common/qat_algs.c | 4 ++--
drivers/crypto/qat/qat_common/qat_asym_algs.c | 4 ++--
4 files changed, 11 insertions(+), 16 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] crypto: qat: replace get_current_node() with numa_node_id()
2022-06-13 14:25 [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers Yoan Picchi
@ 2022-06-13 14:25 ` Yoan Picchi
2022-06-13 14:25 ` [PATCH 2/2] Removes the x86 dependency on the QAT drivers Yoan Picchi
2022-06-17 8:49 ` [PATCH 0/2] Crypto: Remove x86 dependency on " Giovanni Cabiddu
2 siblings, 0 replies; 7+ messages in thread
From: Yoan Picchi @ 2022-06-13 14:25 UTC (permalink / raw)
To: Giovanni Cabiddu, Herbert Xu, David S . Miller, qat-linux,
linux-crypto, linux-kernel
Cc: Andre Przywara, Ard Biesheuvel
From: Andre Przywara <andre.przywara@arm.com>
Currently the QAT driver code uses a self-defined wrapper function
called get_current_node() when it wants to learn the current NUMA node.
This implementation references the topology_physical_package_id[] array,
which more or less coincidentally contains the NUMA node id, at least
on x86.
Because this is not universal, and Linux offers a direct function to
learn the NUMA node ID, replace that function with a call to
numa_node_id(), which would work everywhere.
This fixes the QAT driver operation on arm64 machines.
Reported-by: Yoan Picchi <Yoan.Picchi@arm.com>
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
---
drivers/crypto/qat/qat_common/adf_common_drv.h | 5 -----
drivers/crypto/qat/qat_common/qat_algs.c | 4 ++--
drivers/crypto/qat/qat_common/qat_asym_algs.c | 4 ++--
3 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/crypto/qat/qat_common/adf_common_drv.h b/drivers/crypto/qat/qat_common/adf_common_drv.h
index e8c9b77c0d66..b582107db67b 100644
--- a/drivers/crypto/qat/qat_common/adf_common_drv.h
+++ b/drivers/crypto/qat/qat_common/adf_common_drv.h
@@ -49,11 +49,6 @@ struct service_hndl {
struct list_head list;
};
-static inline int get_current_node(void)
-{
- return topology_physical_package_id(raw_smp_processor_id());
-}
-
int adf_service_register(struct service_hndl *service);
int adf_service_unregister(struct service_hndl *service);
diff --git a/drivers/crypto/qat/qat_common/qat_algs.c b/drivers/crypto/qat/qat_common/qat_algs.c
index f998ed58457c..c0ffaebcc8b8 100644
--- a/drivers/crypto/qat/qat_common/qat_algs.c
+++ b/drivers/crypto/qat/qat_common/qat_algs.c
@@ -618,7 +618,7 @@ static int qat_alg_aead_newkey(struct crypto_aead *tfm, const u8 *key,
{
struct qat_alg_aead_ctx *ctx = crypto_aead_ctx(tfm);
struct qat_crypto_instance *inst = NULL;
- int node = get_current_node();
+ int node = numa_node_id();
struct device *dev;
int ret;
@@ -1042,7 +1042,7 @@ static int qat_alg_skcipher_newkey(struct qat_alg_skcipher_ctx *ctx,
{
struct qat_crypto_instance *inst = NULL;
struct device *dev;
- int node = get_current_node();
+ int node = numa_node_id();
int ret;
inst = qat_crypto_get_instance_node(node);
diff --git a/drivers/crypto/qat/qat_common/qat_asym_algs.c b/drivers/crypto/qat/qat_common/qat_asym_algs.c
index b0b78445418b..3701eac10bce 100644
--- a/drivers/crypto/qat/qat_common/qat_asym_algs.c
+++ b/drivers/crypto/qat/qat_common/qat_asym_algs.c
@@ -480,7 +480,7 @@ static int qat_dh_init_tfm(struct crypto_kpp *tfm)
{
struct qat_dh_ctx *ctx = kpp_tfm_ctx(tfm);
struct qat_crypto_instance *inst =
- qat_crypto_get_instance_node(get_current_node());
+ qat_crypto_get_instance_node(numa_node_id());
if (!inst)
return -EINVAL;
@@ -1218,7 +1218,7 @@ static int qat_rsa_init_tfm(struct crypto_akcipher *tfm)
{
struct qat_rsa_ctx *ctx = akcipher_tfm_ctx(tfm);
struct qat_crypto_instance *inst =
- qat_crypto_get_instance_node(get_current_node());
+ qat_crypto_get_instance_node(numa_node_id());
if (!inst)
return -EINVAL;
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] Removes the x86 dependency on the QAT drivers
2022-06-13 14:25 [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers Yoan Picchi
2022-06-13 14:25 ` [PATCH 1/2] crypto: qat: replace get_current_node() with numa_node_id() Yoan Picchi
@ 2022-06-13 14:25 ` Yoan Picchi
2022-06-17 8:49 ` [PATCH 0/2] Crypto: Remove x86 dependency on " Giovanni Cabiddu
2 siblings, 0 replies; 7+ messages in thread
From: Yoan Picchi @ 2022-06-13 14:25 UTC (permalink / raw)
To: Giovanni Cabiddu, Herbert Xu, David S . Miller, qat-linux,
linux-crypto, linux-kernel
Cc: Andre Przywara, Ard Biesheuvel
This dependency looks outdated. After the previous patch, we have been able
to use this driver to encrypt some data and to create working VF on arm64.
We have not tested it yet on any big endian machine, hence the new dependency
Signed-off-by: Yoan Picchi <yoan.picchi@arm.com>
---
drivers/crypto/qat/Kconfig | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/crypto/qat/Kconfig b/drivers/crypto/qat/Kconfig
index 4b90c0f22b03..1220cc86f910 100644
--- a/drivers/crypto/qat/Kconfig
+++ b/drivers/crypto/qat/Kconfig
@@ -17,7 +17,7 @@ config CRYPTO_DEV_QAT
config CRYPTO_DEV_QAT_DH895xCC
tristate "Support for Intel(R) DH895xCC"
- depends on X86 && PCI
+ depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
select CRYPTO_DEV_QAT
help
Support for Intel(R) DH895xcc with Intel(R) QuickAssist Technology
@@ -28,7 +28,7 @@ config CRYPTO_DEV_QAT_DH895xCC
config CRYPTO_DEV_QAT_C3XXX
tristate "Support for Intel(R) C3XXX"
- depends on X86 && PCI
+ depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
select CRYPTO_DEV_QAT
help
Support for Intel(R) C3xxx with Intel(R) QuickAssist Technology
@@ -39,7 +39,7 @@ config CRYPTO_DEV_QAT_C3XXX
config CRYPTO_DEV_QAT_C62X
tristate "Support for Intel(R) C62X"
- depends on X86 && PCI
+ depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
select CRYPTO_DEV_QAT
help
Support for Intel(R) C62x with Intel(R) QuickAssist Technology
@@ -50,7 +50,7 @@ config CRYPTO_DEV_QAT_C62X
config CRYPTO_DEV_QAT_4XXX
tristate "Support for Intel(R) QAT_4XXX"
- depends on X86 && PCI
+ depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
select CRYPTO_DEV_QAT
help
Support for Intel(R) QuickAssist Technology QAT_4xxx
@@ -61,7 +61,7 @@ config CRYPTO_DEV_QAT_4XXX
config CRYPTO_DEV_QAT_DH895xCCVF
tristate "Support for Intel(R) DH895xCC Virtual Function"
- depends on X86 && PCI
+ depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
select PCI_IOV
select CRYPTO_DEV_QAT
@@ -74,7 +74,7 @@ config CRYPTO_DEV_QAT_DH895xCCVF
config CRYPTO_DEV_QAT_C3XXXVF
tristate "Support for Intel(R) C3XXX Virtual Function"
- depends on X86 && PCI
+ depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
select PCI_IOV
select CRYPTO_DEV_QAT
help
@@ -86,7 +86,7 @@ config CRYPTO_DEV_QAT_C3XXXVF
config CRYPTO_DEV_QAT_C62XVF
tristate "Support for Intel(R) C62X Virtual Function"
- depends on X86 && PCI
+ depends on PCI && (!CPU_BIG_ENDIAN || COMPILE_TEST)
select PCI_IOV
select CRYPTO_DEV_QAT
help
--
2.25.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers
2022-06-13 14:25 [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers Yoan Picchi
2022-06-13 14:25 ` [PATCH 1/2] crypto: qat: replace get_current_node() with numa_node_id() Yoan Picchi
2022-06-13 14:25 ` [PATCH 2/2] Removes the x86 dependency on the QAT drivers Yoan Picchi
@ 2022-06-17 8:49 ` Giovanni Cabiddu
2 siblings, 0 replies; 7+ messages in thread
From: Giovanni Cabiddu @ 2022-06-17 8:49 UTC (permalink / raw)
To: Yoan Picchi
Cc: Herbert Xu, David S . Miller, qat-linux, linux-crypto,
linux-kernel, Andre Przywara, Ard Biesheuvel
Hi Yoan,
On Mon, Jun 13, 2022 at 02:25:33PM +0000, Yoan Picchi wrote:
> The QAT acceleration card can be very helpfull for some tasks like dealing
> with IPSEC but it is currently restricted to be used only on x86 machine.
> Looking at the code we didn't see any reasons why those drivers might not
> work on other architectures. We've successfully built all of them on x86,
> arm64, arm32, mips64, powerpc64, riscv64 and sparc64.
>
> We also have tested the driver with an Intel Corporation C62x Chipset
> QuickAssist Technology (rev 04) PCIe card on an arm64 server. After the numa
> patch, it works with the AF_ALG crypto userland interface, allowing us to
> encrypt some data with cbc for instance. We've also successfully created some
> VF, bound them to DPDK, and used the card this way, thus showing some real
> life usecases of x86 do work on arm64 too.
>
> Changelog v1 ... v2:
> - add COMPILE_TEST to Kconfig
>
> Andre Przywara (1):
> crypto: qat: replace get_current_node() with numa_node_id()
>
> Yoan Picchi (1):
> Removes the x86 dependency on the QAT drivers
Would you mind re-sending the set changing the headline of the commit
messages as reported in the previous email?
https://www.spinics.net/lists/linux-crypto/msg64584.html
Thanks,
--
Giovanni
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers
@ 2022-06-17 9:55 Yoan Picchi
2022-06-17 10:10 ` Yoan Picchi
0 siblings, 1 reply; 7+ messages in thread
From: Yoan Picchi @ 2022-06-17 9:55 UTC (permalink / raw)
To: Giovanni Cabiddu, Herbert Xu, David S . Miller, qat-linux,
linux-crypto, linux-kernel
Cc: Andre Przywara, Ard Biesheuvel
The QAT acceleration card can be very helpfull for some tasks like dealing
with IPSEC but it is currently restricted to be used only on x86 machine.
Looking at the code we didn't see any reasons why those drivers might not
work on other architectures. We've successfully built all of them on x86,
arm64, arm32, mips64, powerpc64, riscv64 and sparc64.
We also have tested the driver with an Intel Corporation C62x Chipset
QuickAssist Technology (rev 04) PCIe card on an arm64 server. After the numa
patch, it works with the AF_ALG crypto userland interface, allowing us to
encrypt some data with cbc for instance. We've also successfully created some
VF, bound them to DPDK, and used the card this way, thus showing some real
life usecases of x86 do work on arm64 too.
Changelog v1 ... v2:
- add COMPILE_TEST to Kconfig
Changelog v2 ... v3:
- Add the Crypto tag to the commit header
Andre Przywara (1):
crypto: qat: replace get_current_node() with numa_node_id()
Yoan Picchi (1):
Removes the x86 dependency on the QAT drivers
drivers/crypto/qat/Kconfig | 14 +++++++-------
drivers/crypto/qat/qat_common/adf_common_drv.h | 5 -----
drivers/crypto/qat/qat_common/qat_algs.c | 4 ++--
drivers/crypto/qat/qat_common/qat_asym_algs.c | 4 ++--
4 files changed, 11 insertions(+), 16 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers
2022-06-17 9:55 Yoan Picchi
@ 2022-06-17 10:10 ` Yoan Picchi
0 siblings, 0 replies; 7+ messages in thread
From: Yoan Picchi @ 2022-06-17 10:10 UTC (permalink / raw)
To: yoan.picchi, andre.przywara, ardb, davem, giovanni.cabiddu,
herbert, linux-crypto, linux-kernel, qat-linux
Please disregard this post, I sent the wrong patch by mistake. Please
look at the [PATCH v3 0/2] instead.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-06-17 10:10 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-13 14:25 [PATCH 0/2] Crypto: Remove x86 dependency on QAT drivers Yoan Picchi
2022-06-13 14:25 ` [PATCH 1/2] crypto: qat: replace get_current_node() with numa_node_id() Yoan Picchi
2022-06-13 14:25 ` [PATCH 2/2] Removes the x86 dependency on the QAT drivers Yoan Picchi
2022-06-17 8:49 ` [PATCH 0/2] Crypto: Remove x86 dependency on " Giovanni Cabiddu
-- strict thread matches above, loose matches on Subject: below --
2022-06-17 9:55 Yoan Picchi
2022-06-17 10:10 ` Yoan Picchi
2022-06-07 16:58 Yoan Picchi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox