RE: [PATCH v5 4/4] KVM: PPC: e500: Save/restore SPE state

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: Alexander Graf [mailto:agraf@xxxxxxx] 
> Sent: Thursday, March 31, 2011 4:43 PM
> To: Liu Yu-B13201
> Cc: Wood Scott-B07421; kvm-ppc@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH v5 4/4] KVM: PPC: e500: Save/restore SPE state
> 
> 
> On 31.03.2011, at 10:40, Liu Yu-B13201 wrote:
> 
> > 
> > 
> >> -----Original Message-----
> >> From: Alexander Graf [mailto:agraf@xxxxxxx] 
> >> Sent: Thursday, March 31, 2011 4:15 PM
> >> To: Liu Yu-B13201
> >> Cc: Wood Scott-B07421; kvm-ppc@xxxxxxxxxxxxxxx
> >> 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-owner@xxxxxxxxxxxxxxx 
> >>>> [mailto:kvm-ppc-owner@xxxxxxxxxxxxxxx] On Behalf Of 
> Alexander Graf
> >>>> Sent: Thursday, March 31, 2011 3:51 PM
> >>>> To: Liu Yu-B13201
> >>>> Cc: Wood Scott-B07421; kvm-ppc@xxxxxxxxxxxxxxx
> >>>> 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-owner@xxxxxxxxxxxxxxx 
> >>>>>> [mailto:kvm-ppc-owner@xxxxxxxxxxxxxxx] On Behalf Of Scott Wood
> >>>>>> Sent: Thursday, March 31, 2011 7:35 AM
> >>>>>> To: agraf@xxxxxxx
> >>>>>> Cc: kvm-ppc@xxxxxxxxxxxxxxx
> >>>>>> 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.liu@xxxxxxxxxxxxx>
> >>>>>> Signed-off-by: Scott Wood <scottwood@xxxxxxxxxxxxx>
> >>>>>> ---
> >>>>>> 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.
> 

It works on set MSR[SPE], but doesn't work on clear MSR[SPE].
Guest may also do lazy SPE, if guest clear MSR[SPE], 
but kvm don't know and still keep it.
Then guest app may get SPE state clobbered.

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


[Index of Archives]     [KVM Development]     [KVM ARM]     [KVM ia64]     [Linux Virtualization]     [Linux USB Devel]     [Linux Video]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux