public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] KVM: vmx: Advance rip to after an ICEBP instruction.
@ 2014-04-15 13:40 Huw Davies
  2014-04-15 16:46 ` Jan Kiszka
  0 siblings, 1 reply; 2+ messages in thread
From: Huw Davies @ 2014-04-15 13:40 UTC (permalink / raw)
  To: kvm; +Cc: Gleb Natapov, Paolo Bonzini, Marcelo Tosatti

When entering an exception after an ICEBP, the saved instruction
pointer should point to after the instruction.

This fixes the bug here: https://bugs.launchpad.net/qemu/+bug/1119686

Signed-off-by: Huw Davies <huw@codeweavers.com>
---
 arch/x86/kvm/vmx.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index 1f68c58..4c41d7a 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -4841,6 +4841,9 @@ static int handle_exception(struct kvm_vcpu *vcpu)
 		      (KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_USE_HW_BP))) {
 			vcpu->arch.dr6 &= ~15;
 			vcpu->arch.dr6 |= dr6;
+			if (dr6 == 0) /* icebp */
+				skip_emulated_instruction(vcpu);
+
 			kvm_queue_exception(vcpu, DB_VECTOR);
 			return 1;
 		}
-- 
1.8.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] KVM: vmx: Advance rip to after an ICEBP instruction.
  2014-04-15 13:40 [PATCH] KVM: vmx: Advance rip to after an ICEBP instruction Huw Davies
@ 2014-04-15 16:46 ` Jan Kiszka
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kiszka @ 2014-04-15 16:46 UTC (permalink / raw)
  To: Huw Davies, kvm; +Cc: Gleb Natapov, Paolo Bonzini, Marcelo Tosatti

On 2014-04-15 15:40, Huw Davies wrote:
> When entering an exception after an ICEBP, the saved instruction
> pointer should point to after the instruction.
> 
> This fixes the bug here: https://bugs.launchpad.net/qemu/+bug/1119686
> 
> Signed-off-by: Huw Davies <huw@codeweavers.com>
> ---
>  arch/x86/kvm/vmx.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 1f68c58..4c41d7a 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -4841,6 +4841,9 @@ static int handle_exception(struct kvm_vcpu *vcpu)
>  		      (KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_USE_HW_BP))) {
>  			vcpu->arch.dr6 &= ~15;
>  			vcpu->arch.dr6 |= dr6;
> +			if (dr6 == 0) /* icebp */

In arch/x86/kernel/traps.c, DR6_RESERVED is first masked out before
testing the result against 0 - that's probably more robust here, too.

Jan

> +				skip_emulated_instruction(vcpu);
> +
>  			kvm_queue_exception(vcpu, DB_VECTOR);
>  			return 1;
>  		}
> 
-- 
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-04-15 16:47 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-15 13:40 [PATCH] KVM: vmx: Advance rip to after an ICEBP instruction Huw Davies
2014-04-15 16:46 ` Jan Kiszka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox