diff options
Diffstat (limited to 'test/kvm.h')
| -rw-r--r-- | test/kvm.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/test/kvm.h b/test/kvm.h new file mode 100644 index 0000000..6605364 --- /dev/null +++ b/test/kvm.h @@ -0,0 +1,50 @@ +#pragma once + +#include <stdint.h> +#include <stdlib.h> + +enum { WITH, WITHOUT }; + +enum { + GSTATE_UNINIT, + GSTATE_LUPDATE, + GSTATE_LSECRET, + GSTATE_RUNNING, + GSTATE_SUPDATE, + GSTATE_RUPDATE, + GSTATE_SENT +}; + +struct kvm { + int fd, vmfd, vcpufd; + void *mem; + size_t memsize; + struct kvm_run *run; +}; + +const char *sev_fwerr_str(int code); +const char *sev_gstate_str(int code); + +int sev_ioctl(int vmfd, int cmd, void *data, int *error); +void sev_get_measure(int vmfd); +uint8_t sev_guest_state(int vmfd, uint32_t handle); +void sev_dbg_decrypt(int vmfd, void *src, void *dst, size_t size); +uint64_t sev_dbg_decrypt_rip(int vmfd); +void snp_dbg_decrypt(int vmfd, void *src, void *dst, size_t size); +uint64_t snp_dbg_decrypt_rip(int vmfd); + +void kvm_init(struct kvm *kvm, size_t ramsize, + void *code_start, void *code_stop); +void sev_kvm_init(struct kvm *kvm, size_t ramsize, + void *code_start, void *code_stop); +void sev_es_kvm_init(struct kvm *kvm, size_t ramsize, + void *code_start, void *code_stop); +void sev_snp_kvm_init(struct kvm *kvm, size_t ramsize, + void *code_start, void *code_stop); +void kvm_deinit(struct kvm *kvm); + +void kvm_setup_init(void); +void kvm_setup_deinit(void); + +extern int kvm_dev, sev_dev; + |
