crypto: Add support for Intel(R) QuickAssist
Subsystems (3)
v3 cover crypto: Add support for Intel(R) QuickAssist
Hi,
This patchset adds support for Intel(R) QuickAssist Technology (QAT) and DH895xCC hardware accelerator.
First patch adds a common infractructure that will be used by all QAT devices.
Second patch adds a firmware loader module that is used to load the microcode to the acceleration engines and start them.
Third patch adds dh895xcc hardware specific code, which hooks to the common infrastructure and provides acceleration for
the following algorithms:
authenc(hmac(sha1),cbc(aes)), authenc(hmac(sha256),cbc(aes)), authenc(hmac(sha512),cbc(aes))
Fourth patch updates makefiles etc.
More info on the hardware accelerator and the Quick Assist Technology can be found on:
https://01.org/packet-processing/intel%C2%AE-quickassist-technology-drivers-and-patches
---
Tadeusz Struk (4):
crypto: Intel(R) QAT driver framework
crypto: Intel(R) QAT FW Loader
crypto: Intel(R) QAT dh895xcc accelerator
crypto: Update to makefiles
Documentation/ioctl/ioctl-number.txt | 1 MAINTAINERS | 6 drivers/crypto/Kconfig | 1 drivers/crypto/Makefile | 1 drivers/crypto/qat/Kconfig | 22 drivers/crypto/qat/Makefile | 2 drivers/crypto/qat/qat_common/Makefile | 14 drivers/crypto/qat/qat_common/adf_accel_devices.h | 204 +++ drivers/crypto/qat/qat_common/adf_accel_engine.c | 168 ++ drivers/crypto/qat/qat_common/adf_aer.c | 258 ++++ drivers/crypto/qat/qat_common/adf_cfg.c | 359 +++++ drivers/crypto/qat/qat_common/adf_cfg.h | 87 + drivers/crypto/qat/qat_common/adf_cfg_common.h | 100 + drivers/crypto/qat/qat_common/adf_cfg_strings.h | 83 + drivers/crypto/qat/qat_common/adf_cfg_user.h | 94 + drivers/crypto/qat/qat_common/adf_common_drv.h | 192 +++ drivers/crypto/qat/qat_common/adf_ctl_drv.c | 490 +++++++ drivers/crypto/qat/qat_common/adf_dev_mgr.c | 215 +++ drivers/crypto/qat/qat_common/adf_init.c | 388 ++++++ drivers/crypto/qat/qat_common/adf_transport.c | 565 ++++++++ drivers/crypto/qat/qat_common/adf_transport.h | 63 + .../qat/qat_common/adf_transport_access_macros.h | 160 ++ .../crypto/qat/qat_common/adf_transport_debug.c | 301 ++++ .../crypto/qat/qat_common/adf_transport_internal.h | 115 ++ drivers/crypto/qat/qat_common/icp_qat_fw.h | 316 +++++ .../crypto/qat/qat_common/icp_qat_fw_init_admin.h | 131 ++ drivers/crypto/qat/qat_common/icp_qat_fw_la.h | 403 ++++++ .../qat/qat_common/icp_qat_fw_loader_handle.h | 78 + drivers/crypto/qat/qat_common/icp_qat_hal.h | 125 ++ drivers/crypto/qat/qat_common/icp_qat_hw.h | 305 ++++ drivers/crypto/qat/qat_common/icp_qat_uclo.h | 377 +++++ drivers/crypto/qat/qat_common/qat_algs.c | 1034 +++++++++++++++ drivers/crypto/qat/qat_common/qat_crypto.c | 284 ++++ drivers/crypto/qat/qat_common/qat_crypto.h | 83 + drivers/crypto/qat/qat_common/qat_hal.c | 1402 ++++++++++++++++++++ drivers/crypto/qat/qat_common/qat_uclo.c | 1192 +++++++++++++++++ drivers/crypto/qat/qat_dh895xcc/Makefile | 8 drivers/crypto/qat/qat_dh895xcc/adf_admin.c | 144 ++ .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 214 +++ .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h | 86 + drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 448 ++++++ drivers/crypto/qat/qat_dh895xcc/adf_drv.h | 67 + drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c | 159 ++ drivers/crypto/qat/qat_dh895xcc/adf_isr.c | 266 ++++ drivers/crypto/qat/qat_dh895xcc/qat_admin.c | 107 ++ 45 files changed, 11118 insertions(+) create mode 100644 drivers/crypto/qat/Kconfig create mode 100644 drivers/crypto/qat/Makefile create mode 100644 drivers/crypto/qat/qat_common/Makefile create mode 100644 drivers/crypto/qat/qat_common/adf_accel_devices.h create mode 100644 drivers/crypto/qat/qat_common/adf_accel_engine.c create mode 100644 drivers/crypto/qat/qat_common/adf_aer.c create mode 100644 drivers/crypto/qat/qat_common/adf_cfg.c create mode 100644 drivers/crypto/qat/qat_common/adf_cfg.h create mode 100644 drivers/crypto/qat/qat_common/adf_cfg_common.h create mode 100644 drivers/crypto/qat/qat_common/adf_cfg_strings.h create mode 100644 drivers/crypto/qat/qat_common/adf_cfg_user.h create mode 100644 drivers/crypto/qat/qat_common/adf_common_drv.h create mode 100644 drivers/crypto/qat/qat_common/adf_ctl_drv.c create mode 100644 drivers/crypto/qat/qat_common/adf_dev_mgr.c create mode 100644 drivers/crypto/qat/qat_common/adf_init.c create mode 100644 drivers/crypto/qat/qat_common/adf_transport.c create mode 100644 drivers/crypto/qat/qat_common/adf_transport.h create mode 100644 drivers/crypto/qat/qat_common/adf_transport_access_macros.h create mode 100644 drivers/crypto/qat/qat_common/adf_transport_debug.c create mode 100644 drivers/crypto/qat/qat_common/adf_transport_internal.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw_init_admin.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw_la.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw_loader_handle.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_hal.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_hw.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_uclo.h create mode 100644 drivers/crypto/qat/qat_common/qat_algs.c create mode 100644 drivers/crypto/qat/qat_common/qat_crypto.c create mode 100644 drivers/crypto/qat/qat_common/qat_crypto.h create mode 100644 drivers/crypto/qat/qat_common/qat_hal.c create mode 100644 drivers/crypto/qat/qat_common/qat_uclo.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/Makefile create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_admin.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.h create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_isr.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/qat_admin.c
Signature · 1 line
Tadeusz Struk
RFC PATCH v3 3/4 crypto: Intel(R) QAT dh895xcc accelerator
Third patch adds DH895xCC hardware specific code.
It hooks to the common infrastructure and provides acceleration for crypto algorithms.
---
drivers/crypto/qat/qat_dh895xcc/Makefile | 8 drivers/crypto/qat/qat_dh895xcc/adf_admin.c | 144 ++++++ .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 214 ++++++++++ .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h | 86 ++++ drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 448 ++++++++++++++++++++ drivers/crypto/qat/qat_dh895xcc/adf_drv.h | 67 +++ drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c | 159 +++++++ drivers/crypto/qat/qat_dh895xcc/adf_isr.c | 266 ++++++++++++ drivers/crypto/qat/qat_dh895xcc/qat_admin.c | 107 +++++ 9 files changed, 1499 insertions(+) create mode 100644 drivers/crypto/qat/qat_dh895xcc/Makefile create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_admin.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.h create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_isr.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/qat_admin.c
drivers/crypto/qat/qat_dh895xcc/Makefile new file +8 -0
@@ -0,0 +1,8 @@ +ccflags-y := -I$(CURDIR)/drivers/crypto/qat/qat_common +obj-$(CONFIG_CRYPTO_DEV_QAT_DH895xCC) += qat_dh895xcc.o +qat_dh895xcc-objs := adf_drv.o \ + adf_isr.o \ + adf_dh895xcc_hw_data.o \ + adf_hw_arbiter.o \ + qat_admin.o \ + adf_admin.o
drivers/crypto/qat/qat_dh895xcc/adf_admin.c new file +144 -0
144 lines not on this page · raw message
drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c new file +214 -0
214 lines not on this page · raw message
drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h new file +86 -0
86 lines not on this page · raw message
drivers/crypto/qat/qat_dh895xcc/adf_drv.c new file +448 -0
448 lines not on this page · raw message
drivers/crypto/qat/qat_dh895xcc/adf_drv.h new file +67 -0
67 lines not on this page · raw message
drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c new file +159 -0
159 lines not on this page · raw message
drivers/crypto/qat/qat_dh895xcc/adf_isr.c new file +266 -0
266 lines not on this page · raw message
drivers/crypto/qat/qat_dh895xcc/qat_admin.c new file +107 -0
107 lines not on this page · raw message
RFC PATCH v3 4/4 crypto: Update to makefiles
In reply to Tadeusz StrukUpdate to makefiles etc.
Don't update the firmware/Makefile yet since there is no FW binary in the crypto repo yet. This will be added later.
v3 - removed change to ./firmware/Makefile
---
Documentation/ioctl/ioctl-number.txt | 1 + MAINTAINERS | 6 ++++++ drivers/crypto/Kconfig | 1 + drivers/crypto/Makefile | 1 + 4 files changed, 9 insertions(+)
Documentation/ioctl/ioctl-number.txt +1 -0
@@ -197,6 +197,7 @@ Code Seq#(hex) Include File Comments <mailto:[email protected]> 'a' all linux/atm*.h, linux/sonet.h ATM on linux <http://lrcwww.epfl.ch/> +'a' 00-0F drivers/crypto/qat/qat_common/adf_cfg_common.h conflict! qat driver 'b' 00-FF conflict! bit3 vme host bridge <mailto:[email protected]> 'c' all linux/cm4000_cs.h conflict!
MAINTAINERS +6 -0
@@ -7060,6 +7060,12 @@ M: Robert Jarzmik <[email protected]> L: [email protected] S: Maintained +QAT DRIVER +M: Tadeusz Struk <[email protected]> +L: [email protected] +S: Supported +F: drivers/crypto/qat/ + QIB DRIVER M: Mike Marciniszyn <[email protected]> L: [email protected]
drivers/crypto/Kconfig +1 -0
@@ -418,4 +418,5 @@ config CRYPTO_DEV_MXS_DCP To compile this driver as a module, choose M here: the module will be called mxs-dcp. +source "drivers/crypto/qat/Kconfig" endif # CRYPTO_HW
drivers/crypto/Makefile +1 -0
@@ -23,3 +23,4 @@ obj-$(CONFIG_CRYPTO_DEV_S5P) += s5p-sss.o obj-$(CONFIG_CRYPTO_DEV_SAHARA) += sahara.o obj-$(CONFIG_CRYPTO_DEV_TALITOS) += talitos.o obj-$(CONFIG_CRYPTO_DEV_UX500) += ux500/ +obj-$(CONFIG_CRYPTO_DEV_QAT) += qat/
Hi,
I just realized that patch 1 and 2 never made it to [email protected].
The reason is that vger.kernel.org blocks messages longer than 100 000 characters.
Both my patches were bigger. I need to brake it into more patches so version 4 will be sent out soon.
Sorry for making so much noise.
Regards,
Tadeusz
Quoted 120 lines · Tadeusz Struk
Hi,
This patchset adds support for Intel(R) QuickAssist Technology (QAT) and DH895xCC hardware accelerator.
First patch adds a common infractructure that will be used by all QAT devices.
Second patch adds a firmware loader module that is used to load the microcode to the acceleration engines and start them.
Third patch adds dh895xcc hardware specific code, which hooks to the common infrastructure and provides acceleration for
the following algorithms:
authenc(hmac(sha1),cbc(aes)), authenc(hmac(sha256),cbc(aes)), authenc(hmac(sha512),cbc(aes))
Fourth patch updates makefiles etc.More info on the hardware accelerator and the Quick Assist Technology can be found on:
https://01.org/packet-processing/intel%C2%AE-quickassist-technology-drivers-and-patchesAcked-by John Griffin <[email protected]>Acked-by Bo Cui <[email protected]>Reviewed-by Bruce W. Allan <[email protected]>Signed-off-by Karen Xiang <[email protected]>Signed-off-by Pingchaox Yang <[email protected]>Signed-off-by Tadeusz Struk <[email protected]>---
Tadeusz Struk (4):
crypto: Intel(R) QAT driver framework
crypto: Intel(R) QAT FW Loader
crypto: Intel(R) QAT dh895xcc accelerator
crypto: Update to makefilesDocumentation/ioctl/ioctl-number.txt | 1 MAINTAINERS | 6 drivers/crypto/Kconfig | 1 drivers/crypto/Makefile | 1 drivers/crypto/qat/Kconfig | 22 drivers/crypto/qat/Makefile | 2 drivers/crypto/qat/qat_common/Makefile | 14 drivers/crypto/qat/qat_common/adf_accel_devices.h | 204 +++ drivers/crypto/qat/qat_common/adf_accel_engine.c | 168 ++ drivers/crypto/qat/qat_common/adf_aer.c | 258 ++++ drivers/crypto/qat/qat_common/adf_cfg.c | 359 +++++ drivers/crypto/qat/qat_common/adf_cfg.h | 87 + drivers/crypto/qat/qat_common/adf_cfg_common.h | 100 + drivers/crypto/qat/qat_common/adf_cfg_strings.h | 83 + drivers/crypto/qat/qat_common/adf_cfg_user.h | 94 + drivers/crypto/qat/qat_common/adf_common_drv.h | 192 +++ drivers/crypto/qat/qat_common/adf_ctl_drv.c | 490 +++++++ drivers/crypto/qat/qat_common/adf_dev_mgr.c | 215 +++ drivers/crypto/qat/qat_common/adf_init.c | 388 ++++++ drivers/crypto/qat/qat_common/adf_transport.c | 565 ++++++++ drivers/crypto/qat/qat_common/adf_transport.h | 63 + .../qat/qat_common/adf_transport_access_macros.h | 160 ++ .../crypto/qat/qat_common/adf_transport_debug.c | 301 ++++ .../crypto/qat/qat_common/adf_transport_internal.h | 115 ++ drivers/crypto/qat/qat_common/icp_qat_fw.h | 316 +++++ .../crypto/qat/qat_common/icp_qat_fw_init_admin.h | 131 ++ drivers/crypto/qat/qat_common/icp_qat_fw_la.h | 403 ++++++ .../qat/qat_common/icp_qat_fw_loader_handle.h | 78 + drivers/crypto/qat/qat_common/icp_qat_hal.h | 125 ++ drivers/crypto/qat/qat_common/icp_qat_hw.h | 305 ++++ drivers/crypto/qat/qat_common/icp_qat_uclo.h | 377 +++++ drivers/crypto/qat/qat_common/qat_algs.c | 1034 +++++++++++++++ drivers/crypto/qat/qat_common/qat_crypto.c | 284 ++++ drivers/crypto/qat/qat_common/qat_crypto.h | 83 + drivers/crypto/qat/qat_common/qat_hal.c | 1402 ++++++++++++++++++++ drivers/crypto/qat/qat_common/qat_uclo.c | 1192 +++++++++++++++++ drivers/crypto/qat/qat_dh895xcc/Makefile | 8 drivers/crypto/qat/qat_dh895xcc/adf_admin.c | 144 ++ .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c | 214 +++ .../crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h | 86 + drivers/crypto/qat/qat_dh895xcc/adf_drv.c | 448 ++++++ drivers/crypto/qat/qat_dh895xcc/adf_drv.h | 67 + drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c | 159 ++ drivers/crypto/qat/qat_dh895xcc/adf_isr.c | 266 ++++ drivers/crypto/qat/qat_dh895xcc/qat_admin.c | 107 ++ 45 files changed, 11118 insertions(+) create mode 100644 drivers/crypto/qat/Kconfig create mode 100644 drivers/crypto/qat/Makefile create mode 100644 drivers/crypto/qat/qat_common/Makefile create mode 100644 drivers/crypto/qat/qat_common/adf_accel_devices.h create mode 100644 drivers/crypto/qat/qat_common/adf_accel_engine.c create mode 100644 drivers/crypto/qat/qat_common/adf_aer.c create mode 100644 drivers/crypto/qat/qat_common/adf_cfg.c create mode 100644 drivers/crypto/qat/qat_common/adf_cfg.h create mode 100644 drivers/crypto/qat/qat_common/adf_cfg_common.h create mode 100644 drivers/crypto/qat/qat_common/adf_cfg_strings.h create mode 100644 drivers/crypto/qat/qat_common/adf_cfg_user.h create mode 100644 drivers/crypto/qat/qat_common/adf_common_drv.h create mode 100644 drivers/crypto/qat/qat_common/adf_ctl_drv.c create mode 100644 drivers/crypto/qat/qat_common/adf_dev_mgr.c create mode 100644 drivers/crypto/qat/qat_common/adf_init.c create mode 100644 drivers/crypto/qat/qat_common/adf_transport.c create mode 100644 drivers/crypto/qat/qat_common/adf_transport.h create mode 100644 drivers/crypto/qat/qat_common/adf_transport_access_macros.h create mode 100644 drivers/crypto/qat/qat_common/adf_transport_debug.c create mode 100644 drivers/crypto/qat/qat_common/adf_transport_internal.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw_init_admin.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw_la.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_fw_loader_handle.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_hal.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_hw.h create mode 100644 drivers/crypto/qat/qat_common/icp_qat_uclo.h create mode 100644 drivers/crypto/qat/qat_common/qat_algs.c create mode 100644 drivers/crypto/qat/qat_common/qat_crypto.c create mode 100644 drivers/crypto/qat/qat_common/qat_crypto.h create mode 100644 drivers/crypto/qat/qat_common/qat_hal.c create mode 100644 drivers/crypto/qat/qat_common/qat_uclo.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/Makefile create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_admin.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_drv.h create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_hw_arbiter.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/adf_isr.c create mode 100644 drivers/crypto/qat/qat_dh895xcc/qat_admin.c
A message that is not in the archive (sent off-list or not yet received): [email protected]
A message that is not in the archive (sent off-list or not yet received): 804857E1F29AAC47BF68C404FC60A18465623125@ORSMSX105.amr.corp.intel.com
A message that is not in the archive (sent off-list or not yet received): 1402071084.13264.0.camel@joe-AO725
A message that is not in the archive (sent off-list or not yet received): 804857E1F29AAC47BF68C404FC60A184656232C2@ORSMSX105.amr.corp.intel.com
A message that is not in the archive (sent off-list or not yet received): 1402072268.13264.4.camel@joe-AO725
A message that is not in the archive (sent off-list or not yet received): 804857E1F29AAC47BF68C404FC60A184656254DF@ORSMSX105.amr.corp.intel.com
Joe Perches
maintainerPATCH 1/1 checkpatch: Fix function pointers in blank line needed after declarations test
Add a function pointer declaration check to the
test for blank line needed after declarations.
---
Quoted 6 lines · Bruce W
Review
Quoted 4 lines
WARNING: Missing a blank line after declarations
#318: FILE:drivers/crypto/qat/qat_common/adf_accel_devices.h:140:(quoted diff) +2
-0+ struct adf_hw_device_class *dev_class; + uint32_t (*get_accel_mask)(uint32_t fuse);This one is a false positive from checkpatch
scripts/checkpatch.pl | 4 ++++ 1 file changed, 4 insertions(+)
scripts/checkpatch.pl +4 -0
@@ -2295,6 +2295,8 @@ sub process { if ($sline =~ /^\+\s+\S/ && #Not at char 1 # actual declarations ($prevline =~ /^\+\s+$Declare\s*$Ident\s*[=,;:\[]/ || + # function pointer declarations + $prevline =~ /^\+\s+$Declare\s*\(\s*\*\s*$Ident\s*\)\s*[=,;:\[\(]/ || # foo bar; where foo is some local typedef or #define $prevline =~ /^\+\s+$Ident(?:\s+|\s*\*\s*)$Ident\s*[=,;\[]/ || # known declaration macros
@@ -2307,6 +2309,8 @@ sub process { $prevline =~ /(?:\{\s*|\\)$/) && # looks like a declaration !($sline =~ /^\+\s+$Declare\s*$Ident\s*[=,;:\[]/ || + # function pointer declarations + $sline =~ /^\+\s+$Declare\s*\(\s*\*\s*$Ident\s*\)\s*[=,;:\[\(]/ || # foo bar; where foo is some local typedef or #define $sline =~ /^\+\s+$Ident(?:\s+|\s*\*\s*)$Ident\s*[=,;\[]/ || # known declaration macros