2017-11-21 7:09 GMT+08:00 Paolo Bonzini <pbonzini@xxxxxxxxxx>: > On 20/11/2017 23:52, Wanpeng Li wrote: >> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c >> index b348920..131fa1c 100644 >> --- a/arch/x86/kvm/vmx.c >> +++ b/arch/x86/kvm/vmx.c >> @@ -5590,6 +5590,7 @@ static void vmx_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event) >> vmcs_write64(GUEST_IA32_DEBUGCTL, 0); >> } >> >> + kvm_set_rflags(vcpu, 2); >> vmcs_writel(GUEST_RFLAGS, 0x02); > > I think the vmcs_writel can go, kvm_set_rflags ends up calling > vmx_set_rflags. Agreed. > >> kvm_rip_write(vcpu, 0xfff0); >> >> > > Beautified testcase: > > #include <unistd.h> > #include <sys/syscall.h> > #include <string.h> > #include <stdint.h> > #include <linux/kvm.h> > #include <fcntl.h> > #include <sys/ioctl.h> > > long r[5]; > int main() > { > struct kvm_debugregs dr = { 0 }; > > r[2] = open("/dev/kvm", O_RDONLY); > r[3] = ioctl(r[2], KVM_CREATE_VM, 0); > r[4] = ioctl(r[3], KVM_CREATE_VCPU, 7); > struct kvm_guest_debug debug = { > .control = 0xf0403, > .arch = { > .debugreg[6] = 0x2, > .debugreg[7] = 0x2 > } > }; > ioctl(r[4], KVM_SET_GUEST_DEBUG, &debug); > ioctl(r[4], KVM_RUN, 0); > } > > No need to do anything, I'll handle this patch after -rc1. Thanks for that. :) Regards, Wanpeng Li