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: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
3980e3024b
commit
95c077c919
@ -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[n] = hw_breakpoint[n].addr;
|
||||||
dbg->arch.debugreg[7] |= (2 << (n * 2)) |
|
dbg->arch.debugreg[7] |= (2 << (n * 2)) |
|
||||||
(type_code[hw_breakpoint[n].type] << (16 + n*4)) |
|
(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 */
|
/* Legal xcr0 for loading */
|
||||||
|
Loading…
Reference in New Issue
Block a user