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: 59+ 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:24 ` [PATCH 3/8] KVM: PPC: booke: Added debug handler Bharat Bhushan
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 16:58 ` Bhushan Bharat-R65777
2013-01-31 17:08 ` Alexander Graf
2013-01-31 17:11 ` Alexander Graf
2013-02-01 5:04 ` Bhushan Bharat-R65777
2013-02-01 8:06 ` Alexander Graf
2013-02-01 9:07 ` Bhushan Bharat-R65777
2013-02-07 14:21 ` Alexander Graf
2013-02-07 14:48 ` Bhushan Bharat-R65777
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-25 11:48 ` Alexander Graf
2013-01-31 17:44 ` Bhushan Bharat-R65777
2013-01-31 17:52 ` Alexander Graf
2013-01-31 17:58 ` Bhushan Bharat-R65777
2013-01-31 18:22 ` Alexander Graf
2013-02-04 0:41 ` Paul Mackerras
2013-02-07 14:29 ` Alexander Graf
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-17 7:22 ` Paul Mackerras
2013-01-17 11:11 ` Bhushan Bharat-R65777
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 14:05 ` Bhushan Bharat-R65777
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:24 ` [PATCH 7/8] KVM: PPC: booke/bookehv: Add debug stub support Bharat Bhushan
2013-01-25 12:07 ` Alexander Graf
2013-02-01 6:31 ` Bhushan Bharat-R65777
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-25 12:13 ` Alexander Graf
2013-01-30 11:12 ` Bhushan Bharat-R65777
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:43 ` Scott Wood
2013-01-31 18:52 ` Alexander Graf
2013-01-31 18:54 ` Scott Wood
2013-01-31 19:05 ` Alexander Graf
2013-01-31 19:20 ` Alexander Graf
2013-01-31 22:40 ` Scott Wood [this message]
2013-02-01 0:11 ` Alexander Graf
2013-02-01 22:38 ` Scott Wood
2013-02-04 4:48 ` Bhushan Bharat-R65777
2013-02-04 19:47 ` Scott Wood
2013-02-07 14:58 ` Alexander Graf
2013-02-07 15:25 ` Bhushan Bharat-R65777
2013-02-07 15:53 ` Alexander Graf
2013-02-07 15:00 ` Bhushan Bharat-R65777
2013-02-07 15:08 ` Alexander Graf
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox