[RFC PATCH v1 1/1] mm: zswap - Add crypto acomp/scomp framework support
This adds the support for kernel's crypto new acomp/scomp framework to zswap. Signed-off-by: Mahipal Challa <mahipal.cha...@cavium.com> Signed-off-by: Vishnu Nair <vishnu.n...@cavium.com> --- mm/zswap.c | 129 +++-- 1 file changed, 99 insertions(+), 30 deletions(-) diff --git a/mm/zswap.c b/mm/zswap.c index 067a0d6..d08631b 100644 --- a/mm/zswap.c +++ b/mm/zswap.c @@ -33,6 +33,8 @@ #include #include #include +#include +#include #include #include @@ -114,7 +116,8 @@ static int zswap_compressor_param_set(const char *, struct zswap_pool { struct zpool *zpool; - struct crypto_comp * __percpu *tfm; + struct crypto_acomp * __percpu *acomp; + struct acomp_req * __percpu *acomp_req; struct kref kref; struct list_head list; struct work_struct work; @@ -379,30 +382,49 @@ static int zswap_dstmem_dead(unsigned int cpu) static int zswap_cpu_comp_prepare(unsigned int cpu, struct hlist_node *node) { struct zswap_pool *pool = hlist_entry(node, struct zswap_pool, node); - struct crypto_comp *tfm; + struct crypto_acomp *acomp; + struct acomp_req *acomp_req; - if (WARN_ON(*per_cpu_ptr(pool->tfm, cpu))) + if (WARN_ON(*per_cpu_ptr(pool->acomp, cpu))) return 0; + if (WARN_ON(*per_cpu_ptr(pool->acomp_req, cpu))) + return 0; + + acomp = crypto_alloc_acomp(pool->tfm_name, 0, 0); + if (IS_ERR_OR_NULL(acomp)) { + pr_err("could not alloc crypto acomp %s : %ld\n", + pool->tfm_name, PTR_ERR(acomp)); + return -ENOMEM; + } + *per_cpu_ptr(pool->acomp, cpu) = acomp; - tfm = crypto_alloc_comp(pool->tfm_name, 0, 0); - if (IS_ERR_OR_NULL(tfm)) { - pr_err("could not alloc crypto comp %s : %ld\n", - pool->tfm_name, PTR_ERR(tfm)); + acomp_req = acomp_request_alloc(acomp); + if (IS_ERR_OR_NULL(acomp_req)) { + pr_err("could not alloc crypto acomp %s : %ld\n", + pool->tfm_name, PTR_ERR(acomp)); return -ENOMEM; } - *per_cpu_ptr(pool->tfm, cpu) = tfm; + *per_cpu_ptr(pool->acomp_req, cpu) = acomp_req; + return 0; } static int zswap_cpu_comp_dead(unsigned int cpu, struct hlist_node *node) { struct zswap_pool *pool = hlist_entry(node, struct zswap_pool, node); - struct crypto_comp *tfm; + struct crypto_acomp *acomp; + struct acomp_req *acomp_req; + + acomp_req = *per_cpu_ptr(pool->acomp_req, cpu); + if (!IS_ERR_OR_NULL(acomp_req)) + acomp_request_free(acomp_req); + *per_cpu_ptr(pool->acomp_req, cpu) = NULL; + + acomp = *per_cpu_ptr(pool->acomp, cpu); + if (!IS_ERR_OR_NULL(acomp)) + crypto_free_acomp(acomp); + *per_cpu_ptr(pool->acomp, cpu) = NULL; - tfm = *per_cpu_ptr(pool->tfm, cpu); - if (!IS_ERR_OR_NULL(tfm)) - crypto_free_comp(tfm); - *per_cpu_ptr(pool->tfm, cpu) = NULL; return 0; } @@ -503,8 +525,14 @@ static struct zswap_pool *zswap_pool_create(char *type, char *compressor) pr_debug("using %s zpool\n", zpool_get_type(pool->zpool)); strlcpy(pool->tfm_name, compressor, sizeof(pool->tfm_name)); - pool->tfm = alloc_percpu(struct crypto_comp *); - if (!pool->tfm) { + pool->acomp = alloc_percpu(struct crypto_acomp *); + if (!pool->acomp) { + pr_err("percpu alloc failed\n"); + goto error; + } + + pool->acomp_req = alloc_percpu(struct acomp_req *); + if (!pool->acomp_req) { pr_err("percpu alloc failed\n"); goto error; } @@ -526,7 +554,8 @@ static struct zswap_pool *zswap_pool_create(char *type, char *compressor) return pool; error: - free_percpu(pool->tfm); + free_percpu(pool->acomp_req); + free_percpu(pool->acomp); if (pool->zpool) zpool_destroy_pool(pool->zpool); kfree(pool); @@ -566,7 +595,8 @@ static void zswap_pool_destroy(struct zswap_pool *pool) zswap_pool_debug("destroying", pool); cpuhp_state_remove_instance(CPUHP_MM_ZSWP_POOL_PREPARE, >node); - free_percpu(pool->tfm); + free_percpu(pool->acomp_req); + free_percpu(pool->acomp); zpool_destroy_pool(pool->zpool); kfree(pool); } @@ -763,7 +793,8 @@ static int zswap_writeback_entry(struct zpool *pool, unsigned long handle) pgoff_t offset; struct zswap_entry *entry; struct page *page; - struct crypto_comp *tfm; + struct scatterlist input, output; + struct acomp_req *req; u
[RFC PATCH v1 0/1] mm: zswap - crypto acomp/scomp support
Hi Seth, Herbert, This series adds support for kernel's new crypto acomp/scomp compression & decompression framework to zswap. We verified these changes using the kernel's crypto deflate-scomp, lzo-scomp modules and Cavium's ThunderX ZIP driver (We will post the Cavium's ThunderX ZIP driver v2 patches with acomp/scomp support soon). Patch is on top of 'crypto-2.6' branch. please provide your comments. Regards, Mahipal Mahipal Challa (1): mm: zswap - Add crypto acomp/scomp framework support mm/zswap.c | 129 +++-- 1 file changed, 99 insertions(+), 30 deletions(-) -- 1.8.3.1
[RFC PATCH v2 1/3] crypto: zip - Add ThunderX ZIP driver core
Add a driver for the ZIP engine found on Cavium ThunderX SOCs. The ZIP engine supports hardware accelerated compression and decompression. It includes 2 independent ZIP cores and supports: - DEFLATE compression and decompression (RFC 1951) - LZS compression and decompression (RFC 2395 and ANSI X3.241-1994) - ADLER32 and CRC32 checksums for ZLIB (RFC 1950) and GZIP (RFC 1952) The ZIP engine is presented as a PCI device. It supports DMA and scatter-gather. Signed-off-by: Mahipal Challa <mahipal.cha...@cavium.com> Signed-off-by: Jan Glauber <jglau...@cavium.com> --- drivers/crypto/Kconfig |7 + drivers/crypto/Makefile|1 + drivers/crypto/cavium/Makefile |4 + drivers/crypto/cavium/zip/Makefile |8 + drivers/crypto/cavium/zip/common.h | 202 + drivers/crypto/cavium/zip/zip_crypto.h | 77 ++ drivers/crypto/cavium/zip/zip_device.c | 201 + drivers/crypto/cavium/zip/zip_device.h | 108 +++ drivers/crypto/cavium/zip/zip_main.c | 552 + drivers/crypto/cavium/zip/zip_main.h | 106 +++ drivers/crypto/cavium/zip/zip_mem.c| 114 +++ drivers/crypto/cavium/zip/zip_mem.h| 78 ++ drivers/crypto/cavium/zip/zip_regs.h | 1347 13 files changed, 2805 insertions(+) diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig index 7956478..5b3c1f5 100644 --- a/drivers/crypto/Kconfig +++ b/drivers/crypto/Kconfig @@ -485,6 +485,13 @@ config CRYPTO_DEV_MXS_DCP source "drivers/crypto/qat/Kconfig" +config CRYPTO_DEV_CAVIUM_ZIP + tristate "Cavium ZIP driver" + depends on PCI && 64BIT && (ARM64 || COMPILE_TEST) + ---help--- + Select this option if you want to enable compression/decompression + acceleration on Cavium's ARM based SoCs + config CRYPTO_DEV_QCE tristate "Qualcomm crypto engine accelerator" depends on (ARCH_QCOM || COMPILE_TEST) && HAS_DMA && HAS_IOMEM diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile index bc53cb8..11a370e 100644 --- a/drivers/crypto/Makefile +++ b/drivers/crypto/Makefile @@ -2,6 +2,7 @@ obj-$(CONFIG_CRYPTO_DEV_ATMEL_AES) += atmel-aes.o obj-$(CONFIG_CRYPTO_DEV_ATMEL_SHA) += atmel-sha.o obj-$(CONFIG_CRYPTO_DEV_ATMEL_TDES) += atmel-tdes.o obj-$(CONFIG_CRYPTO_DEV_BFIN_CRC) += bfin_crc.o +obj-$(CONFIG_CRYPTO_DEV_CAVIUM_ZIP) += cavium/ obj-$(CONFIG_CRYPTO_DEV_CCP) += ccp/ obj-$(CONFIG_CRYPTO_DEV_FSL_CAAM) += caam/ obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-aes.o diff --git a/drivers/crypto/cavium/Makefile b/drivers/crypto/cavium/Makefile new file mode 100644 index 000..641268b --- /dev/null +++ b/drivers/crypto/cavium/Makefile @@ -0,0 +1,4 @@ +# +# Makefile for Cavium crypto device drivers +# +obj-$(CONFIG_CRYPTO_DEV_CAVIUM_ZIP) += zip/ diff --git a/drivers/crypto/cavium/zip/Makefile b/drivers/crypto/cavium/zip/Makefile new file mode 100644 index 000..2c07508 --- /dev/null +++ b/drivers/crypto/cavium/zip/Makefile @@ -0,0 +1,8 @@ +# +# Makefile for Cavium's ZIP Driver. +# + +obj-$(CONFIG_CRYPTO_DEV_CAVIUM_ZIP) += thunderx_zip.o +thunderx_zip-y := zip_main.o\ + zip_device.o \ + zip_mem.o diff --git a/drivers/crypto/cavium/zip/common.h b/drivers/crypto/cavium/zip/common.h new file mode 100644 index 000..dc451e0 --- /dev/null +++ b/drivers/crypto/cavium/zip/common.h @@ -0,0 +1,202 @@ +/***license start + * Copyright (c) 2003-2017 Cavium, Inc. + * All rights reserved. + * + * License: one of 'Cavium License' or 'GNU General Public License Version 2' + * + * This file is provided under the terms of the Cavium License (see below) + * or under the terms of GNU General Public License, Version 2, as + * published by the Free Software Foundation. When using or redistributing + * this file, you may do so under either license. + * + * Cavium License: Redistribution and use in source and binary forms, with + * or without modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + *copyright notice, this list of conditions and the following + *disclaimer in the documentation and/or other materials provided + *with the distribution. + * + * * Neither the name of Cavium Inc. nor the names of its contributors may be + *used to endorse or promote products derived from this software without + *specific prior written permission. + * + * This Software, including technical data, may be subject to U.S. export + * control laws, including the U.S. Export Administration Act and its + * associated regulations, and may be subject to export or import + * regulations in other countries
[RFC PATCH v2 3/3] crypto: zip - Add Compression/Decompression statistics
Add statistics for compression/decompression hardware offload under debugfs. Signed-off-by: Mahipal Challa <mahipal.cha...@cavium.com> Signed-off-by: Jan Glauber <jglau...@cavium.com> --- drivers/crypto/cavium/zip/zip_deflate.c | 10 ++ drivers/crypto/cavium/zip/zip_inflate.c | 12 ++ drivers/crypto/cavium/zip/zip_main.c| 234 drivers/crypto/cavium/zip/zip_main.h| 15 ++ 4 files changed, 271 insertions(+) diff --git a/drivers/crypto/cavium/zip/zip_deflate.c b/drivers/crypto/cavium/zip/zip_deflate.c index b02789c..9a944b8 100644 --- a/drivers/crypto/cavium/zip/zip_deflate.c +++ b/drivers/crypto/cavium/zip/zip_deflate.c @@ -122,12 +122,19 @@ int zip_deflate(struct zip_operation *zip_ops, struct zip_state *s, /* Prepares zip command based on the input parameters */ prepare_zip_command(zip_ops, s, zip_cmd); + atomic64_add(zip_ops->input_len, _dev->stats.comp_in_bytes); /* Loads zip command into command queues and rings door bell */ queue = zip_load_instr(zip_cmd, zip_dev); + /* Stats update for compression requests submitted */ + atomic64_inc(_dev->stats.comp_req_submit); + while (!result_ptr->s.compcode) continue; + /* Stats update for compression requests completed */ + atomic64_inc(_dev->stats.comp_req_complete); + zip_ops->compcode = result_ptr->s.compcode; switch (zip_ops->compcode) { case ZIP_CMD_NOTDONE: @@ -175,6 +182,9 @@ int zip_deflate(struct zip_operation *zip_ops, struct zip_state *s, zip_err("Unknown Format:%d\n", zip_ops->format); } + atomic64_add(result_ptr->s.totalbyteswritten, +_dev->stats.comp_out_bytes); + /* Update output_len */ if (zip_ops->output_len < result_ptr->s.totalbyteswritten) { /* Dynamic stop && strm->output_len < zipconstants[onfsize] */ diff --git a/drivers/crypto/cavium/zip/zip_inflate.c b/drivers/crypto/cavium/zip/zip_inflate.c index 5f43a8c..50cbdd8 100644 --- a/drivers/crypto/cavium/zip/zip_inflate.c +++ b/drivers/crypto/cavium/zip/zip_inflate.c @@ -135,12 +135,20 @@ int zip_inflate(struct zip_operation *zip_ops, struct zip_state *s, /* Prepare inflate zip command */ prepare_inflate_zcmd(zip_ops, s, zip_cmd); + atomic64_add(zip_ops->input_len, _dev->stats.decomp_in_bytes); + /* Load inflate command to zip queue and ring the doorbell */ queue = zip_load_instr(zip_cmd, zip_dev); + /* Decompression requests submitted stats update */ + atomic64_inc(_dev->stats.decomp_req_submit); + while (!result_ptr->s.compcode) continue; + /* Decompression requests completed stats update */ + atomic64_inc(_dev->stats.decomp_req_complete); + zip_ops->compcode = result_ptr->s.compcode; switch (zip_ops->compcode) { case ZIP_CMD_NOTDONE: @@ -157,6 +165,7 @@ int zip_inflate(struct zip_operation *zip_ops, struct zip_state *s, default: zip_dbg("Instruction failed. Code = %d\n", zip_ops->compcode); + atomic64_inc(_dev->stats.decomp_bad_reqs); zip_update_cmd_bufs(zip_dev, queue); return ZIP_ERROR; } @@ -169,6 +178,9 @@ int zip_inflate(struct zip_operation *zip_ops, struct zip_state *s, zip_ops->csum = result_ptr->s.adler32; + atomic64_add(result_ptr->s.totalbyteswritten, +_dev->stats.decomp_out_bytes); + if (zip_ops->output_len < result_ptr->s.totalbyteswritten) { zip_err("output_len (%d) < total bytes written (%d)\n", zip_ops->output_len, result_ptr->s.totalbyteswritten); diff --git a/drivers/crypto/cavium/zip/zip_main.c b/drivers/crypto/cavium/zip/zip_main.c index dd5814a..0951e20 100644 --- a/drivers/crypto/cavium/zip/zip_main.c +++ b/drivers/crypto/cavium/zip/zip_main.c @@ -451,6 +451,228 @@ static void zip_unregister_compression_device(void) crypto_unregister_scomp(_scomp_lzs); } +/* + * debugfs functions + */ +#ifdef CONFIG_DEBUG_FS +#include + +/* Displays ZIP device statistics */ +static int zip_show_stats(struct seq_file *s, void *unused) +{ + u64 val = 0ull; + u64 avg_chunk = 0ull, avg_cr = 0ull; + u32 q = 0; + + int index = 0; + struct zip_device *zip; + struct zip_stats *st; + + for (index = 0; index < MAX_ZIP_DEVICES; index++) { + if (zip_dev[index]) { + zip = zip_dev[index]; + st = >stats; + + /* Get all the pending requests */ + for (q = 0; q < ZIP_NUM_QUEUES; q++) { + val = zip_reg_read((zip->reg_base
[RFC PATCH v2 2/3] crypto: zip - Wire-up Compression / decompression HW offload
This contains changes for adding compression/decompression h/w offload functionality for both DEFLATE and LZS. Signed-off-by: Mahipal Challa <mahipal.cha...@cavium.com> Signed-off-by: Jan Glauber <jglau...@cavium.com> --- drivers/crypto/cavium/zip/Makefile | 5 +- drivers/crypto/cavium/zip/zip_crypto.c | 314 drivers/crypto/cavium/zip/zip_crypto.h | 2 + drivers/crypto/cavium/zip/zip_deflate.c | 190 +++ drivers/crypto/cavium/zip/zip_deflate.h | 62 +++ drivers/crypto/cavium/zip/zip_device.c | 1 + drivers/crypto/cavium/zip/zip_inflate.c | 211 + drivers/crypto/cavium/zip/zip_inflate.h | 62 +++ drivers/crypto/cavium/zip/zip_main.c| 57 -- 9 files changed, 846 insertions(+), 58 deletions(-) diff --git a/drivers/crypto/cavium/zip/Makefile b/drivers/crypto/cavium/zip/Makefile index 2c07508..b2f3baaf 100644 --- a/drivers/crypto/cavium/zip/Makefile +++ b/drivers/crypto/cavium/zip/Makefile @@ -5,4 +5,7 @@ obj-$(CONFIG_CRYPTO_DEV_CAVIUM_ZIP) += thunderx_zip.o thunderx_zip-y := zip_main.o\ zip_device.o \ - zip_mem.o + zip_crypto.o \ + zip_mem.o \ + zip_deflate.o \ + zip_inflate.o diff --git a/drivers/crypto/cavium/zip/zip_crypto.c b/drivers/crypto/cavium/zip/zip_crypto.c new file mode 100644 index 000..1ceaa34 --- /dev/null +++ b/drivers/crypto/cavium/zip/zip_crypto.c @@ -0,0 +1,314 @@ +/***license start + * Copyright (c) 2003-2017 Cavium, Inc. + * All rights reserved. + * + * License: one of 'Cavium License' or 'GNU General Public License Version 2' + * + * This file is provided under the terms of the Cavium License (see below) + * or under the terms of GNU General Public License, Version 2, as + * published by the Free Software Foundation. When using or redistributing + * this file, you may do so under either license. + * + * Cavium License: Redistribution and use in source and binary forms, with + * or without modification, are permitted provided that the following + * conditions are met: + * + * * Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + *copyright notice, this list of conditions and the following + *disclaimer in the documentation and/or other materials provided + *with the distribution. + * + * * Neither the name of Cavium Inc. nor the names of its contributors may be + *used to endorse or promote products derived from this software without + *specific prior written permission. + * + * This Software, including technical data, may be subject to U.S. export + * control laws, including the U.S. Export Administration Act and its + * associated regulations, and may be subject to export or import + * regulations in other countries. + * + * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" + * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS + * OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH + * RESPECT TO THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY + * REPRESENTATION OR DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT + * DEFECTS, AND CAVIUM SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) + * WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A + * PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET + * ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE TO DESCRIPTION. THE + * ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE SOFTWARE LIES + * WITH YOU. + ***license end**/ + +#include "zip_crypto.h" + +static void zip_static_init_zip_ops(struct zip_operation *zip_ops, + int lzs_flag) +{ + zip_ops->flush= ZIP_FLUSH_FINISH; + + /* equivalent to level 6 of opensource zlib */ + zip_ops->speed = 1; + + if (!lzs_flag) { + zip_ops->ccode = 0; /* Auto Huffman */ + zip_ops->lzs_flag = 0; + zip_ops->format = ZLIB_FORMAT; + } else { + zip_ops->ccode = 3; /* LZS Encoding */ + zip_ops->lzs_flag = 1; + zip_ops->format = LZS_FORMAT; + } + zip_ops->begin_file = 1; + zip_ops->history_len = 0; + zip_ops->end_file = 1; + zip_ops->compcode = 0; + zip_ops->csum = 1; /* Adler checksum desired */ +} + +int zip_ctx_init(struct zip_kernel_ctx *zip_ctx, int lzs_flag) +{ + struct zip_operation *comp_ctx = _ctx->zip_comp; + struct zip_operation *decomp_ct
[RFC PATCH v2 0/3] Cavium ThunderX ZIP driver
Hi Herbert, This series adds support for hardware accelerated compression & decompression as found on ThunderX (arm64) SOCs. As per your suggestion, we've switched to the new crypto acomp/scomp interface. To test the ZIP driver, we modified the kernel's ZSWAP to use acomp API's. Performance numbers from ZSWAP look promising. The "average time" for compressing a 4KB page: Compression Software: 278 usec Compression HW deflate : 17 usec Compression HW LZS : 11 usec Decompression Software : 20 usec Decompression HW deflate: 8 usec Decompression HW LZS: 6 usec Addressed the review comments from the RFC v1. - Added acomp/scomp crypto interface support. - Improved the error handling. - ZIP command completion codes are renamed suitably. - Removed some un-used code. - raw_smp_processor_id() replaced with smp_processor_id(). - Some more miscellaneous changes. Patches are on top of "kernel/git/herbert/crypto-2.6.git" repository Please provide your feedback. Regards, Mahipal Mahipal Challa (3): crypto: zip - Add ThunderX ZIP driver core crypto: zip - Wire-up Compression / decompression HW offload crypto: zip - Add Compression/Decompression statistics drivers/crypto/Kconfig |7 + drivers/crypto/Makefile |1 + drivers/crypto/cavium/Makefile |4 + drivers/crypto/cavium/zip/Makefile | 11 + drivers/crypto/cavium/zip/common.h | 202 + drivers/crypto/cavium/zip/zip_crypto.c | 314 +++ drivers/crypto/cavium/zip/zip_crypto.h | 79 ++ drivers/crypto/cavium/zip/zip_deflate.c | 200 + drivers/crypto/cavium/zip/zip_deflate.h | 62 ++ drivers/crypto/cavium/zip/zip_device.c | 202 + drivers/crypto/cavium/zip/zip_device.h | 108 +++ drivers/crypto/cavium/zip/zip_inflate.c | 223 + drivers/crypto/cavium/zip/zip_inflate.h | 62 ++ drivers/crypto/cavium/zip/zip_main.c| 729 + drivers/crypto/cavium/zip/zip_main.h| 121 +++ drivers/crypto/cavium/zip/zip_mem.c | 114 +++ drivers/crypto/cavium/zip/zip_mem.h | 78 ++ drivers/crypto/cavium/zip/zip_regs.h| 1347 +++ 18 files changed, 3864 insertions(+) create mode 100644 drivers/crypto/cavium/Makefile create mode 100644 drivers/crypto/cavium/zip/Makefile create mode 100644 drivers/crypto/cavium/zip/common.h create mode 100644 drivers/crypto/cavium/zip/zip_crypto.c create mode 100644 drivers/crypto/cavium/zip/zip_crypto.h create mode 100644 drivers/crypto/cavium/zip/zip_deflate.c create mode 100644 drivers/crypto/cavium/zip/zip_deflate.h create mode 100644 drivers/crypto/cavium/zip/zip_device.c create mode 100644 drivers/crypto/cavium/zip/zip_device.h create mode 100644 drivers/crypto/cavium/zip/zip_inflate.c create mode 100644 drivers/crypto/cavium/zip/zip_inflate.h create mode 100644 drivers/crypto/cavium/zip/zip_main.c create mode 100644 drivers/crypto/cavium/zip/zip_main.h create mode 100644 drivers/crypto/cavium/zip/zip_mem.c create mode 100644 drivers/crypto/cavium/zip/zip_mem.h create mode 100644 drivers/crypto/cavium/zip/zip_regs.h -- 1.8.3.1