From: Paolo Bonzini <pbonzini@redhat.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: kvm <kvm@vger.kernel.org>
Subject: Re: [PATCH 2/2] KVM: VMX: Fix guest debugging while in L2
Date: Wed, 10 Feb 2016 15:41:19 +0100 [thread overview]
Message-ID: <56BB4C0F.4020008@redhat.com> (raw)
In-Reply-To: <56BA3AC6.6000104@web.de>
On 09/02/2016 20:15, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka@siemens.com>
>
> When we take a #DB or #BP vmexit while in guest mode, we first of all
> need to check if there is ongoing guest debugging that might be
> interested in the event. Currently, we unconditionally leave L2 and
> inject the event into L1 if it is intercepting the exceptions. That
> breaks things marvelously.
>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
> arch/x86/kvm/vmx.c | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index 7852092..cb501d3 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -968,6 +968,16 @@ static inline bool is_exception_n(u32 intr_info, u8 vector)
> (INTR_TYPE_HARD_EXCEPTION | vector | INTR_INFO_VALID_MASK);
> }
>
> +static inline bool is_debug(u32 intr_info)
> +{
> + return is_exception_n(intr_info, DB_VECTOR);
> +}
> +
> +static inline bool is_breakpoint(u32 intr_info)
> +{
> + return is_exception_n(intr_info, BP_VECTOR);
> +}
> +
> static inline bool is_page_fault(u32 intr_info)
> {
> return is_exception_n(intr_info, PF_VECTOR);
> @@ -7753,6 +7763,13 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu)
> else if (is_no_device(intr_info) &&
> !(vmcs12->guest_cr0 & X86_CR0_TS))
> return false;
> + else if (is_debug(intr_info) &&
> + vcpu->guest_debug &
> + (KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_USE_HW_BP))
> + return false;
> + else if (is_breakpoint(intr_info) &&
> + vcpu->guest_debug & KVM_GUESTDBG_USE_SW_BP)
> + return false;
> return vmcs12->exception_bitmap &
> (1u << (intr_info & INTR_INFO_VECTOR_MASK));
> case EXIT_REASON_EXTERNAL_INTERRUPT:
>
Thanks, I'll apply both patches shortly to kvm/queue.
However, next time please do not sign the patches. git send-email
doesn't like the way PGP signed messages escape "-" at the beginning of
the line.
Paolo
prev parent reply other threads:[~2016-02-10 14:41 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-09 19:14 [PATCH 1/2] KVM: VMX: Factor out is_exception_n helper Jan Kiszka
2016-02-09 19:15 ` [PATCH 2/2] KVM: VMX: Fix guest debugging while in L2 Jan Kiszka
2016-02-10 14:41 ` 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=56BB4C0F.4020008@redhat.com \
--to=pbonzini@redhat.com \
--cc=jan.kiszka@web.de \
--cc=kvm@vger.kernel.org \
/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.