162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef __KVM_X86_SGX_H 362306a36Sopenharmony_ci#define __KVM_X86_SGX_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/kvm_host.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "capabilities.h" 862306a36Sopenharmony_ci#include "vmx_ops.h" 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifdef CONFIG_X86_SGX_KVM 1162306a36Sopenharmony_ciextern bool __read_mostly enable_sgx; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciint handle_encls(struct kvm_vcpu *vcpu); 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_civoid setup_default_sgx_lepubkeyhash(void); 1662306a36Sopenharmony_civoid vcpu_setup_sgx_lepubkeyhash(struct kvm_vcpu *vcpu); 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_civoid vmx_write_encls_bitmap(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12); 1962306a36Sopenharmony_ci#else 2062306a36Sopenharmony_ci#define enable_sgx 0 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistatic inline void setup_default_sgx_lepubkeyhash(void) { } 2362306a36Sopenharmony_cistatic inline void vcpu_setup_sgx_lepubkeyhash(struct kvm_vcpu *vcpu) { } 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_cistatic inline void vmx_write_encls_bitmap(struct kvm_vcpu *vcpu, 2662306a36Sopenharmony_ci struct vmcs12 *vmcs12) 2762306a36Sopenharmony_ci{ 2862306a36Sopenharmony_ci /* Nothing to do if hardware doesn't support SGX */ 2962306a36Sopenharmony_ci if (cpu_has_vmx_encls_vmexit()) 3062306a36Sopenharmony_ci vmcs_write64(ENCLS_EXITING_BITMAP, -1ull); 3162306a36Sopenharmony_ci} 3262306a36Sopenharmony_ci#endif 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci#endif /* __KVM_X86_SGX_H */ 35