|
@@ -54,7 +54,11 @@ struct nx842_coproc {
|
|
|
|
|
|
/* no cpu hotplug on powernv, so this list never changes after init */
|
|
/* no cpu hotplug on powernv, so this list never changes after init */
|
|
static LIST_HEAD(nx842_coprocs);
|
|
static LIST_HEAD(nx842_coprocs);
|
|
-static unsigned int nx842_ct;
|
|
|
|
|
|
+static unsigned int nx842_ct; /* used in icswx function */
|
|
|
|
+
|
|
|
|
+static int (*nx842_powernv_exec)(const unsigned char *in,
|
|
|
|
+ unsigned int inlen, unsigned char *out,
|
|
|
|
+ unsigned int *outlenp, void *workmem, int fc);
|
|
|
|
|
|
/**
|
|
/**
|
|
* setup_indirect_dde - Setup an indirect DDE
|
|
* setup_indirect_dde - Setup an indirect DDE
|
|
@@ -355,7 +359,7 @@ static int wait_for_csb(struct nx842_workmem *wmem,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * nx842_powernv_function - compress/decompress data using the 842 algorithm
|
|
|
|
|
|
+ * nx842_exec_icswx - compress/decompress data using the 842 algorithm
|
|
*
|
|
*
|
|
* (De)compression provided by the NX842 coprocessor on IBM PowerNV systems.
|
|
* (De)compression provided by the NX842 coprocessor on IBM PowerNV systems.
|
|
* This compresses or decompresses the provided input buffer into the provided
|
|
* This compresses or decompresses the provided input buffer into the provided
|
|
@@ -385,7 +389,7 @@ static int wait_for_csb(struct nx842_workmem *wmem,
|
|
* -ETIMEDOUT hardware did not complete operation in reasonable time
|
|
* -ETIMEDOUT hardware did not complete operation in reasonable time
|
|
* -EINTR operation was aborted
|
|
* -EINTR operation was aborted
|
|
*/
|
|
*/
|
|
-static int nx842_powernv_function(const unsigned char *in, unsigned int inlen,
|
|
|
|
|
|
+static int nx842_exec_icswx(const unsigned char *in, unsigned int inlen,
|
|
unsigned char *out, unsigned int *outlenp,
|
|
unsigned char *out, unsigned int *outlenp,
|
|
void *workmem, int fc)
|
|
void *workmem, int fc)
|
|
{
|
|
{
|
|
@@ -489,13 +493,13 @@ static int nx842_powernv_function(const unsigned char *in, unsigned int inlen,
|
|
* @workmem: working memory buffer pointer, size determined by
|
|
* @workmem: working memory buffer pointer, size determined by
|
|
* nx842_powernv_driver.workmem_size
|
|
* nx842_powernv_driver.workmem_size
|
|
*
|
|
*
|
|
- * Returns: see @nx842_powernv_function()
|
|
|
|
|
|
+ * Returns: see @nx842_powernv_exec()
|
|
*/
|
|
*/
|
|
static int nx842_powernv_compress(const unsigned char *in, unsigned int inlen,
|
|
static int nx842_powernv_compress(const unsigned char *in, unsigned int inlen,
|
|
unsigned char *out, unsigned int *outlenp,
|
|
unsigned char *out, unsigned int *outlenp,
|
|
void *wmem)
|
|
void *wmem)
|
|
{
|
|
{
|
|
- return nx842_powernv_function(in, inlen, out, outlenp,
|
|
|
|
|
|
+ return nx842_powernv_exec(in, inlen, out, outlenp,
|
|
wmem, CCW_FC_842_COMP_CRC);
|
|
wmem, CCW_FC_842_COMP_CRC);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -517,13 +521,13 @@ static int nx842_powernv_compress(const unsigned char *in, unsigned int inlen,
|
|
* @workmem: working memory buffer pointer, size determined by
|
|
* @workmem: working memory buffer pointer, size determined by
|
|
* nx842_powernv_driver.workmem_size
|
|
* nx842_powernv_driver.workmem_size
|
|
*
|
|
*
|
|
- * Returns: see @nx842_powernv_function()
|
|
|
|
|
|
+ * Returns: see @nx842_powernv_exec()
|
|
*/
|
|
*/
|
|
static int nx842_powernv_decompress(const unsigned char *in, unsigned int inlen,
|
|
static int nx842_powernv_decompress(const unsigned char *in, unsigned int inlen,
|
|
unsigned char *out, unsigned int *outlenp,
|
|
unsigned char *out, unsigned int *outlenp,
|
|
void *wmem)
|
|
void *wmem)
|
|
{
|
|
{
|
|
- return nx842_powernv_function(in, inlen, out, outlenp,
|
|
|
|
|
|
+ return nx842_powernv_exec(in, inlen, out, outlenp,
|
|
wmem, CCW_FC_842_DECOMP_CRC);
|
|
wmem, CCW_FC_842_DECOMP_CRC);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -625,6 +629,8 @@ static __init int nx842_powernv_init(void)
|
|
if (!nx842_ct)
|
|
if (!nx842_ct)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
|
|
+ nx842_powernv_exec = nx842_exec_icswx;
|
|
|
|
+
|
|
ret = crypto_register_alg(&nx842_powernv_alg);
|
|
ret = crypto_register_alg(&nx842_powernv_alg);
|
|
if (ret) {
|
|
if (ret) {
|
|
struct nx842_coproc *coproc, *n;
|
|
struct nx842_coproc *coproc, *n;
|