brintos

brintos / linux-shallow public Read only

0
0
Text · 3.2 KiB · caa4b44 Raw
120 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Confidential Computing Platform Capability checks4 *5 * Copyright (C) 2021 Advanced Micro Devices, Inc.6 *7 * Author: Tom Lendacky <thomas.lendacky@amd.com>8 */9 10#ifndef _LINUX_CC_PLATFORM_H11#define _LINUX_CC_PLATFORM_H12 13#include <linux/types.h>14#include <linux/stddef.h>15 16/**17 * enum cc_attr - Confidential computing attributes18 *19 * These attributes represent confidential computing features that are20 * currently active.21 */22enum cc_attr {23	/**24	 * @CC_ATTR_MEM_ENCRYPT: Memory encryption is active25	 *26	 * The platform/OS is running with active memory encryption. This27	 * includes running either as a bare-metal system or a hypervisor28	 * and actively using memory encryption or as a guest/virtual machine29	 * and actively using memory encryption.30	 *31	 * Examples include SME, SEV and SEV-ES.32	 */33	CC_ATTR_MEM_ENCRYPT,34 35	/**36	 * @CC_ATTR_HOST_MEM_ENCRYPT: Host memory encryption is active37	 *38	 * The platform/OS is running as a bare-metal system or a hypervisor39	 * and actively using memory encryption.40	 *41	 * Examples include SME.42	 */43	CC_ATTR_HOST_MEM_ENCRYPT,44 45	/**46	 * @CC_ATTR_GUEST_MEM_ENCRYPT: Guest memory encryption is active47	 *48	 * The platform/OS is running as a guest/virtual machine and actively49	 * using memory encryption.50	 *51	 * Examples include SEV and SEV-ES.52	 */53	CC_ATTR_GUEST_MEM_ENCRYPT,54 55	/**56	 * @CC_ATTR_GUEST_STATE_ENCRYPT: Guest state encryption is active57	 *58	 * The platform/OS is running as a guest/virtual machine and actively59	 * using memory encryption and register state encryption.60	 *61	 * Examples include SEV-ES.62	 */63	CC_ATTR_GUEST_STATE_ENCRYPT,64 65	/**66	 * @CC_ATTR_GUEST_UNROLL_STRING_IO: String I/O is implemented with67	 *                                  IN/OUT instructions68	 *69	 * The platform/OS is running as a guest/virtual machine and uses70	 * IN/OUT instructions in place of string I/O.71	 *72	 * Examples include TDX guest & SEV.73	 */74	CC_ATTR_GUEST_UNROLL_STRING_IO,75 76	/**77	 * @CC_ATTR_SEV_SNP: Guest SNP is active.78	 *79	 * The platform/OS is running as a guest/virtual machine and actively80	 * using AMD SEV-SNP features.81	 */82	CC_ATTR_GUEST_SEV_SNP,83 84	/**85	 * @CC_ATTR_HOST_SEV_SNP: AMD SNP enabled on the host.86	 *87	 * The host kernel is running with the necessary features88	 * enabled to run SEV-SNP guests.89	 */90	CC_ATTR_HOST_SEV_SNP,91};92 93#ifdef CONFIG_ARCH_HAS_CC_PLATFORM94 95/**96 * cc_platform_has() - Checks if the specified cc_attr attribute is active97 * @attr: Confidential computing attribute to check98 *99 * The cc_platform_has() function will return an indicator as to whether the100 * specified Confidential Computing attribute is currently active.101 *102 * Context: Any context103 * Return:104 * * TRUE  - Specified Confidential Computing attribute is active105 * * FALSE - Specified Confidential Computing attribute is not active106 */107bool cc_platform_has(enum cc_attr attr);108void cc_platform_set(enum cc_attr attr);109void cc_platform_clear(enum cc_attr attr);110 111#else	/* !CONFIG_ARCH_HAS_CC_PLATFORM */112 113static inline bool cc_platform_has(enum cc_attr attr) { return false; }114static inline void cc_platform_set(enum cc_attr attr) { }115static inline void cc_platform_clear(enum cc_attr attr) { }116 117#endif	/* CONFIG_ARCH_HAS_CC_PLATFORM */118 119#endif	/* _LINUX_CC_PLATFORM_H */120