[RFC PATCH v1 1/1] mm: zswap - Add crypto acomp/scomp framework support

2017-02-14 Thread Mahipal Challa
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

2017-02-14 Thread Mahipal Challa
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

2017-02-14 Thread Mahipal Challa
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

2017-02-14 Thread Mahipal Challa
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

2017-02-14 Thread Mahipal Challa
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

2017-02-14 Thread Mahipal Challa
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