1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef __KVM_X86_SGX_H |
3 | #define __KVM_X86_SGX_H |
4 | |
5 | #include <linux/kvm_host.h> |
6 | |
7 | #include "capabilities.h" |
8 | #include "vmx_ops.h" |
9 | |
10 | #ifdef CONFIG_X86_SGX_KVM |
11 | extern bool __read_mostly enable_sgx; |
12 | |
13 | int handle_encls(struct kvm_vcpu *vcpu); |
14 | |
15 | void setup_default_sgx_lepubkeyhash(void); |
16 | void vcpu_setup_sgx_lepubkeyhash(struct kvm_vcpu *vcpu); |
17 | |
18 | void vmx_write_encls_bitmap(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12); |
19 | #else |
20 | #define enable_sgx 0 |
21 | |
22 | static inline void setup_default_sgx_lepubkeyhash(void) { } |
23 | static inline void vcpu_setup_sgx_lepubkeyhash(struct kvm_vcpu *vcpu) { } |
24 | |
25 | static inline void vmx_write_encls_bitmap(struct kvm_vcpu *vcpu, |
26 | struct vmcs12 *vmcs12) |
27 | { |
28 | /* Nothing to do if hardware doesn't support SGX */ |
29 | if (cpu_has_vmx_encls_vmexit()) |
30 | vmcs_write64(ENCLS_EXITING_BITMAP, -1ull); |
31 | } |
32 | #endif |
33 | |
34 | #endif /* __KVM_X86_SGX_H */ |
35 | |