I think the problem lies here: /* * If the guest has used debug registers, at least dr7 * will be disabled while returning to the host. * If we don't have active breakpoints in the host, we don't * care about the messed up debug address registers. But if * we have some of them active, restore the old state. */ if (hw_breakpoint_active()) { hw_breakpoint_restore(); }
First we need to reload the DRs after we do hw_breakpoint_restore(), no? vcpu->arch.switch_db_regs |= KVM_DEBUGREG_RELOAD; Second, I am unsure whether hw_breakpoint_active() is the correct condition. In my defense note that my tests did not his this case since I set affinity of the VCPUs to physical cores, and prevented other processes from running. Regards, Nadav Paolo Bonzini <pbonz...@redhat.com> wrote: > > > On 29/01/2016 23:21, Andrew Vagin wrote: >> On Thu, Jan 28, 2016 at 02:42:25PM -0800, Andrey Wagin wrote: >>> On Thu, Jan 28, 2016 at 10:33:28PM +0100, Paolo Bonzini wrote: >>>> On 28/01/2016 09:31, Andrey Wagin wrote: >>>>> I tried to print drX registers after a break-point. Looks like they >>>>> are set correctly. >>>> >>>> Can you try this KVM patch? >>> >>> Looks like it fixes a case when reproducers are running only in VM. >> >> Actually Oleg's reproducer detects the bug with this patch when they are >> rinning only in VM. > > That's actually a good thing, because the patch was a long shot and I > had no clue _why_ it would have fixed the bug. Oleg's reproducer > spanning host and a VM actually gives me an idea of what is going on, > I'll try to reproduce this week. > > Paolo > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html