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

crypto.c (1081B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 * MMC crypto engine (inline encryption) support
      4 *
      5 * Copyright 2020 Google LLC
      6 */
      7
      8#include <linux/blk-crypto.h>
      9#include <linux/mmc/host.h>
     10
     11#include "core.h"
     12#include "crypto.h"
     13#include "queue.h"
     14
     15void mmc_crypto_set_initial_state(struct mmc_host *host)
     16{
     17	/* Reset might clear all keys, so reprogram all the keys. */
     18	if (host->caps2 & MMC_CAP2_CRYPTO)
     19		blk_crypto_reprogram_all_keys(&host->crypto_profile);
     20}
     21
     22void mmc_crypto_setup_queue(struct request_queue *q, struct mmc_host *host)
     23{
     24	if (host->caps2 & MMC_CAP2_CRYPTO)
     25		blk_crypto_register(&host->crypto_profile, q);
     26}
     27EXPORT_SYMBOL_GPL(mmc_crypto_setup_queue);
     28
     29void mmc_crypto_prepare_req(struct mmc_queue_req *mqrq)
     30{
     31	struct request *req = mmc_queue_req_to_req(mqrq);
     32	struct mmc_request *mrq = &mqrq->brq.mrq;
     33	struct blk_crypto_keyslot *keyslot;
     34
     35	if (!req->crypt_ctx)
     36		return;
     37
     38	mrq->crypto_ctx = req->crypt_ctx;
     39
     40	keyslot = req->crypt_keyslot;
     41	if (keyslot)
     42		mrq->crypto_key_slot = blk_crypto_keyslot_index(keyslot);
     43}
     44EXPORT_SYMBOL_GPL(mmc_crypto_prepare_req);