linux/include/linux/mem_encrypt.h
<<
>>
Prefs
   1/*
   2 * AMD Memory Encryption Support
   3 *
   4 * Copyright (C) 2016 Advanced Micro Devices, Inc.
   5 *
   6 * Author: Tom Lendacky <thomas.lendacky@amd.com>
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License version 2 as
  10 * published by the Free Software Foundation.
  11 */
  12
  13#ifndef __MEM_ENCRYPT_H__
  14#define __MEM_ENCRYPT_H__
  15
  16#ifndef __ASSEMBLY__
  17
  18#ifdef CONFIG_ARCH_HAS_MEM_ENCRYPT
  19
  20#include <asm/mem_encrypt.h>
  21
  22#else   /* !CONFIG_ARCH_HAS_MEM_ENCRYPT */
  23
  24#define sme_me_mask     0ULL
  25
  26static inline bool sme_active(void) { return false; }
  27static inline bool sev_active(void) { return false; }
  28
  29#endif  /* CONFIG_ARCH_HAS_MEM_ENCRYPT */
  30
  31static inline bool mem_encrypt_active(void)
  32{
  33        return sme_me_mask;
  34}
  35
  36static inline u64 sme_get_me_mask(void)
  37{
  38        return sme_me_mask;
  39}
  40
  41#ifdef CONFIG_AMD_MEM_ENCRYPT
  42/*
  43 * The __sme_set() and __sme_clr() macros are useful for adding or removing
  44 * the encryption mask from a value (e.g. when dealing with pagetable
  45 * entries).
  46 */
  47#define __sme_set(x)            ((x) | sme_me_mask)
  48#define __sme_clr(x)            ((x) & ~sme_me_mask)
  49#else
  50#define __sme_set(x)            (x)
  51#define __sme_clr(x)            (x)
  52#endif
  53
  54#endif  /* __ASSEMBLY__ */
  55
  56#endif  /* __MEM_ENCRYPT_H__ */
  57