From: Scott Wood <scottwood@freescale.com>
To: Alexander Graf <agraf@suse.de>
Cc: Bhushan Bharat-R65777 <R65777@freescale.com>,
"kvm-ppc@vger.kernel.org" <kvm-ppc@vger.kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: [PATCH 8/8] KVM:PPC:booke: Allow debug interrupt injection to guest
Date: Thu, 31 Jan 2013 22:40:19 +0000 [thread overview]
Message-ID: <1359672019.31540.29@snotra> (raw)
In-Reply-To: <16DEE4DC-E963-49FB-B211-810D1068E6C4@suse.de> (from agraf@suse.de on Thu Jan 31 13:20:39 2013)
On 01/31/2013 01:20:39 PM, Alexander Graf wrote:
>
> On 31.01.2013, at 20:05, Alexander Graf wrote:
>
> >
> > On 31.01.2013, at 19:54, Scott Wood wrote:
> >
> >> On 01/31/2013 12:52:41 PM, Alexander Graf wrote:
> >>> On 31.01.2013, at 19:43, Scott Wood wrote:
> >>>> On 01/31/2013 12:21:07 PM, Alexander Graf wrote:
> >>>>> How about something like this? Then both targets at least suck
> as much :).
> >>>>
> >>>> I'm not sure that should be the goal...
> >>>>
> >>>>> Thanks to e500mc's awful hardware design, we don't know who
> sets the MSR_DE bit. Once we forced it onto the guest, we have no
> change to know whether the guest also set it or not. We could only
> guess.
> >>>>
> >>>> MSRP[DEP] can prevent the guest from modifying MSR[DE] -- but we
> still need to set it in the first place.
> >>>>
> >>>> According to ISA V2.06B, the hypervisor should set DBCR0[EDM] to
> let the guest know that the debug resources are not available, and
> that "the value of MSR[DE] is not specified and not modifiable".
> >>> So what would the guest do then to tell the hypervisor that it
> actually wants to know about debug events?
> >>
> >> The guest is out of luck, just as if a JTAG were in use.
> >
> > Hrm.
> >
> > Can we somehow generalize this "out of luck" behavior?
> >
> > Every time we would set or clear an MSR bit in shadow_msr on
> e500v2, we would instead set or clear it in the real MSR. That way
> only e500mc is out of luck, but the code would still be shared.
I don't follow. e500v2 is just as out-of-luck. The mechanism simply
does not support sharing debug resources.
What do you mean by "the real MSR"? The real MSR is shadow_msr, and
MSR_DE must always be set there if the host is debugging the guest. As
for reflecting it into the guest MSR, we could, but I don't really see
the point. We're never going to actually send a debug exception to the
guest when the host owns the debug resources.
Speaking of naming issues, "guest_debug" is very ambiguous...
> diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
> index 38a62ef..9bdb845 100644
> --- a/arch/powerpc/kvm/booke.c
> +++ b/arch/powerpc/kvm/booke.c
> @@ -133,6 +133,29 @@ static void kvmppc_vcpu_sync_fpu(struct kvm_vcpu
> *vcpu)
> #endif
> }
>
> +static void kvmppc_vcpu_sync_debug(struct kvm_vcpu *vcpu)
> +{
> + u32 is_debug = vcpu->arch.shared->msr & MSR_DE;
> +
> + /* Force debug to on in guest space when user space wants to
> debug */
> + if (vcpu->guest_debug)
> + is_debug = MSR_DE;
> +
> +#ifdef CONFIG_KVM_BOOKE_HV
> + /*
> + * Since there is no shadow MSR, sync MSR_DE into the guest
> + * visible MSR.
> + */
> + vcpu->arch.shared->msr &= ~MSR_DE;
> + vcpu->arch.shared->msr |= is_debug;
> +#endif
> +
> +#ifndef CONFIG_KVM_BOOKE_HV
> + vcpu->arch.shadow_msr &= ~MSR_DE;
> + vcpu->arch.shadow_msr |= is_debug;
> +#endif
> +}
The "&= ~MSR_DE" line is pointless on bookehv, and makes it harder to
read. I had to stare at it a while before noticing that you initially
set is_debug from the guest MSR and that you'd never really clear
MSR_DE here on bookehv.
-Scott
WARNING: multiple messages have this Message-ID (diff)
From: Scott Wood <scottwood@freescale.com>
To: Alexander Graf <agraf@suse.de>
Cc: Bhushan Bharat-R65777 <R65777@freescale.com>,
"kvm-ppc@vger.kernel.org" <kvm-ppc@vger.kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: [PATCH 8/8] KVM:PPC:booke: Allow debug interrupt injection to guest
Date: Thu, 31 Jan 2013 16:40:19 -0600 [thread overview]
Message-ID: <1359672019.31540.29@snotra> (raw)
In-Reply-To: <16DEE4DC-E963-49FB-B211-810D1068E6C4@suse.de> (from agraf@suse.de on Thu Jan 31 13:20:39 2013)
On 01/31/2013 01:20:39 PM, Alexander Graf wrote:
>
> On 31.01.2013, at 20:05, Alexander Graf wrote:
>
> >
> > On 31.01.2013, at 19:54, Scott Wood wrote:
> >
> >> On 01/31/2013 12:52:41 PM, Alexander Graf wrote:
> >>> On 31.01.2013, at 19:43, Scott Wood wrote:
> >>>> On 01/31/2013 12:21:07 PM, Alexander Graf wrote:
> >>>>> How about something like this? Then both targets at least suck
> as much :).
> >>>>
> >>>> I'm not sure that should be the goal...
> >>>>
> >>>>> Thanks to e500mc's awful hardware design, we don't know who
> sets the MSR_DE bit. Once we forced it onto the guest, we have no
> change to know whether the guest also set it or not. We could only
> guess.
> >>>>
> >>>> MSRP[DEP] can prevent the guest from modifying MSR[DE] -- but we
> still need to set it in the first place.
> >>>>
> >>>> According to ISA V2.06B, the hypervisor should set DBCR0[EDM] to
> let the guest know that the debug resources are not available, and
> that "the value of MSR[DE] is not specified and not modifiable".
> >>> So what would the guest do then to tell the hypervisor that it
> actually wants to know about debug events?
> >>
> >> The guest is out of luck, just as if a JTAG were in use.
> >
> > Hrm.
> >
> > Can we somehow generalize this "out of luck" behavior?
> >
> > Every time we would set or clear an MSR bit in shadow_msr on
> e500v2, we would instead set or clear it in the real MSR. That way
> only e500mc is out of luck, but the code would still be shared.
I don't follow. e500v2 is just as out-of-luck. The mechanism simply
does not support sharing debug resources.
What do you mean by "the real MSR"? The real MSR is shadow_msr, and
MSR_DE must always be set there if the host is debugging the guest. As
for reflecting it into the guest MSR, we could, but I don't really see
the point. We're never going to actually send a debug exception to the
guest when the host owns the debug resources.
Speaking of naming issues, "guest_debug" is very ambiguous...
> diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
> index 38a62ef..9bdb845 100644
> --- a/arch/powerpc/kvm/booke.c
> +++ b/arch/powerpc/kvm/booke.c
> @@ -133,6 +133,29 @@ static void kvmppc_vcpu_sync_fpu(struct kvm_vcpu
> *vcpu)
> #endif
> }
>
> +static void kvmppc_vcpu_sync_debug(struct kvm_vcpu *vcpu)
> +{
> + u32 is_debug = vcpu->arch.shared->msr & MSR_DE;
> +
> + /* Force debug to on in guest space when user space wants to
> debug */
> + if (vcpu->guest_debug)
> + is_debug = MSR_DE;
> +
> +#ifdef CONFIG_KVM_BOOKE_HV
> + /*
> + * Since there is no shadow MSR, sync MSR_DE into the guest
> + * visible MSR.
> + */
> + vcpu->arch.shared->msr &= ~MSR_DE;
> + vcpu->arch.shared->msr |= is_debug;
> +#endif
> +
> +#ifndef CONFIG_KVM_BOOKE_HV
> + vcpu->arch.shadow_msr &= ~MSR_DE;
> + vcpu->arch.shadow_msr |= is_debug;
> +#endif
> +}
The "&= ~MSR_DE" line is pointless on bookehv, and makes it harder to
read. I had to stare at it a while before noticing that you initially
set is_debug from the guest MSR and that you'd never really clear
MSR_DE here on bookehv.
-Scott
next prev parent reply other threads:[~2013-01-31 22:40 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-16 8:24 [PATCH 2/8] KVM: PPC: booke: Allow multiple exception types Bharat Bhushan
2013-01-16 8:36 ` Bharat Bhushan
2013-01-16 8:24 ` [PATCH 3/8] KVM: PPC: booke: Added debug handler Bharat Bhushan
2013-01-16 8:36 ` Bharat Bhushan
2013-01-25 11:42 ` Alexander Graf
2013-01-25 11:42 ` Alexander Graf
2013-01-30 11:30 ` Bhushan Bharat-R65777
2013-01-31 12:17 ` Alexander Graf
2013-01-31 12:17 ` Alexander Graf
2013-01-31 16:58 ` Bhushan Bharat-R65777
2013-01-31 17:08 ` Alexander Graf
2013-01-31 17:08 ` Alexander Graf
2013-01-31 17:11 ` Alexander Graf
2013-01-31 17:11 ` Alexander Graf
2013-02-01 5:04 ` Bhushan Bharat-R65777
2013-02-01 5:04 ` Bhushan Bharat-R65777
2013-02-01 8:06 ` Alexander Graf
2013-02-01 8:06 ` Alexander Graf
2013-02-01 9:07 ` Bhushan Bharat-R65777
2013-02-01 9:07 ` Bhushan Bharat-R65777
2013-02-07 14:21 ` Alexander Graf
2013-02-07 14:21 ` Alexander Graf
2013-02-07 14:48 ` Bhushan Bharat-R65777
2013-02-07 14:48 ` Bhushan Bharat-R65777
2013-02-07 15:01 ` Alexander Graf
2013-02-07 15:01 ` Alexander Graf
2013-01-16 8:24 ` [PATCH 4/8] Added ONE_REG interface for debug instruction Bharat Bhushan
2013-01-16 8:36 ` Bharat Bhushan
2013-01-25 11:48 ` Alexander Graf
2013-01-25 11:48 ` Alexander Graf
2013-01-31 17:44 ` Bhushan Bharat-R65777
2013-01-31 17:52 ` Alexander Graf
2013-01-31 17:52 ` Alexander Graf
2013-01-31 17:58 ` Bhushan Bharat-R65777
2013-01-31 18:22 ` Alexander Graf
2013-01-31 18:22 ` Alexander Graf
2013-02-04 0:41 ` Paul Mackerras
2013-02-04 0:41 ` Paul Mackerras
2013-02-07 14:29 ` Alexander Graf
2013-02-07 14:29 ` Alexander Graf
2013-02-11 0:22 ` Paul Mackerras
2013-02-11 0:22 ` Paul Mackerras
2013-01-16 8:24 ` [PATCH 5/8] KVM: PPC: debug stub interface parameter defined Bharat Bhushan
2013-01-16 8:36 ` Bharat Bhushan
2013-01-17 7:22 ` Paul Mackerras
2013-01-17 7:22 ` Paul Mackerras
2013-01-17 11:11 ` Bhushan Bharat-R65777
2013-01-25 11:53 ` Alexander Graf
2013-01-25 11:53 ` Alexander Graf
2013-01-30 14:15 ` Bhushan Bharat-R65777
2013-01-31 13:01 ` Alexander Graf
2013-01-31 13:01 ` Alexander Graf
2013-01-31 14:05 ` Bhushan Bharat-R65777
2013-01-31 14:27 ` Alexander Graf
2013-01-31 14:27 ` Alexander Graf
2013-01-31 14:44 ` Bhushan Bharat-R65777
2013-01-16 8:24 ` [PATCH 6/8] booke: Added DBCR4 SPR number Bharat Bhushan
2013-01-16 8:36 ` Bharat Bhushan
2013-01-16 8:24 ` [PATCH 7/8] KVM: PPC: booke/bookehv: Add debug stub support Bharat Bhushan
2013-01-16 8:36 ` Bharat Bhushan
2013-01-25 12:07 ` Alexander Graf
2013-01-25 12:07 ` Alexander Graf
2013-02-01 6:31 ` Bhushan Bharat-R65777
2013-02-01 6:31 ` Bhushan Bharat-R65777
2013-02-01 8:21 ` Alexander Graf
2013-02-01 8:21 ` Alexander Graf
2013-01-16 8:24 ` [PATCH 8/8] KVM:PPC:booke: Allow debug interrupt injection to guest Bharat Bhushan
2013-01-16 8:36 ` Bharat Bhushan
2013-01-25 12:13 ` Alexander Graf
2013-01-25 12:13 ` Alexander Graf
2013-01-30 11:12 ` Bhushan Bharat-R65777
2013-01-30 11:12 ` Bhushan Bharat-R65777
2013-01-31 12:04 ` Alexander Graf
2013-01-31 12:04 ` Alexander Graf
2013-01-31 17:59 ` Bhushan Bharat-R65777
2013-01-31 18:21 ` Alexander Graf
2013-01-31 18:21 ` Alexander Graf
2013-01-31 18:43 ` Scott Wood
2013-01-31 18:43 ` Scott Wood
2013-01-31 18:52 ` Alexander Graf
2013-01-31 18:52 ` Alexander Graf
2013-01-31 18:54 ` Scott Wood
2013-01-31 18:54 ` Scott Wood
2013-01-31 19:05 ` Alexander Graf
2013-01-31 19:05 ` Alexander Graf
2013-01-31 19:20 ` Alexander Graf
2013-01-31 19:20 ` Alexander Graf
2013-01-31 22:40 ` Scott Wood [this message]
2013-01-31 22:40 ` Scott Wood
2013-02-01 0:11 ` Alexander Graf
2013-02-01 0:11 ` Alexander Graf
2013-02-01 22:38 ` Scott Wood
2013-02-01 22:38 ` Scott Wood
2013-02-04 4:48 ` Bhushan Bharat-R65777
2013-02-04 4:48 ` Bhushan Bharat-R65777
2013-02-04 19:47 ` Scott Wood
2013-02-04 19:47 ` Scott Wood
2013-02-07 14:58 ` Alexander Graf
2013-02-07 14:58 ` Alexander Graf
2013-02-07 15:25 ` Bhushan Bharat-R65777
2013-02-07 15:25 ` Bhushan Bharat-R65777
2013-02-07 15:53 ` Alexander Graf
2013-02-07 15:53 ` Alexander Graf
2013-02-07 15:00 ` Bhushan Bharat-R65777
2013-02-07 15:00 ` Bhushan Bharat-R65777
2013-02-07 15:08 ` Alexander Graf
2013-02-07 15:08 ` Alexander Graf
2013-01-31 18:03 ` Scott Wood
2013-01-31 18:03 ` Scott Wood
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=1359672019.31540.29@snotra \
--to=scottwood@freescale.com \
--cc=R65777@freescale.com \
--cc=agraf@suse.de \
--cc=kvm-ppc@vger.kernel.org \
--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.