Skip to content

Commit

Permalink
KVM: selftests: Verify single-stepping a fastpath VM-Exit exits to us…
Browse files Browse the repository at this point in the history
…erspace

In x86's debug_regs test, change the RDMSR(MISC_ENABLES) in the single-step
testcase to a WRMSR(TSC_DEADLINE) in order to verify that KVM honors
KVM_GUESTDBG_SINGLESTEP when handling a fastpath VM-Exit.

Note, the extra coverage is effectively Intel-only, as KVM only handles
TSC_DEADLINE in the fastpath when the timer is emulated via the hypervisor
timer, a.k.a. the VMX preemption timer.

Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Sean Christopherson <[email protected]>
  • Loading branch information
sean-jc committed Sep 10, 2024
1 parent 9d15171 commit c32e028
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions tools/testing/selftests/kvm/x86_64/debug_regs.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,18 @@ static void guest_code(void)
/*
* Single step test, covers 2 basic instructions and 2 emulated
*
* Enable interrupts during the single stepping to see that
* pending interrupt we raised is not handled due to KVM_GUESTDBG_BLOCKIRQ
* Enable interrupts during the single stepping to see that pending
* interrupt we raised is not handled due to KVM_GUESTDBG_BLOCKIRQ.
*
* Write MSR_IA32_TSC_DEADLINE to verify that KVM's fastpath handler
* exits to userspace due to single-step being enabled.
*/
asm volatile("ss_start: "
"sti\n\t"
"xor %%eax,%%eax\n\t"
"cpuid\n\t"
"movl $0x1a0,%%ecx\n\t"
"rdmsr\n\t"
"movl $" __stringify(MSR_IA32_TSC_DEADLINE) ", %%ecx\n\t"
"wrmsr\n\t"
"cli\n\t"
: : : "eax", "ebx", "ecx", "edx");

Expand Down

0 comments on commit c32e028

Please sign in to comment.