All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Nadav Amit <namit@cs.technion.ac.il>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v2] KVM: x86: Fix DR7 mask on task-switch while debugging
Date: Sun, 10 May 2015 17:27:31 +0200	[thread overview]
Message-ID: <554F78E3.8040201@redhat.com> (raw)
In-Reply-To: <1429467179-9270-1-git-send-email-namit@cs.technion.ac.il>



On 19/04/2015 20:12, Nadav Amit wrote:
> If the host sets hardware breakpoints to debug the guest, and a task-switch
> occurs in the guest, the architectural DR7 will not be updated. The effective
> DR7 would be updated instead.
> 
> This fix puts the DR7 update during task-switch emulation, so it now uses the
> standard DR setting mechanism instead of the one that was previously used. As a
> bonus, the update of DR7 will now be effective for AMD as well.
> 
> Signed-off-by: Nadav Amit <namit@cs.technion.ac.il>
> 
> ---
> 
> v1 -> v2:
> - Move the setting to emulate.c instead of x86.c
> - Shorten title
> ---
>  arch/x86/kvm/emulate.c | 6 +++++-
>  arch/x86/kvm/vmx.c     | 3 ---
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
> index 630bcb0..4a4555a 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -25,6 +25,7 @@
>  #include <linux/module.h>
>  #include <asm/kvm_emulate.h>
>  #include <linux/stringify.h>
> +#include <asm/debugreg.h>
>  
>  #include "x86.h"
>  #include "tss.h"
> @@ -2849,7 +2850,7 @@ static int emulator_do_task_switch(struct x86_emulate_ctxt *ctxt,
>  	ulong old_tss_base =
>  		ops->get_cached_segment_base(ctxt, VCPU_SREG_TR);
>  	u32 desc_limit;
> -	ulong desc_addr;
> +	ulong desc_addr, dr7;
>  
>  	/* FIXME: old_tss_base == ~0 ? */
>  
> @@ -2934,6 +2935,9 @@ static int emulator_do_task_switch(struct x86_emulate_ctxt *ctxt,
>  		ret = em_push(ctxt);
>  	}
>  
> +	ops->get_dr(ctxt, 7, &dr7);
> +	ops->set_dr(ctxt, 7, dr7 & ~(DR_LOCAL_ENABLE_MASK | DR_LOCAL_SLOWDOWN));
> +
>  	return ret;
>  }
>  
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index f7a0a7f..8f731c0 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -5703,9 +5703,6 @@ static int handle_task_switch(struct kvm_vcpu *vcpu)
>  		return 0;
>  	}
>  
> -	/* clear all local breakpoint enable flags */
> -	vmcs_writel(GUEST_DR7, vmcs_readl(GUEST_DR7) & ~0x155);
> -
>  	/*
>  	 * TODO: What about debug traps on tss switch?
>  	 *       Are we supposed to inject them and update dr6?
> 

Applied, thanks.

Paolo

      parent reply	other threads:[~2015-05-10 15:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-19 12:18 [PATCH] KVM: x86: Mask DR7 correctly on task-switch while debugging Nadav Amit
2015-04-19 17:08 ` Paolo Bonzini
2015-04-19 17:13   ` Nadav Amit
2015-04-19 18:12     ` [PATCH v2] KVM: x86: Fix DR7 mask " Nadav Amit
2015-05-07 11:12       ` Nadav Amit
2015-05-10 15:27       ` Paolo Bonzini [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=554F78E3.8040201@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=namit@cs.technion.ac.il \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.