root/drivers/crypto/vmx/vmx.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. p8_init
  2. p8_exit

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /**
   3  * Routines supporting VMX instructions on the Power 8
   4  *
   5  * Copyright (C) 2015 International Business Machines Inc.
   6  *
   7  * Author: Marcelo Henrique Cerri <mhcerri@br.ibm.com>
   8  */
   9 
  10 #include <linux/module.h>
  11 #include <linux/moduleparam.h>
  12 #include <linux/types.h>
  13 #include <linux/err.h>
  14 #include <linux/cpufeature.h>
  15 #include <linux/crypto.h>
  16 #include <asm/cputable.h>
  17 #include <crypto/internal/hash.h>
  18 #include <crypto/internal/skcipher.h>
  19 
  20 extern struct shash_alg p8_ghash_alg;
  21 extern struct crypto_alg p8_aes_alg;
  22 extern struct skcipher_alg p8_aes_cbc_alg;
  23 extern struct skcipher_alg p8_aes_ctr_alg;
  24 extern struct skcipher_alg p8_aes_xts_alg;
  25 
  26 static int __init p8_init(void)
  27 {
  28         int ret;
  29 
  30         ret = crypto_register_shash(&p8_ghash_alg);
  31         if (ret)
  32                 goto err;
  33 
  34         ret = crypto_register_alg(&p8_aes_alg);
  35         if (ret)
  36                 goto err_unregister_ghash;
  37 
  38         ret = crypto_register_skcipher(&p8_aes_cbc_alg);
  39         if (ret)
  40                 goto err_unregister_aes;
  41 
  42         ret = crypto_register_skcipher(&p8_aes_ctr_alg);
  43         if (ret)
  44                 goto err_unregister_aes_cbc;
  45 
  46         ret = crypto_register_skcipher(&p8_aes_xts_alg);
  47         if (ret)
  48                 goto err_unregister_aes_ctr;
  49 
  50         return 0;
  51 
  52 err_unregister_aes_ctr:
  53         crypto_unregister_skcipher(&p8_aes_ctr_alg);
  54 err_unregister_aes_cbc:
  55         crypto_unregister_skcipher(&p8_aes_cbc_alg);
  56 err_unregister_aes:
  57         crypto_unregister_alg(&p8_aes_alg);
  58 err_unregister_ghash:
  59         crypto_unregister_shash(&p8_ghash_alg);
  60 err:
  61         return ret;
  62 }
  63 
  64 static void __exit p8_exit(void)
  65 {
  66         crypto_unregister_skcipher(&p8_aes_xts_alg);
  67         crypto_unregister_skcipher(&p8_aes_ctr_alg);
  68         crypto_unregister_skcipher(&p8_aes_cbc_alg);
  69         crypto_unregister_alg(&p8_aes_alg);
  70         crypto_unregister_shash(&p8_ghash_alg);
  71 }
  72 
  73 module_cpu_feature_match(PPC_MODULE_FEATURE_VEC_CRYPTO, p8_init);
  74 module_exit(p8_exit);
  75 
  76 MODULE_AUTHOR("Marcelo Cerri<mhcerri@br.ibm.com>");
  77 MODULE_DESCRIPTION("IBM VMX cryptographic acceleration instructions "
  78                    "support on Power 8");
  79 MODULE_LICENSE("GPL");
  80 MODULE_VERSION("1.0.0");

/* [<][>][^][v][top][bottom][index][help] */