Skip to contentSkip to conversation

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

PATCH Applied Jan Kiszka 2 participants 2 messages Dec 27, 2010 KVM

lore
Share & tools
lore

Jan Kiszka

author
#0 lore raw

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

From: Jan Kiszka <[email protected]>

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).

---
 target-i386/kvm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
target-i386/kvm.c +1 -1
index 9a4bf98..218812a 100644
@@ -1693,7 +1693,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 */
Signature · 1 line
1.7.1
Applied
#1 lore raw
Quoted 6 lines · Jan Kiszka

From: Jan Kiszka<[email protected]>

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).

Applied to uq/master, thanks.

Signature · 1 line
error compiling committee.c: too many arguments to function