From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40390) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ze1oW-0005QG-P6 for qemu-devel@nongnu.org; Mon, 21 Sep 2015 10:11:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ze1oT-0007DF-Ff for qemu-devel@nongnu.org; Mon, 21 Sep 2015 10:11:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53406) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ze1oT-0007Cx-9X for qemu-devel@nongnu.org; Mon, 21 Sep 2015 10:11:25 -0400 References: <1442342713-29497-1-git-send-email-rth@twiddle.net> <55FFF2A0.7070808@redhat.com> <20150921140531.GA4004@thinpad.lan.raisama.net> From: Paolo Bonzini Message-ID: <5600100A.90806@redhat.com> Date: Mon, 21 Sep 2015 16:11:22 +0200 MIME-Version: 1.0 In-Reply-To: <20150921140531.GA4004@thinpad.lan.raisama.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 0/8] target-i386: Implement debug extensions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: qemu-devel@nongnu.org, Richard Henderson On 21/09/2015 16:05, Eduardo Habkost wrote: > On Mon, Sep 21, 2015 at 02:05:52PM +0200, Paolo Bonzini wrote: >> On 15/09/2015 20:45, Richard Henderson wrote: >>> Best guess, since I can't find any code that actually uses them. >>> Linux actively turns them off at boot... >> >> I've sent a kvm-unit-tests patch to test debug extensions. It shows >> that debug extensions work, but the following needs to be squashed in >> patch 4: >> >> diff --git a/target-i386/bpt_helper.c b/target-i386/bpt_helper.c >> index c258598..b24e446 100644 >> --- a/target-i386/bpt_helper.c >> +++ b/target-i386/bpt_helper.c >> @@ -134,14 +134,14 @@ void cpu_x86_update_dr7(CPUX86State *env, uint32_t new_dr7) >> int mod = ((old_dr7 | old_dr7 * 2) ^ (new_dr7 | new_dr7 * 2)) & 0xff; >> >> for (i = 0; i < DR7_MAX_BP; i++) { >> - if (mod & (2 << i * 2)) { >> - /* We know that register i has changed enable state; >> - recheck what that state should be and apply. */ >> - if (hw_breakpoint_enabled(new_dr7, i)) { >> - iobpt |= hw_breakpoint_insert(env, i); >> - } else { >> - hw_breakpoint_remove(env, i); >> - } >> + if ((mod & (2 << i * 2)) && !hw_breakpoint_enabled(new_dr7, i)) { >> + hw_breakpoint_remove(env, i); >> + } >> + } >> + env->dr[7] = new_dr7 | DR7_FIXED_1; >> + for (i = 0; i < DR7_MAX_BP; i++) { >> + if (mod & (2 << i * 2) && hw_breakpoint_enabled(new_dr7, i)) { >> + iobpt |= hw_breakpoint_insert(env, i); >> } else if (hw_breakpoint_type(new_dr7, i) == DR7_TYPE_IO_RW >> && hw_breakpoint_enabled(new_dr7, i)) { >> iobpt |= HF_IOBPT_MASK; > > Thanks! If that's the only change needed in the series, I can squash it > when applying. I just need your Signed-off-by line. Signed-off-by: Paolo Bonzini :) but perhaps wait a little for Richard to chime in. Paolo