>> __kvm_set_xcr function does the CPL check when set xcr. __kvm_set_xcr >> is called in two flows, one is invoked by guest, call stack shown as >> below, handle_xsetbv(or xsetbv_interception) >> kvm_set_xcr >> __kvm_set_xcr >> the other one is invoked by host(QEMU), call stack shown as below, >> kvm_arch_vcpu_ioctl >> kvm_vcpu_ioctl_x86_set_xcrs >> __kvm_set_xcr >> >> The former does need the CPL check, but the latter does not. >> >> Signed-off-by: Zhang Haoyu <haoyu.zhang@xxxxxxxxxx> > >What does this patch fix? I suppose it is some kind of migration problem since you mentioned QEMU, but I'd rather be sure. I can fix the commit message myself when applying. This patch tries to fix the problem of system_reset invoked by qemu monitor[system_reset] or virsh command[virsh reset domain]. QEMU will reset the domain on receiving the reset request from qemu monitor or libvirtd, the reset flow shown as below, main_loop_should_exit |- pause_all_vcpus |- cpu_synchronize_all_states |- qemu_system_reset |-- cpu_synchronize_all_post_reset |--- cpu_synchronize_post_reset |---- kvm_cpu_synchronize_post_reset |----- kvm_arch_put_registers |------ kvm_put_xcrs |------- kvm_vcpu_ioctl(CPU(cpu), KVM_SET_XCRS, &xcrs) Above IOCTL syscall traps to kernel-space, KVM hypervisor then deal with the xcr set request, kvm_arch_vcpu_ioctl |- kvm_vcpu_ioctl_x86_set_xcrs |-- __kvm_set_xcr |--- if (kvm_x86_ops->get_cpl(vcpu) != 0) return 1; It's quite probably happened that vcpu's CPL is 3 while QEMU monitor doing the reset operation, which is a normal case, so the CPL check should be removed. But __kvm_set_xcr is also called in below flow, which is invoked by guest, handle_xsetbv(or xsetbv_interception) |- kvm_set_xcr |-- __kvm_set_xcr On this case, vcpu's CPL check must be performed, if vcpu's CPL!=0, then #GP exception should be injected to VM. Thanks, Zhang Haoyu > >Thanks, > >Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html