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 <pbonz...@redhat.com> :) but perhaps wait a little for Richard to chime in. Paolo