cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vmx.c (1843B)


      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#include "aesp8-ppc.h"
     21
     22static int __init p8_init(void)
     23{
     24	int ret;
     25
     26	ret = crypto_register_shash(&p8_ghash_alg);
     27	if (ret)
     28		goto err;
     29
     30	ret = crypto_register_alg(&p8_aes_alg);
     31	if (ret)
     32		goto err_unregister_ghash;
     33
     34	ret = crypto_register_skcipher(&p8_aes_cbc_alg);
     35	if (ret)
     36		goto err_unregister_aes;
     37
     38	ret = crypto_register_skcipher(&p8_aes_ctr_alg);
     39	if (ret)
     40		goto err_unregister_aes_cbc;
     41
     42	ret = crypto_register_skcipher(&p8_aes_xts_alg);
     43	if (ret)
     44		goto err_unregister_aes_ctr;
     45
     46	return 0;
     47
     48err_unregister_aes_ctr:
     49	crypto_unregister_skcipher(&p8_aes_ctr_alg);
     50err_unregister_aes_cbc:
     51	crypto_unregister_skcipher(&p8_aes_cbc_alg);
     52err_unregister_aes:
     53	crypto_unregister_alg(&p8_aes_alg);
     54err_unregister_ghash:
     55	crypto_unregister_shash(&p8_ghash_alg);
     56err:
     57	return ret;
     58}
     59
     60static void __exit p8_exit(void)
     61{
     62	crypto_unregister_skcipher(&p8_aes_xts_alg);
     63	crypto_unregister_skcipher(&p8_aes_ctr_alg);
     64	crypto_unregister_skcipher(&p8_aes_cbc_alg);
     65	crypto_unregister_alg(&p8_aes_alg);
     66	crypto_unregister_shash(&p8_ghash_alg);
     67}
     68
     69module_cpu_feature_match(PPC_MODULE_FEATURE_VEC_CRYPTO, p8_init);
     70module_exit(p8_exit);
     71
     72MODULE_AUTHOR("Marcelo Cerri<mhcerri@br.ibm.com>");
     73MODULE_DESCRIPTION("IBM VMX cryptographic acceleration instructions "
     74		   "support on Power 8");
     75MODULE_LICENSE("GPL");
     76MODULE_VERSION("1.0.0");
     77MODULE_IMPORT_NS(CRYPTO_INTERNAL);