diff options
| author | Louis Burda <quent.burda@gmail.com> | 2023-01-17 16:30:33 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2023-01-17 16:30:33 +0100 |
| commit | f2ea010b8180b4160d85c92e312971d0cd8a34d4 (patch) | |
| tree | 64e2598df2a0860187b1516e196ce7124de459a9 /test/kvm.h | |
| parent | 89785aa3c8d5d4007f856b14543a9b8aef31d661 (diff) | |
| download | cachepc-f2ea010b8180b4160d85c92e312971d0cd8a34d4.tar.gz cachepc-f2ea010b8180b4160d85c92e312971d0cd8a34d4.zip | |
Fixup kvm-eviction and refactor kvm-step
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; + |
