aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tools/testing/selftests/kvm/steal_time.c
diff options
context:
space:
mode:
authorHou Wenlong <houwenlong93@linux.alibaba.com>2021-06-22 21:55:32 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2021-06-24 04:31:16 -0400
commite5830fb13b8cad5e3bdf84f0f7a3dcb4f4d9bcbb (patch)
treeb3a21925d45712d798b62314f52b3f7ab65c3621 /tools/testing/selftests/kvm/steal_time.c
parentKVM: x86: Print CPU of last attempted VM-entry when dumping VMCS/VMCB (diff)
downloadwireguard-linux-e5830fb13b8cad5e3bdf84f0f7a3dcb4f4d9bcbb.tar.xz
wireguard-linux-e5830fb13b8cad5e3bdf84f0f7a3dcb4f4d9bcbb.zip
KVM: selftests: fix triple fault if ept=0 in dirty_log_test
Commit 22f232d134e1 ("KVM: selftests: x86: Set supported CPUIDs on default VM") moved vcpu_set_cpuid into vm_create_with_vcpus, but dirty_log_test doesn't use it to create vm. So vcpu's CPUIDs is not set, the guest's pa_bits in kvm would be smaller than the value queried by userspace. However, the dirty track memory slot is in the highest GPA, the reserved bits in gpte would be set with wrong pa_bits. For shadow paging, page fault would fail in permission_fault and be injected into guest. Since guest doesn't have idt, it finally leads to vm_exit for triple fault. Move vcpu_set_cpuid into vm_vcpu_add_default to set supported CPUIDs on default vcpu, since almost all tests need it. Fixes: 22f232d134e1 ("KVM: selftests: x86: Set supported CPUIDs on default VM") Signed-off-by: Hou Wenlong <houwenlong93@linux.alibaba.com> Message-Id: <411ea2173f89abce56fc1fca5af913ed9c5a89c9.1624351343.git.houwenlong93@linux.alibaba.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'tools/testing/selftests/kvm/steal_time.c')
-rw-r--r--tools/testing/selftests/kvm/steal_time.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selftests/kvm/steal_time.c
index fcc840088c91..a6fe75cb9a6e 100644
--- a/tools/testing/selftests/kvm/steal_time.c
+++ b/tools/testing/selftests/kvm/steal_time.c
@@ -73,8 +73,6 @@ static void steal_time_init(struct kvm_vm *vm)
for (i = 0; i < NR_VCPUS; ++i) {
int ret;
- vcpu_set_cpuid(vm, i, kvm_get_supported_cpuid());
-
/* ST_GPA_BASE is identity mapped */
st_gva[i] = (void *)(ST_GPA_BASE + i * STEAL_TIME_SIZE);
sync_global_to_guest(vm, st_gva[i]);