On 31.03.2011, at 10:40, Liu Yu-B13201 wrote:

> 
> 
>> -----Original Message-----
>> From: Alexander Graf [mailto:ag...@suse.de] 
>> Sent: Thursday, March 31, 2011 4:15 PM
>> To: Liu Yu-B13201
>> Cc: Wood Scott-B07421; kvm-ppc@vger.kernel.org
>> Subject: Re: [PATCH v5 4/4] KVM: PPC: e500: Save/restore SPE state
>> 
>> 
>> On 31.03.2011, at 10:06, Liu Yu-B13201 wrote:
>> 
>>> 
>>> 
>>>> -----Original Message-----
>>>> From: kvm-ppc-ow...@vger.kernel.org 
>>>> [mailto:kvm-ppc-ow...@vger.kernel.org] On Behalf Of Alexander Graf
>>>> Sent: Thursday, March 31, 2011 3:51 PM
>>>> To: Liu Yu-B13201
>>>> Cc: Wood Scott-B07421; kvm-ppc@vger.kernel.org
>>>> Subject: Re: [PATCH v5 4/4] KVM: PPC: e500: Save/restore SPE state
>>>> 
>>>> 
>>>> On 31.03.2011, at 05:21, Liu Yu-B13201 wrote:
>>>> 
>>>>> 
>>>>> 
>>>>>> -----Original Message-----
>>>>>> From: kvm-ppc-ow...@vger.kernel.org 
>>>>>> [mailto:kvm-ppc-ow...@vger.kernel.org] On Behalf Of Scott Wood
>>>>>> Sent: Thursday, March 31, 2011 7:35 AM
>>>>>> To: ag...@suse.de
>>>>>> Cc: kvm-ppc@vger.kernel.org
>>>>>> Subject: [PATCH v5 4/4] KVM: PPC: e500: Save/restore SPE state
>>>>>> 
>>>>>> This is done lazily.  The SPE save will be done only if 
>>>> the guest has
>>>>>> used SPE since the last preemption or heavyweight exit.  
>>>>>> Restore will be
>>>>>> done only on demand, when enabling MSR_SPE in the shadow MSR, 
>>>>>> in response
>>>>>> to an SPE fault or mtmsr emulation.
>>>>>> 
>>>>>> For SPEFSCR, Linux already switches it on context switch 
>>>>>> (non-lazily), so
>>>>>> the only remaining bit is to save it between qemu and the guest.
>>>>>> 
>>>>>> Signed-off-by: Liu Yu <yu....@freescale.com>
>>>>>> Signed-off-by: Scott Wood <scottw...@freescale.com>
>>>>>> ---
>>>>>> v5: disable preemption when restoring SPE state
>>>>>> 
>>>>>> Saving SPE state is only done from a preempt notifier or 
>>>> vcpu_put(),
>>>>>> where preemption is already disabled.
>>>>>> 
>>>>>> The other patches in this series are the same as v4.
>>>>>> 
>>>>>> arch/powerpc/include/asm/kvm_host.h  |    6 +++
>>>>>> arch/powerpc/include/asm/reg_booke.h |    1 +
>>>>>> arch/powerpc/kernel/asm-offsets.c    |    6 +++
>>>>>> arch/powerpc/kvm/booke.c             |   72 
>>>>>> +++++++++++++++++++++++++++++++++-
>>>>>> arch/powerpc/kvm/booke.h             |   18 ++-------
>>>>>> arch/powerpc/kvm/booke_interrupts.S  |   40 +++++++++++++++++++
>>>>>> arch/powerpc/kvm/e500.c              |   19 ++++++++-
>>>>>> 7 files changed, 145 insertions(+), 17 deletions(-)
>>>>>> 
>>>>> 
>>>>> I think the patch miss the bit to handle the case that
>>>>> if guest clear the MSR_SPE.
>>>> 
>>>> Right. On set_msr the shadow_msr should get MSR_SPE removed. 
>>>> Thanks for the catch!
>>>> 
>>> 
>>> BTW,
>>> looks like guest trap on MSR[SPE] in para virt mode for now, is it?
>>> If we don't want to trap on that, then shadow_msr doesn't work here.
>>> That's the intend to use msr_block..
>> 
>> I see. I still like it better when we explicitly set the MSR 
>> value that's used while running the guest. Makes it harder 
>> for things to slip through. Also, so far paravirt is disabled 
>> for BookE.
> 
> We already use paravirt in internal tree.
> 
>> 
>> So what happens is that since MSR_SPE is disabled, we get a 
>> BOOKE_INTERRUPT_SPE_UNAVAIL. At that point, we need to check 
>> if it's enabled inside the guest already or if we merely need 
>> to activate the flag. That's what the patch does. We'd have 
>> to do the exact same when using msr_block, no? The only 
>> difference is that we'd set msr_block instead of shadow_msr 
>> when we are actually able to use the SPE inside the guest.
>> 
> 
> Hmm. I think you're right.
> I thought that in paravirt mode, if we don't trap on MSR[SPE],
> the shadow_msr cannot get notified timely (we don't have chance to call 
> kvmppc_set_msr()).
> But looks like msr_block has the same issue.
> So that MSR[SPE] should always be traped.

It doesn't have to be trapped - we can enable it lazily on SPE_UNAVAIL :). Of 
course we should also explicitly enable it on set_msr.


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to