summaryrefslogtreecommitdiffstats
path: root/test/kvm.h
diff options
context:
space:
mode:
authorLouis Burda <quent.burda@gmail.com>2023-01-17 16:30:33 +0100
committerLouis Burda <quent.burda@gmail.com>2023-01-17 16:30:33 +0100
commitf2ea010b8180b4160d85c92e312971d0cd8a34d4 (patch)
tree64e2598df2a0860187b1516e196ce7124de459a9 /test/kvm.h
parent89785aa3c8d5d4007f856b14543a9b8aef31d661 (diff)
downloadcachepc-f2ea010b8180b4160d85c92e312971d0cd8a34d4.tar.gz
cachepc-f2ea010b8180b4160d85c92e312971d0cd8a34d4.zip
Fixup kvm-eviction and refactor kvm-step
Diffstat (limited to 'test/kvm.h')
-rw-r--r--test/kvm.h50
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;
+