Commit 0792c71c authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: selftests: Verify KVM disable interception (for userspace) on filter change



Re-read MSR_{FS,GS}_BASE after restoring the "allow everything" userspace
MSR filter to verify that KVM stops forwarding exits to userspace.  This
can also be used in conjunction with manual verification (e.g. printk) to
ensure KVM is correctly updating the MSR bitmaps consumed by hardware.

Tested-by: default avatarDapeng Mi <dapeng1.mi@linux.intel.com>
Tested-by: default avatarManali Shukla <Manali.Shukla@amd.com>
Link: https://lore.kernel.org/r/20250610225737.156318-33-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent bea44d19
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -343,6 +343,12 @@ static void guest_code_permission_bitmap(void)
	data = test_rdmsr(MSR_GS_BASE);
	GUEST_ASSERT(data == MSR_GS_BASE);

	/* Access the MSRs again to ensure KVM has disabled interception.*/
	data = test_rdmsr(MSR_FS_BASE);
	GUEST_ASSERT(data != MSR_FS_BASE);
	data = test_rdmsr(MSR_GS_BASE);
	GUEST_ASSERT(data != MSR_GS_BASE);

	GUEST_DONE();
}

@@ -682,6 +688,8 @@ KVM_ONE_VCPU_TEST(user_msr, msr_permission_bitmap, guest_code_permission_bitmap)
		    "Expected ucall state to be UCALL_SYNC.");
	vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_gs);
	run_guest_then_process_rdmsr(vcpu, MSR_GS_BASE);

	vm_ioctl(vm, KVM_X86_SET_MSR_FILTER, &filter_allow);
	run_guest_then_process_ucall_done(vcpu);
}