[V3 PATCH 8/8] KVM: selftests: Add private mem test for SEV VMs

From: Vishal Annapurve
Date: Thu Dec 22 2022 - 19:15:04 EST


Add SEV VM specific private mem test to invoke selftest logic similar
to the one executed for non-confidential VMs.

Signed-off-by: Vishal Annapurve <vannapurve@xxxxxxxxxx>
---
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 1 +
.../kvm/x86_64/sev_private_mem_test.c | 26 +++++++++++++++++++
3 files changed, 28 insertions(+)
create mode 100644 tools/testing/selftests/kvm/x86_64/sev_private_mem_test.c

diff --git a/tools/testing/selftests/kvm/.gitignore b/tools/testing/selftests/kvm/.gitignore
index f73639dcbebb..e5c82a1cd733 100644
--- a/tools/testing/selftests/kvm/.gitignore
+++ b/tools/testing/selftests/kvm/.gitignore
@@ -40,6 +40,7 @@
/x86_64/set_sregs_test
/x86_64/sev_all_boot_test
/x86_64/sev_migrate_tests
+/x86_64/sev_private_mem_test
/x86_64/smaller_maxphyaddr_emulation_test
/x86_64/smm_test
/x86_64/state_test
diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index 83c649c9de23..a8ee7c473644 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -104,6 +104,7 @@ TEST_GEN_PROGS_x86_64 += x86_64/pmu_event_filter_test
TEST_GEN_PROGS_x86_64 += x86_64/private_mem_test
TEST_GEN_PROGS_x86_64 += x86_64/set_boot_cpu_id
TEST_GEN_PROGS_x86_64 += x86_64/set_sregs_test
+TEST_GEN_PROGS_x86_64 += x86_64/sev_private_mem_test
TEST_GEN_PROGS_x86_64 += x86_64/smaller_maxphyaddr_emulation_test
TEST_GEN_PROGS_x86_64 += x86_64/smm_test
TEST_GEN_PROGS_x86_64 += x86_64/state_test
diff --git a/tools/testing/selftests/kvm/x86_64/sev_private_mem_test.c b/tools/testing/selftests/kvm/x86_64/sev_private_mem_test.c
new file mode 100644
index 000000000000..943fdfbe41d9
--- /dev/null
+++ b/tools/testing/selftests/kvm/x86_64/sev_private_mem_test.c
@@ -0,0 +1,26 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2022, Google LLC.
+ */
+#define _GNU_SOURCE /* for program_invocation_short_name */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <private_mem_test_helper.h>
+
+int main(int argc, char *argv[])
+{
+ execute_sev_vm_with_private_test_mem(
+ VM_MEM_SRC_ANONYMOUS_AND_RESTRICTED_MEMFD);
+
+ /* Needs 2MB Hugepages */
+ if (get_free_huge_2mb_pages() >= 1) {
+ printf("Running SEV VM private mem test with 2M pages\n");
+ execute_sev_vm_with_private_test_mem(
+ VM_MEM_SRC_ANON_HTLB2M_AND_RESTRICTED_MEMFD);
+ } else
+ printf("Skipping SEV VM private mem test with 2M pages\n");
+
+ return 0;
+}
--
2.39.0.314.g84b9a713c41-goog