aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRucha Katakwar <ruchamk@google.com>2022-02-22 18:58:04 +0000
committerRucha Katakwar <ruchamk@google.com>2022-02-22 18:58:04 +0000
commita80f5057c756c82f6031f5eac00a63656ee915b9 (patch)
treef595bb458e3d00877d287a5705087ebf9a8c109e
parent78d07f9002829d1a40c1dc74c878df09f5e78713 (diff)
downloadlinux-kselftest-a80f5057c756c82f6031f5eac00a63656ee915b9.tar.gz
Revert "ANDROID: kvm: Test that pVM memory is wiped during teardown"
Revert "vts: kselftest: Add pKVM memory test" Revert submission 1992915-pvm-wipe-mem-test Reason for revert: DroidMonitor: Potential culprit for Bug 220892298 - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted. Reverted Changes: I897e18e10:ANDROID: Add .patch version of pKVM test Idb29f4624:vts: kselftest: Add pKVM memory test I8f4cc012a:ANDROID: kvm: Test that pVM memory is wiped during... Change-Id: Ic7c5ccd0e602b066e1161ec8e4ddeaeeead93532
-rw-r--r--Android.bp19
-rw-r--r--android/kselftest_test_list.mk1
-rw-r--r--tools/testing/selftests/kvm/aarch64/pvm_wipe_mem.c174
3 files changed, 0 insertions, 194 deletions
diff --git a/Android.bp b/Android.bp
index 0990d0af28d1..0b9166c56315 100644
--- a/Android.bp
+++ b/Android.bp
@@ -340,25 +340,6 @@ cc_test {
defaults: ["kselftest_defaults"],
}
-// KVM test
-cc_test {
- name: "kselftest_kvm_arm64_tests",
- relative_install_path: "linux-kselftest/kvm/aarch64",
- local_include_dirs: [ "tools/testing/selftests"],
- arch: {
- arm: {
- enabled: false,
- },
- arm64: {
- srcs: ["tools/testing/selftests/kvm/aarch64/pvm_wipe_mem.c"],
- },
- x86: {
- enabled: false,
- },
- },
- defaults: ["kselftest_defaults"],
-}
-
// Lib test
sh_test {
name: "kselftest_lib_printf",
diff --git a/android/kselftest_test_list.mk b/android/kselftest_test_list.mk
index 46b9b92c58fb..07df6fc5d758 100644
--- a/android/kselftest_test_list.mk
+++ b/android/kselftest_test_list.mk
@@ -31,7 +31,6 @@ kselftest_modules += \
kselftest_intel_pstate_tests_aperf \
kselftest_intel_pstate_tests_msr \
kselftest_kcmp_tests_kcmp_test \
- kselftest_kvm_arm64_tests_pvm_wipe_mem \
kselftest_net_tests_psock_tpacket \
kselftest_net_tests_socket \
kselftest_net_tests_reuseaddr_conflict \
diff --git a/tools/testing/selftests/kvm/aarch64/pvm_wipe_mem.c b/tools/testing/selftests/kvm/aarch64/pvm_wipe_mem.c
deleted file mode 100644
index 4af8ca3c4bad..000000000000
--- a/tools/testing/selftests/kvm/aarch64/pvm_wipe_mem.c
+++ /dev/null
@@ -1,174 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Test checking that memory of protected guests is wiped after teardown.
- *
- * Copyright (C) 2022, Google LLC.
- */
-
-#define _GNU_SOURCE
-
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <linux/kvm.h>
-#include <sys/ioctl.h>
-#include <sys/mman.h>
-
-#include "kselftest.h"
-
-#define KVM_VM_TYPE_ARM_PROTECTED (1UL << 31)
-
-#define REG_X(number) (0x6030000000100000ULL + (number) * 2UL)
-#define REG_PC 0x6030000000100040ULL
-
-static void set_one_reg(int vcpufd, uint64_t reg_id, uint64_t val)
-{
- uint64_t reg_data;
- struct kvm_one_reg reg;
- int ret;
-
- reg.addr = (__u64) &reg_data;
- reg_data = val;
- reg.id = reg_id;
-
- ret = ioctl(vcpufd, KVM_SET_ONE_REG, &reg);
- if (ret < 0)
- ksft_exit_fail_msg("Failed to set reg: %d\n", ret);
-}
-
-static int get_kvm(void)
-{
- size_t run_size;
- int kvm, ret;
-
- kvm = open("/dev/kvm", O_RDWR | O_CLOEXEC);
- if (kvm < 0)
- ksft_exit_skip("KVM not supported\n");
-
- ret = ioctl(kvm, KVM_GET_API_VERSION, NULL);
- if (ret != 12)
- ksft_exit_fail_msg("KVM_GET_API_VERSION %d, expected 12", ret);
-
- run_size = ioctl(kvm, KVM_GET_VCPU_MMAP_SIZE, NULL);
- if (run_size < sizeof(struct kvm_run))
- ksft_exit_fail_msg("KVM_GET_VCPU_MMAP_SIZE unexpectedly small\n");
-
- return kvm;
-}
-
-static int create_protected_vm(int kvm)
-{
- int vmfd = ioctl(kvm, KVM_CREATE_VM, KVM_VM_TYPE_ARM_PROTECTED);
-
- if (vmfd < 0)
- ksft_exit_skip("Protected guests not supported: %d\n", vmfd);
-
- return vmfd;
-}
-
-static int create_vcpu(int vmfd, struct kvm_run **run)
-{
- struct kvm_vcpu_init vcpu_init;
- int vcpufd, ret;
-
- ret = ioctl(vmfd, KVM_ARM_PREFERRED_TARGET, &vcpu_init);
- if (ret)
- ksft_exit_fail_msg("Failed to set kvm_vcpu_init %d\n", ret);
-
- vcpufd = ioctl(vmfd, KVM_CREATE_VCPU, (unsigned long)0);
- if (vcpufd < 0)
- ksft_exit_fail_msg("Failed to create VCPU: %d\n", vcpufd);
-
- *run = mmap(NULL, sizeof(**run), PROT_READ | PROT_WRITE, MAP_SHARED, vcpufd, 0);
- if (!run)
- ksft_exit_fail_msg("Failed to mmap vcpu_run struct\n");
-
- ret = ioctl(vcpufd, KVM_ARM_VCPU_INIT, &vcpu_init);
- if (ret)
- ksft_exit_fail_msg("Failed to initialize VCPU %d\n", ret);
-
- return vcpufd;
-}
-
-static void teardown(int kvm, int vmfd, int vcpufd, struct kvm_run *run)
-{
- int ret = munmap(run, sizeof(*run));
-
- if (ret)
- ksft_exit_fail_msg("Failed to unmap vCPU run: %d\n", ret);
-
- ret = close(vcpufd);
- if (ret)
- ksft_exit_fail_msg("Failed to destroy VCPU: %d\n", ret);
-
- ret = close(vmfd);
- if (ret)
- ksft_exit_fail_msg("Failed to destroy VM: %d\n", ret);
-
- ret = close(kvm);
- if (ret)
- ksft_exit_fail_msg("Failed to close KVM fd: %d\n", ret);
-}
-
-int main(void)
-{
- struct kvm_userspace_memory_region region;
- long page_size = sysconf(_SC_PAGESIZE);
- int ret, kvm, vmfd, vcpufd;
- uint32_t guest_code[2];
- struct kvm_run *run;
- uint8_t *guest_mem;
- size_t run_size;
-
- kvm = get_kvm();
- vmfd = create_protected_vm(kvm);
- vcpufd = create_vcpu(vmfd, &run);
-
- /* Create a one-page memslot for the guest */
- guest_mem = mmap(NULL, page_size, PROT_READ | PROT_WRITE,
- MAP_SHARED | MAP_ANONYMOUS, -1, 0);
- if (guest_mem == MAP_FAILED)
- ksft_exit_fail_msg("Failed to mmap guest memory\n");
- region = (struct kvm_userspace_memory_region) {
- .slot = 0,
- .guest_phys_addr = 1UL << 30,
- .memory_size = page_size,
- .userspace_addr = (uint64_t)guest_mem,
- };
-
- /* Copy some code in guest memory. */
- guest_code[0] = 0xf9400001; /* 1: ldr x1, [x0] */
- guest_code[1] = 0x17ffffff; /* b 1b */
- memcpy(guest_mem, guest_code, sizeof(guest_code));
- ret = ioctl(vmfd, KVM_SET_USER_MEMORY_REGION, &region);
- if (ret)
- ksft_exit_fail_msg("Failed to set memory region: %d\n", ret);
-
- /*
- * Get the VCPU to run one instruction, to be sure the page containing
- * the code has been faulted in.
- */
- set_one_reg(vcpufd, REG_PC, region.guest_phys_addr);
- set_one_reg(vcpufd, REG_X(0), region.guest_phys_addr + region.memory_size);
- ret = ioctl(vcpufd, KVM_RUN, NULL);
- if (ret)
- ksft_exit_fail_msg("Failed to run vcpu: %d\n", ret);
- if (run->exit_reason != KVM_EXIT_MMIO)
- ksft_exit_fail_msg("Unexpected KVM exit reason: %u\n", run->exit_reason);
-
- /*
- * Tear the guest down, and check that the donated memory has been
- * wiped by the hypervisor.
- */
- teardown(kvm, vmfd, vcpufd, run);
- if (!memcmp(guest_mem, guest_code, sizeof(guest_code)))
- ksft_exit_fail_msg("Protected guest memory has not been poisoned\n");
-
- ksft_exit_pass();
-}