Commit 95c077c9 authored by Jan Kiszka's avatar Jan Kiszka Committed by Marcelo Tosatti
Browse files

kvm: x86: Prevent sign extension of DR7 in guest debugging mode



This unbreaks guest debugging when the 4th hardware breakpoint used for
guest debugging is a watchpoint of 4 or 8 byte lenght. The 31st bit of
DR7 is set in that case and used to cause a sign extension to the high
word which was breaking the guest state (vm entry failure).

Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
parent 3980e302
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1686,7 +1686,7 @@ void kvm_arch_update_guest_debug(CPUState *env, struct kvm_guest_debug *dbg)
            dbg->arch.debugreg[n] = hw_breakpoint[n].addr;
            dbg->arch.debugreg[7] |= (2 << (n * 2)) |
                (type_code[hw_breakpoint[n].type] << (16 + n*4)) |
                (len_code[hw_breakpoint[n].len] << (18 + n*4));
                ((uint32_t)len_code[hw_breakpoint[n].len] << (18 + n*4));
        }
    }
    /* Legal xcr0 for loading */